Apache spark 将IPython笔记本连接到在不同机器上运行的spark master

Apache spark 将IPython笔记本连接到在不同机器上运行的spark master,apache-spark,ipython,kubernetes,google-kubernetes-engine,google-cloud-dataproc,Apache Spark,Ipython,Kubernetes,Google Kubernetes Engine,Google Cloud Dataproc,我不知道这是否已经在SO中得到了回答,但我无法找到解决问题的方法 我有一个IPython笔记本在Google容器引擎的docker容器中运行,该容器基于此图像 我还创建了一个使用 Spark master和笔记本电脑在不同的虚拟机中运行,但在相同的区域中运行 我的问题是,我试图从IPython笔记本连接到spark master,但没有成功。我在python笔记本中使用了这段代码 import pyspark conf = pyspark.SparkConf() conf.setMaster("

我不知道这是否已经在SO中得到了回答,但我无法找到解决问题的方法

我有一个IPython笔记本在Google容器引擎的docker容器中运行,该容器基于此图像

我还创建了一个使用

Spark master和笔记本电脑在不同的虚拟机中运行,但在相同的区域中运行

我的问题是,我试图从IPython笔记本连接到spark master,但没有成功。我在python笔记本中使用了这段代码

import pyspark
conf = pyspark.SparkConf()
conf.setMaster("spark://<spark-master-ip or spark-master-hostname>:7077")
导入pyspark
conf=pyspark.SparkConf()
conf.setMaster(“spark://:7077”)
我刚开始与spark合作,所以我确信我遗漏了一些东西(身份验证、安全性…)

我在那里发现的是通过网络连接本地浏览器

有人已经做过这种安排了

提前感谢您

Dataproc运行,因此您需要将master设置为“纱线客户端”。您还需要将Spark指向您的Thread ResourceManager,这需要一个文档不足的SparkConf->Hadoop配置转换。您还必须告诉Spark集群上的HDF,这样它就可以为纱线准备资源。你可以使用谷歌云存储,而不是HDFS,如果你烘焙到你的图像

尝试:

导入pyspark
conf=pyspark.SparkConf()
conf.setMaster(“纱线-客户机”)
conf.setAppName('我的Jupyter笔记本')
#'spark.hadoop.foo.bar'在hadoop配置中设置键'foo.bar'。
conf.set('spark.hadoop.warn.resourcemanager.address','')
conf.set('spark.hadoop.fs.default.name','hdfs://')
sc=pyspark.SparkContext(conf=conf)
对于更持久的配置,您可以将它们烘焙到本地文件“core site.xml”中,如所述,将其放置在本地目录中,并将HADOOP_CONF_DIR设置为环境中的该目录

还值得注意的是,虽然处于同一区域对性能很重要,但处于同一区域并允许该网络中内部IP地址之间的TCP允许虚拟机通信。如果您使用的是
default
网络,那么
default allow internal
就足够了


希望有帮助。

Google Dataproc已经为您安装了Spark,因此您不需要使用Jupyter Docker映像。GoogleDataProc甚至有用于设置的文档,请参阅。当前的初始化脚本有一些缺点,但正在改进中:我已经看到了这一点,但它不是我想要的。我有一个已经部署的笔记本,它有额外的东西(熊猫、matplotlib、scipy、seaborn、scikit learn……)。另一方面,我有Google Dataproc spark集群。我想要的是利用IPython笔记本上的spark群集
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)