如何在非安全的CDH集群中部署Jupyter并集成Spark2

1.文档编写目的


Jupyter Notebook是一个Web应用程序,允许你创建和分享,包含实时的代码,可视化和解释性文字。常用于数据的清洗和转换、数值模拟、统计建模、机器学习和更多,支持40多种语言。python ,R,go,scala等。Jupyter Notebook是Python中的一个包,在Fayson前面的文章《如何在CDH集群上部署Python3运行环境及运行Python作业》介绍了在集群中部署Anaconda,该Python环境自带了Jupyter的包。本篇文章Fayson主要介绍如何在非安全的CDH集群中部署Jupyter Notebook并与Spark2集成。

  • 测试环境

1.CM5.15.0和CDH版本5.14.2

2.Jupyter版本为1.0.0

3.Python3.6.5

2.Jupyter部署及配置


1.检查Python环境中是否已安装了Jupyter包

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

(可左右滑动)

2.生成Jupyter Notebook的配置文件,命令如下:

[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/jupyter-notebook --generate-config

(可左右滑动)

配置文件默认生成在当前用户的根目录的./jupyter/下。

3.使用python命令生成一个加密的密码

[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/python
Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from notebook.auth import passwd
>>> passwd()
Enter password: 
Verify password: 
'sha1:308253dee301:d159c07a06eacab4573cd11c17ca1987bef9259e'
>>> 

(可左右滑动)

生成的密码会在下一步的配置文件中使用,主要是校验用户访问Jupyter服务。

4.修改Jupyter的配置文件/root/.jupyter/jupyter_notebook-config.py,在文件的默认增加如下配置:

#jupyter监听的ip地址,可以配置为"*"监听所有
c.NotebookApp.ip = 'cdh04.fayson.com'
#jupyter服务监听端口
c.NotebookApp.port = 8888
#jupyter服务启动时是否打开浏览器
c.NotebookApp.open_browser = False
#访问Jupyter服务时用于验证的密码,使用python命令生成的秘钥
c.NotebookApp.password = 'sha1:308253dee301:d159c07a06eacab4573cd11c17ca1987bef9259e'

(可左右滑动)

5.启动Jupyter服务

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

(可左右滑动)

如上显示则表示Jupyter服务启动成功。

6.在浏览器访问http://cdh04.fayson.com:8888

提示输入密码(即在配置文件中配置的密码),点击登录

如上就完成了Jupyter服务的部署。

3.Spark2集成


Spark支持Sacla、Python、R语言,下面Fayson主要使用Apache Toree来实现Jupyter与CDH集群中的Spark2集成,通过Toree来生成集群Spark2的不同语言的内核。

1.通过如下命令查看Jupyter中默认支持的Kernel

[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/jupyter kernelspec list

(可左右滑动)

上图可以看到默认Jupyter只有python3的kernel

2.在Python中安装toree包,执行命令如下:

[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/pip install --upgrade toree

(可左右滑动)

安装的toree版本为0.2.0

3.使用toree安装Spark2 Scala语言的kernel,命令如下:

[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/jupyter toree install --spark_home=/opt/cloudera/parcels/SPARK2/lib/spark2

(可左右滑动)

查看Jupyter的Kernel

上图显示多了一个apache_toree_scala的kernel

4.使用上一步命令默认的只安装了Spark Scala的Kernel,那pyspark、sparkr及SparkSQL的Kernel生成命令如下:

[root@cdh04 ~]# /opt/cloudera/anaconda3/bin/jupyter toree install --interpreters=PySpark,SparkR,SQL --spark_home=/opt/cloudera/parcels/SPARK2/lib/spark2

(可左右滑动)

查看Jupyter的Kernel

5.以上步骤就完成了Jupyter与Spark2的集成,重启Jupyter服务

4.Jupyter使用


1.登录Jupyter

2.点击“New”新建一个Notebook,这里Fayson选择“Apache Toree- PySpark”

打开新的创建

3.运行PySpark测试代码,读取HDFS的/tmp/test.txt文件、统计行数并输出第一行内容

textFile = spark.read.text("/tmp/test.txt")
textFile.count()
textFile.first()

(可左右滑动)

运行成功结果显示如下:

也可以逐行的运行代码

4.查看CDH集群Yarn的8088界面作业

5.总结


1.使用Anaconda安装的Python默认带有Jupyter,不需要额外的安装Jupyter包

2.Jupyter与Spark2集成时使用到Apache Toree实现比较方便,不需要过多的关心Kernel的配置

3.在部署Jupyter的节点,需要安装Spark的Gateway角色

本文分享自微信公众号 - Hadoop实操(gh_c4c535955d0f)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏移动开发面面观

Android并发备忘录

25030
来自专栏欧阳大哥的轮子

从Xcode10不再支持libstdc++说起

众所周知从Xcode10起,苹果摒弃了对libstdc++库的支持转而支持libc++库了。这两个库在Xcode9甚至更早的版本就已经同时存在于系统中并且可供开...

50030
来自专栏LhWorld哥陪你聊算法

【Spark篇】---Spark中Shuffle机制,SparkShuffle和SortShuffle

Spark中Shuffle的机制可以分为HashShuffle,SortShuffle。

27930
来自专栏Seebug漏洞平台

从补丁到漏洞分析——记一次joomla漏洞应急

作者:LoRexxar'@知道创宇404实验室 2018年1月30日,joomla更新了3.8.4版本,这次更新修复了4个安全漏洞,以及上百个bug修复。 ht...

368120
来自专栏祝威廉

快速开发基于Yarn的分布式应用

mammuthus-yarn-client使得基于Yarn开发分布式应用变得非常容易,基本蔽掉了Yarn的API。 我们后面会把mammuthus-yarn-...

23380
来自专栏酷玩时刻

PC 微信扫码登陆

网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。进一步了解OAuth2.0-----理解OAuth2.0 官方介绍资料

2.5K40
来自专栏Spark学习技巧

用java提交一个Spark应用程序

第一种方式 经常有人在公众号留言或者在群里问浪尖,如何使用java代码提交一个Spark应用程序。在这里浪尖介绍一种简单的方法来实现这个功能。 首先用vim打开...

449100
来自专栏钟绍威的专栏

java.io.StreamCorruptedException: invalid type code: AC错误的解决方法

问题描述: 在向一个文件写入可序列化对象时,每次只想向文件的末尾添加一个可序列化的对象,于是使用了FileOutputStream(文件名,true)间接的构建...

252100
来自专栏Seebug漏洞平台

从补丁到漏洞分析——记一次joomla漏洞应急

2018年1月30日,joomla更新了3.8.4版本,这次更新修复了4个安全漏洞,以及上百个bug修复。

43180
来自专栏LanceToBigData

Hadoop(十四)MapReduce原理分析

前言   上一篇我们分析了一个MapReduce在执行中的一些细节问题,这一篇分享的是MapReduce并行处理的基本过程和原理。   Mapreduce是一个...

95280

扫码关注云+社区

领取腾讯云代金券