1. 基本框架
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,运行时有如下报错:
这个链接下两个回答都适用我,很有用,解决了我的问题(表白stackoverflow). 同时也越来越觉得遇到报错,按报错搜索这条路线很好用。
1. 这个AWS分享的连接最终的助力成功,主要包括以下几点:
a. 配置sparkmagic/conf.json文件
b. 测试是否成功
curl <EMR Master Private IP>:8998/sessions
如果出现下面的结果有戏:
测试连接:
%%info
看下是否出现如下结果:
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