将 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 吗?