7

これが SO で既に回答されているかどうかはわかりませんが、問題の解決策が見つかりませんでした。

Google Container Engine の docker コンテナで IPython ノートブックを実行しています。コンテナはこのイメージjupyter/all-spark-notebookに基づいています

Google Cloud Dataprocで作成された Spark クラスターもあります

Spark マスターとノートブックは、異なる VMで実行されていますが、同じリージョンとゾーンで実行されています。

私の問題は、IPython ノートブックからスパーク マスターに接続しようとしていますが、成功していないことです。Pythonノートブックでこのコードスニペットを使用します

import pyspark
conf = pyspark.SparkConf()
conf.setMaster("spark://<spark-master-ip or spark-master-hostname>:7077")

私はスパークを使い始めたばかりなので、何か(認証、セキュリティ...)が欠けていると確信しています。

そこで見つけたのは、 SSH トンネルを介してローカル ブラウザを接続していることです。

誰かがすでにこの種のセットアップを行っていますか?

前もって感謝します

4

1 に答える 1

8

Dataproc はYARNで Spark を実行するため、master を「yarn-client」に設定する必要があります。また、Spark を YARN ResourceManager に向ける必要があります。これには、文書化されていない SparkConf -> Hadoop 構成の変換が必要です。YARN のリソースをステージングできるように、クラスター上の HDFS について Spark に伝える必要もあります。Google Cloud Storage Connector for Hadoopをイメージに焼き付けた場合は、HDFS の代わりに Google Cloud Storage を使用できます。

試す:

import pyspark
conf = pyspark.SparkConf()
conf.setMaster('yarn-client')
conf.setAppName('My Jupyter Notebook')

# 'spark.hadoop.foo.bar' sets key 'foo.bar' in the Hadoop Configuaration.
conf.set('spark.hadoop.yarn.resourcemanager.address', '<spark-master-hostname>')
conf.set('spark.hadoop.fs.default.name', 'hdfs://<spark-master-hostname>/')

sc = pyspark.SparkContext(conf=conf)

より永続的な構成については、こちらで説明されているようにこれらをローカル ファイル 'core-site.xml' に焼き付け、それをローカル ディレクトリに配置し、HADOOP_CONF_DIR を環境内のそのディレクトリに設定します。

同じゾーンにいることはパフォーマンスにとって重要ですが、同じネットワークにあり、そのネットワーク内の内部 IP アドレス間の TCP を許可して、VM が通信できるようにすることにも注意してください。defaultネットワークを使用している場合は、default-allow-internal ファイアウォール ルールで十分です。

それが役立つことを願っています。

于 2016-02-25T22:44:53.217 に答える