将 IPython notebook 连接到在不同机器上运行的 spark master

Posted

技术标签:

【中文标题】将 IPython notebook 连接到在不同机器上运行的 spark master【英文标题】:Connecting IPython notebook to spark master running in different machines 【发布时间】:2016-06-07 22:08:06 【问题描述】:

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

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

我还有一个用google cloud dataproc创建的火花集群

Spark master 和 notebook 在不同的虚拟机中运行,但在相同的区域和区域

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

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

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

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

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

提前谢谢你

【问题讨论】:

Google Dataproc 已经为您安装了 Spark,因此您无需使用 Jupyter Docker 映像。 Google Dataproc 甚至有设置文档,请参阅cloud.google.com/dataproc/tutorials/jupyter-notebook。当前的初始化脚本有一些缺点,但正在处理中:github.com/GoogleCloudPlatform/dataproc-initialization-actions/… 我已经看过了,但这不是我想要的。我有一个已经部署的笔记本,里面有额外的东西(熊猫、matplotlib、scipy、seaborn、scikit-learn ....)。另一方面,我有 Google Dataproc spark 集群。我正在寻找的是利用 IPython notebook 中的 spark 集群 【参考方案1】:

Dataproc 运行 Spark on YARN,因此您需要将 master 设置为 'yarn-client'。您还需要将 Spark 指向您的 YARN ResourceManager,这需要文档不足的 SparkConf -> Hadoop 配置转换。您还必须告诉 Spark 集群上的 HDFS,以便它可以为 YARN 暂存资源。如果您将The Google Cloud Storage Connector for Hadoop 烘焙到映像中,则可以使用 Google Cloud Storage 代替 HDFS。

试试:

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”中,如 here 所述,将其放在本地目录中,并将 HADOOP_CONF_DIR 设置为您环境中的该目录。

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

希望对您有所帮助。

【讨论】:

以上是关于将 IPython notebook 连接到在不同机器上运行的 spark master的主要内容,如果未能解决你的问题,请参考以下文章

使用 py4j 在 java/python 项目中将 Log4j 连接到 ipython notebook stderr

当emacs尝试连接到ipython / jupyter服务器时,ein失败

可以在不使用内联绘图的情况下远程访问 IPython Notebook 吗?

如何在 IPython Notebook 中正确渲染数学表

如何将 Spark-Notebook 连接到 Hive 元存储?

Pyspark 连接到 ipython 笔记本中的 Postgres 数据库