温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
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实操









