温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​https:///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集成的架构图如下:

Jupyter Notebook与Livy集成_spark


  • 内容概述

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

(可左右滑动)


Jupyter Notebook与Livy集成_cloudera_02


2.执行如下命令验证ipywidgets安装成功


[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/jupyter nbextension enable --py --sys-prefix widgetsnbextension

(可左右滑动)


Jupyter Notebook与Livy集成_cloudera_03


3.使用pip show sparkmagic命令查看包的安装路径,在安装路径下执行命令安装Spark Kernel


[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/pip show sparkmagic

(可左右滑动)


Jupyter Notebook与Livy集成_python_04


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

(可左右滑动)


Jupyter Notebook与Livy集成_spark_05


4.使用命令查看Kernel是否安装成功


[root@cdh04 site-packages]# /opt/cloudera/anaconda3/bin/jupyter kernelspec list

(可左右滑动)


Jupyter Notebook与Livy集成_python_06


5.为jupyter服务启用sparkmagic扩展


[root@cdh04 site-packages]# /opt/cloudera/anaconda3/bin/jupyter serverextension enable --py sparkmagic

(可左右滑动)


Jupyter Notebook与Livy集成_python_07


6.安装Python的pandas库指定版本为0.22.0


Jupyter Notebook与Livy集成_spark_08


3.Jupyter与Livy集成



1.在当前用户的home目录下的.sparkmagic目录下创建一个config.json文件,内容如下:


{
"kernel_python_credentials" : {
"username": "",
"password": "",
"url": "http://:8998",
"auth": "None"
},

"kernel_scala_credentials" : {
"username": "",
"password": "",
"url": "http://:8998",
"auth": "None"
},
"kernel_r_credentials": {
"username": "",
"password": "",
"url": "http://: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
}

(可左右滑动)


Jupyter Notebook与Livy集成_cloudera_09


2.重启jupyter服务


[root@cdh04 .sparkmagic]# /opt/cloudera/anaconda3/bin/jupyter-notebook --allow-root

(可左右滑动)


Jupyter Notebook与Livy集成_python_10


4.Jupyter验证



1.在浏览器输入Jupyter Notebook访问地址


Jupyter Notebook与Livy集成_spark_11


2.登录成功后使用我们新安装的Spark Kernel启动一个会话


Jupyter Notebook与Livy集成_spark_12



3.在代码列表输入示例代码运行


Jupyter Notebook与Livy集成_spark_13


4.查看Yarn的8080界面


Jupyter Notebook与Livy集成_cloudera_14


5.查看Livy的管理界面


Jupyter Notebook与Livy集成_spark_15


5.总结



1.Jupyter Notebook与Livy集成需要依赖Python的sparkmagic库,集成相对比较简单只需要在Python中安装sparkmagic并配置livy的访问环境即可。


2.在使用pyspark时如果要切换启动Spark的版本,则需要在Livy的配置页面修改livy启动会话的Spark版本


3.部署Livy服务的节点必须部署Spark和Spark2的Gateway



提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

Jupyter Notebook与Livy集成_cloudera_16

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操