web-dev-qa-db-ja.com

企業プロキシの背後にある場合、spark-Shellを使用して外部パッケージを解決するにはどうすればよいですか?

企業プロキシの背後にある外部パッケージを使用してspark-Shellを実行したいと思います。残念ながら、外部パッケージは--packagesオプションは解決されません。

例:実行中

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

cassandraコネクタパッケージは解決されていません(最後の行でスタックしています):

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]

しばらくすると、次のようなエラーメッセージを含む接続がタイムアウトします。

:::: 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)

コーポレートプロキシでVPNを非アクティブ化すると、パッケージは解決され、すぐにダウンロードされます。

私がこれまでに試したこと:

プロキシを環境変数として公開する:

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>"

追加のJavaオプションでSpark-Shellを実行する:

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

私が見逃している他の構成の可能性はありますか?

12
mtsz

正しい設定が見つかりました:

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

追加のドライバーオプションとして、httpプロキシとhttpsプロキシの両方を設定する必要があります。 Java_OPTSは何もしないようです。

19
mtsz

これはspark 1.6.1で私のために働きました:

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

OSでプロキシが正しく設定されている場合は、Javaプロパティ:Java.net.useSystemProxies

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

そのため、プロキシホスト/ポートと非プロキシホストが構成されます。

2
Thomas Decaux

プロキシを使用するために認証が必要な場合は、デフォルトのconfファイルで以下を使用できます。

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

私がこれを見つけるまでpysparkと格闘していました:

@Tao Huangの答えに追加:

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]

つまり---- http(s).proxyUserの代わりにproxyUser

1
chaooder

追加

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

$SPARK_HOME/conf/spark-defaults.confは私のために働きます。

1
Avatar Zhang

Spark-2.0.0-bin-hadoop2.7がインストールされたWindows 7では、spark.driver.extraJavaOptions in %SPARK_HOME%"\spark-2.0.0-bin-hadoop2.7\conf\spark-defaults.conf お気に入り:

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