2016-07-22 44 views
4

Ich versuche, eine Verbindung zum Standalone Apache Spark-Cluster über eine dockerisierte Apache Spark-Anwendung im Client-Modus herzustellen.Probleme mit der Apache Spark-Anwendung, die im Client-Modus vom Docker-Container aus ausgeführt wird

Fahrer gibt dem Spark-Master und den Arbeitern seine Adresse. Wenn es in einem Andock-Container ausgeführt wird, verwendet es some_docker_container_ip. Die Andock-Adresse ist von außen nicht sichtbar, so dass eine Anwendung nicht funktioniert.

Spark hat spark.driver.host Eigenschaft. Diese Eigenschaft wird an Master und Workers übergeben. Mein erster Instinkt bestand darin, die Adresse der Host-Maschine dort zu übergeben, damit der Cluster stattdessen die sichtbare Maschine ansprach.

Leider wird die spark.driver.host auch verwendet, um einen Server von Treiber einzurichten. Das Übergeben einer Host-Computeradresse führt zu Fehlern beim Serverstart, da ein Andock-Container keine Ports unter dem Host-Rechner-Host binden kann.

Es scheint wie eine Verlierer-verlieren-Situation. Ich kann weder die Adresse der Host-Maschine noch die Adresse des Andock-Containers verwenden.

Idealerweise hätte ich gerne zwei Eigenschaften. Die spark.driver.host-to-bind-to verwendet, um den Treiberserver einzurichten und die spark.driver.host-for-master, die von Master und Workers verwendet werden würde. Leider scheint es, als ob ich nur mit einer Eigenschaft festhalte.

Ein anderer Ansatz wäre die Verwendung von --net=host beim Ausführen eines Andock-Containers. Dieser Ansatz hat viele Nachteile (z. B. können andere Andock-Container nicht mit einem Container mit der --net=host verbunden werden und müssen außerhalb des Andock-Netzwerks verfügbar gemacht werden), und ich möchte es vermeiden.

Gibt es eine Möglichkeit, das Problem der Treiberadressierung zu lösen, ohne die Docker-Container freizulegen?

+0

Verwandte Ausgabe von Spark-Jira sein - https://issues.apache.org/jira/browse/SPARK-4563 Es ist möglicherweise nicht möglich, mein Problem mit Spark zur Zeit zu lösen. – Ajk

Antwort