2021-08-17 connect your Jupyter Notebook to a Spark server through Livy

1. 基本框架


https://towardsdatascience.com/how-to-connect-jupyter-notebook-to-remote-spark-clusters-and-run-spark-jobs-every-day-2c5a0c1b61df

2. 实现步骤(附上我遇到的坑)

- Client 端安装jupyter notebook

安装:如果安装了Anaconda, 安装jupyter notebook很简单,因为自带这个包。如果没有的话就使用pip install 安装。最后还有设置登录密码,可自行搜索,不再赘述。

启动: pip show jupyter 有的话,就可以启动使用该命令:jupyter notebook --allow-root,然后浏览器输入IP:8888访问,如果可以正常访问,说明jupyter notebook没有大问题,但是我觉得这里还有两个问题要解决:1. 如果误把terminal关了,jupyter notebook就没有服务了;2. 上面这个启动命令如果意外停止,那用户的notebook是否被保存?(同时这个过程中,不知道为啥非得打开服务器防火墙才能访问,但打开防火墙后另外一个服务启动不起来)

带着这些疑问,搜索到了jupyter notebook后台启动的方法。

nohup jupyter notebook --allow-root > jupyter.log 2>&1 &

用后台启动后,防火墙的问题不再存在,同时默认看到python文件的存储位置跟jupyter notebook启动位置有关。

- Client 安装sparkmagic & Spark cluster 安装Livy

a. Livy 安装在master 节点上(刚开始搞不懂,还在client装了一个livy)

b. Client Sparkmagic 安装及配置

主要时根据Microsoft的文档:sparkmagic安装及配置,这个文档实用性很好

Huawei 基于Jupyter Notebook 搭建Spark集群开发环境,这边文章并不实用,可作为参考

b1. 安装:pip install sparkmagic

b2. Kernel 安装

b3. config.json

进入python 环境,使用以下命令生成.sparkmagic目录

import os

path = os.path.expanduser('~') + "\\.sparkmagic"os.makedirs(path)

print(path)

exit()

./sparkmagic/conf.json配置

由于没有很理解上面Microsoft提供的方案,又找到了AWS写的说明文档,很有用

3. 配置都完成后

打开jupyter看到几个常见的编译器,不过一打开某一个编译器就报错。报错如下:

搜了下中文和英文资料,应该是nbconvert版本太低需要升级,解决方法如下:
https://stackoverflow.com/questions/36851746/jupyter-notebook-500-internal-server-error

升级完成后,又造成jupyter 起不来,最后又重装的Anaconda.

再次重装配置完成后,打开一个pyspark notebook,运行时有如下报错:

Jupyter Notebook error while using PySpark Kernel: the code failed because of a fatal error: Error sending http request

这个链接下两个回答都适用我,很有用,解决了我的问题(表白stackoverflow). 同时也越来越觉得遇到报错,按报错搜索这条路线很好用。

1. 这个AWS分享的连接最终的助力成功,主要包括以下几点:

a. 配置sparkmagic/conf.json文件

b. 测试是否成功

curl <EMR Master Private IP>:8998/sessions

如果出现下面的结果有戏:

测试连接:

%%info

看下是否出现如下结果:

Congratulations! You now have a Sparkmagic kernel running in your Jupyter notebook, talking to your EMR Spark cluster by using Livy.

Ref:

1. Microsoft: https://docs.microsoft.com/en-us/azure/hdinsight/spark/apache-spark-jupyter-notebook-install-locally(中文版)

2. AWS: https://aws.amazon.com/blogs/machine-learning/build-amazon-sagemaker-notebooks-backed-by-spark-in-amazon-emr/

3. Anaconda: https://enterprise-docs.anaconda.com/en/latest/admin/advanced/config-livy-server.html#cluster-access

4. Huawei: https://bbs.huaweicloud.com/blogs/289312

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容