it-swarm.com.de

Wie löse ich externe Pakete mit spark-Shell auf, wenn ich mich hinter einem Firmen-Proxy befinde?

Ich möchte spark-Shell mit einem externen Paket hinter einem Unternehmens-Proxy ausführen. Leider werden externe Pakete, die über die Option --packages übergeben wurden, nicht aufgelöst.

Zum Beispiel beim Laufen

bin/spark-Shell --packages datastax:spark-cassandra-connector:1.5.0-s_2.10

das Cassandra-Connector-Paket ist nicht aufgelöst (steckt in der letzten Zeile fest):

Ivy Default Cache set to: /root/.ivy2/cache
The jars for the packages stored in: /root/.ivy2/jars
:: loading settings :: url = jar:file:/opt/spark/lib/spark-Assembly-1.6.1-hadoop2.6.0.jar!/org/Apache/ivy/core/settings/ivysettings.xml
datastax#spark-cassandra-connector added as a dependency
:: resolving dependencies :: org.Apache.spark#spark-submit-parent;1.0
        confs: [default]

Nach einiger Zeit tritt eine Zeitüberschreitung der Verbindung auf, die folgende Fehlermeldungen enthält:

:::: ERRORS
        Server access error at url https://repo1.maven.org/maven2/datastax/spark-cassandra-connector/1.5.0-s_2.10/spark-cassandra-connector-1.5.0-s_2.10.pom (Java.net.ConnectException: Connection timed out)

Wenn ich das VPN mit dem Unternehmensproxy deaktiviere, wird das Paket sofort aufgelöst und heruntergeladen.

Was ich bisher versucht habe:

Proxys als Umgebungsvariablen verfügbar machen:

export http_proxy=<proxyHost>:<proxyPort>
export https_proxy=<proxyHost>:<proxyPort>
export Java_OPTS="-Dhttp.proxyHost=<proxyHost> -Dhttp.proxyPort=<proxyPort>"
export ANT_OPTS="-Dhttp.proxyHost=<proxyHost> -Dhttp.proxyPort=<proxyPort>"

Spark-Shell mit zusätzlichen Java-Optionen ausführen:

bin/spark-Shell --conf "spark.driver.extraJavaOptions=-Dhttp.proxyHost=<proxyHost> -Dhttp.proxyPort=<proxyPort>" --conf "spark.executor.extraJavaOptions=-Dhttp.proxyHost=<proxyHost> -Dhttp.proxyPort=<proxyPort>" --packages datastax:spark-cassandra-connector:1.6.0-M1-s_2.10

Gibt es eine andere Konfigurationsmöglichkeit, die ich vermisse?

8
mtsz

Die richtigen Einstellungen gefunden:

bin/spark-Shell --conf "spark.driver.extraJavaOptions=-Dhttp.proxyHost=<proxyHost> -Dhttp.proxyPort=<proxyPort> -Dhttps.proxyHost=<proxyHost> -Dhttps.proxyPort=<proxyPort>" --packages <somePackage>

Sowohl http- als auch https-Proxys müssen als zusätzliche Treiberoptionen festgelegt werden. Java_OPTS scheint nichts zu tun.

17
mtsz

Das hat bei mir in spark 1.6.1 geklappt:

bin\spark-Shell --driver-Java-options "-Dhttp.proxyHost=<proxyHost> -Dhttp.proxyPort=<proxyPort> -Dhttps.proxyHost=<proxyHost> -Dhttps.proxyPort=<proxyPort>" --packages <package>
4
Ian Jones

Hatte mit Pyspark zu kämpfen, bis ich Folgendes fand:

Hinzufügen zu @ Tao Huangs Antwort:

bin/pyspark --driver-Java-options="-Dhttp.proxyUser=user -Dhttp.proxyPassword=password -Dhttps.proxyUser=user -Dhttps.proxyPassword=password -Dhttp.proxyHost=proxy -Dhttp.proxyPort=port -Dhttps.proxyHost=proxy -Dhttps.proxyPort=port" --packages [groupId:artifactId]

Das heißt sollte -Dhttp (s) .proxyUser anstelle von ...proxyUsername sein

1
chaooder

Hinzufügen

spark.driver.extraJavaOptions=-Dhttp.proxyHost=<proxyHost> -Dhttp.proxyPort=<proxyPort> -Dhttps.proxyHost=<proxyHost> -Dhttps.proxyPort=<proxyPort>

zu $SPARK_HOME/conf/spark-defaults.conf funktioniert bei mir.

1
Avatar Zhang

Wenn Sie für die Verwendung des Proxys eine Authentifizierung benötigen, können Sie in der Standardkonf-Datei Folgendes verwenden:

spark.driver.extraJavaOptions  -Dhttp.proxyHost= -Dhttp.proxyPort= -Dhttps.proxyHost= -Dhttps.proxyPort= -Dhttp.proxyUsername= -Dhttp.proxyPassword= -Dhttps.proxyUsername= -Dhttps.proxyPassword= 
0
Tao Huang

Unter Windows 7 mit spark-2.0.0-bin-hadoop2.7 setze ich den spark.driver.extraJavaOptions in %SPARK_HOME%"\spark-2.0.0-bin-hadoop2.7\conf\spark-defaults.conf wie folgt:

spark.driver.extraJavaOptions -Dhttp.proxyHost=hostname -Dhttp.proxyPort=port -Dhttps.proxyHost=Host -Dhttps.proxyPort=port
0
Grady G Cooper

Wenn der Proxy in Ihrem Betriebssystem richtig konfiguriert ist, können Sie die Java-Eigenschaft verwenden: Java.net.useSystemProxies:

--conf "spark.driver.extraJavaOptions=-Djava.net.useSystemProxies=true"

daher werden Proxy-Host/Port- und Nicht-Proxy-Hosts konfiguriert.

0
Thomas Decaux