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

时间:2016-02-25 08:35:08

标签: apache-spark ipython kubernetes google-kubernetes-engine google-cloud-dataproc

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

我在Google容器引擎的Docker容器中运行了一个IPython笔记本,容器基于此图像jupyter/all-spark-notebook

我还有一个使用google cloud dataproc

创建的火花群集

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

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

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

我刚开始使用spark,所以我确定我遗漏了一些东西(身份验证,安全......),

我在那里找到的是通过SSH tunnel

连接本地浏览器

有人已经做过这种设置吗?

提前谢谢

1 个答案:

答案 0 :(得分:6)

Dataproc运行Spark on YARN,因此您需要将master设置为'yarn-client'。您还需要在您的YARN ResourceManager中指向Spark,这需要一个记录不足的SparkConf - &gt; Hadoop配置转换。您还必须告诉Spark关于群集上的HDFS,因此它可以为YARN分配资源。如果您将The Google Cloud Storage Connector for Hadoop放入图片中,则可以使用Google云端存储而非HDFS。

尝试:

default-allow-internal

对于更永久的配置,您可以将它们烘焙到本地文件'core-site.xml'中,如here所述,将其放在本地目录中,并将HADOOP_CONF_DIR设置为您环境中的该目录。 / p>

同样值得注意的是,虽然位于同一区域对性能很重要,但它处于相同的Network并且允许TCP在该网络中允许VM进行通信的内部IP地址之间。如果您使用的是[Display(Name = "Maths grade")] [Range(1, 5, ErrorMessage = "Every grade must be between 1 and 5")] public int[] Maths { get; set; } 网络,那么{{1}} firewall rule就足够了。

希望有所帮助。