温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github:
https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1.文档编写目的
Fayson在前面的文章《如何在非安全的CDH集群中部署Jupyter并集成Spark2》中介绍了在非Kerberos的环境中部署Jupyter Notebook并集成Spark2,Jupyter Notebook与Spark2的集成时必须确保该部署节点为Spark2的Gateway节点,如果对于Window用户来说客户端部署Spark2的Gateway相对比较麻烦。在前面的文章Fayson也介绍了关于Livy的文章,Livy服务提供的一个交互式API接口来实现提交Spark作业到集群,那本篇文章Fayson主要介绍Jupyter Notebook与Livy服务的集成,以简化Jupyter Notebook用户提交Spark作业到集群。
Jupyter Notebook与Livy集成的架构图如下:
- 内容概述
1.环境准备
2.Jupyter与Livy集成
3.功能验证
- 测试环境说明
1.CM和CDH版本为5.15.0
2.集群未启用Kerberos
3.RedHat7.2
4.Jupyter Notebook为1.0.0
2.环境准备
关于Livy服务的部署在这里就不在介绍了,可以参考Fayson前面的文章《如何编译Livy并在非Kerberos环境的CDH集群中安装》和《如何在CM中使用Parcel包部署Livy及验证》有源码编译的方式部署也有基于Parcel包的方式通过CM部署供大家选择。
Jupyter Notebook与Livy的集成这里需要安装Python的一个依赖包sparkmagic。
1.在Python环境中安装sparkmagic包
[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/pip install sparkmagic
(可左右滑动)
2.执行如下命令验证ipywidgets安装成功
[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/jupyter nbextension enable --py --sys-prefix widgetsnbextension
(可左右滑动)
3.使用pip show sparkmagic命令查看包的安装路径,在安装路径下执行命令安装Spark Kernel
[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/pip show sparkmagic
(可左右滑动)
cd /data/disk1/cloudera/anaconda3/lib/python3.6/site-packages
/opt/cloudera/anaconda3/bin/jupyter-kernelspec install sparkmagic/kernels/sparkkernel
/opt/cloudera/anaconda3/bin/jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
/opt/cloudera/anaconda3/bin/jupyter-kernelspec install sparkmagic/kernels/pyspark3kernel
/opt/cloudera/anaconda3/bin/jupyter-kernelspec install sparkmagic/kernels/sparkrkernel
(可左右滑动)
4.使用命令查看Kernel是否安装成功
[root@cdh04 site-packages]# /opt/cloudera/anaconda3/bin/jupyter kernelspec list
(可左右滑动)
5.为jupyter服务启用sparkmagic扩展
[root@cdh04 site-packages]# /opt/cloudera/anaconda3/bin/jupyter serverextension enable --py sparkmagic
(可左右滑动)
6.安装Python的pandas库指定版本为0.22.0
3.Jupyter与Livy集成
1.在当前用户的home目录下的.sparkmagic目录下创建一个config.json文件,内容如下:
{
"kernel_python_credentials" : {
"username": "",
"password": "",
"url": "http://cdh03.fayson.com:8998",
"auth": "None"
},
"kernel_scala_credentials" : {
"username": "",
"password": "",
"url": "http://cdh03.fayson.com:8998",
"auth": "None"
},
"kernel_r_credentials": {
"username": "",
"password": "",
"url": "http://cdh03.fayson.com:8998"
},
"logging_config": {
"version": 1,
"formatters": {
"magicsFormatter": {
"format": "%(asctime)s\t%(levelname)s\t%(message)s",
"datefmt": ""
}
},
"handlers": {
"magicsHandler": {
"class": "hdijupyterutils.filehandler.MagicsFileHandler",
"formatter": "magicsFormatter",
"home_path": "~/.sparkmagic"
}
},
"loggers": {
"magicsLogger": {
"handlers": ["magicsHandler"],
"level": "DEBUG",
"propagate": 0
}
}
},
"wait_for_idle_timeout_seconds": 15,
"livy_session_startup_timeout_seconds": 60,
"fatal_error_suggestion": "The code failed because of a fatal error:\n\t{}.\n\nSome things to try:\na) Make sure Spark has enough
available resources for Jupyter to create a Spark context.\nb) Contact your Jupyter administrator to make sure the Spark magics li
brary is configured correctly.\nc) Restart the kernel.",
"ignore_ssl_errors": false,
"session_configs": {
"driverMemory": "1000M",
"executorCores": 2
},
"use_auto_viz": true,
"coerce_dataframe": true,
"max_results_sql": 2500,
"pyspark_dataframe_encoding": "utf-8",
"heartbeat_refresh_seconds": 30,
"livy_server_heartbeat_timeout_seconds": 0,
"heartbeat_retry_seconds": 10,
"server_extension_default_kernel_name": "pysparkkernel",
"custom_headers": {},
"retry_policy": "configurable",
"retry_seconds_to_sleep_list": [0.2, 0.5, 1, 3, 5],
"configurable_retry_policy_max_retries": 8
}
(可左右滑动)
2.重启jupyter服务
[root@cdh04 .sparkmagic]# /opt/cloudera/anaconda3/bin/jupyter-notebook --allow-root
(可左右滑动)
4.Jupyter验证
1.在浏览器输入Jupyter Notebook访问地址
2.登录成功后使用我们新安装的Spark Kernel启动一个会话
3.在代码列表输入示例代码运行
4.查看Yarn的8080界面
5.查看Livy的管理界面
5.总结
1.Jupyter Notebook与Livy集成需要依赖Python的sparkmagic库,集成相对比较简单只需要在Python中安装sparkmagic并配置livy的访问环境即可。
2.在使用pyspark时如果要切换启动Spark的版本,则需要在Livy的配置页面修改livy启动会话的Spark版本
3.部署Livy服务的节点必须部署Spark和Spark2的Gateway
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操