此次试验的项目是:
Zeppelin+Anaconda2(包括Tensorflow等深度学习库)+Spark On Yarn+SQL On Zeppelin整个环境的搭建的过程。
试验目标:
将该环境搭建好了之后,可以在zepplin上基于web界面进行scala和python的编程,并且可以直接通过web界面进行深度学习建模并通过Spark集群进行学习训练。可以做到即写即可再web界面运行。并且可以直接在web界面写sql语句进行可视化展示效果。
1 Yarn集群搭建
那么接下来我们首先要搭建好Hadoop的Yarn集群,因为整个通过Zepplin提交给Yarn的Job需要通过Yarn的资源调度来启动Container,Container里面是具体的线程来进行具体的计算的。简单的说就是 分配好计算等资源。
对于Yarn集群搭建,其实可以就直接搭建hadoop集群。我的环境是通过Ambari一键部署的。这种方式非常简便。因此推荐通过Ambari来一键部署Yarn集群。
当我们部署好Yarn集群之后,我们需要在刚下载下来的Spark二进制文件的配置文件中做如下的配置
exportJAVA_HOME=/home/ubuntu/jdk1.8.0_121(这里替换您自己的jdk路径)
exportYARN_CONF_DIR=/home/ubuntu/yarn_conf(这里替换成您自己的yarn-site.xml路径)
这里其实就是通过YARN_CON_DIR来指定Spark On Yarn的时候Spark Job具体到哪里去找到ResourceManager。从而找到Yarn来进行资源调度。
2 科学计算库环境搭建(Anaconda2)
接下来就按照Anaconda2了,Anaconda2直接在官网去下载的时候,一般其网络下载的速度都会非常的慢。我一气之下,找到了一个较好的下载源。所以推荐以下的下载地址。网络下载速度会好很多。
清华大学开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
您应该根据自己的系统具体情况来选择对应的版本。版本一定要兼容。所以这里也是避免出错的关键之一。
下载完成之后,给文件赋可执行权限之后,就可以直接运行安装。安装过程非常方便。一般情况下不会出错。
于是此时就可以安装Tensorflow,Numpy,Scipy,matplotlib等那一系列科学计算库了。
在安装科学计算库之前,如果您的网络速度不好的话,推荐使用阿里或者豆瓣的pip下载源(安装anaconda2的时候就直接安装了pip)。更改下载源的方式如下:
创建编辑 文件~/.pip/pip.conf(linux系统下,windows不一样)
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host= mirrors.aliyun.com
备注:index-url即源地址,trusted-host为源地址的域名,由于国内的源镜像都为使用https协议,所以如果不添加信任域就会报:
Thisrepository located at mirrors.aliyun.com is not a trusted host, if thisrepository is available via HTTPS it is recommend to use HTTPS instead,otherwise you may silence this warning with ‘–trusted-host mirrors.aliyun.com’.
DEPRECATION: Implicitly allowing locations which are not hosted at a secureorigin is deprecated and will require the use of –trusted-host in the future.
Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages
我们可以
通过pip install tensorflow来下载tensorflow(深度学习框架)
通过pip insall numpy来下载numpy
通过 pip install scipy来下载scipy
通过pip install pandas来下载pandas
通过pip install matplotlib来下载matplotlib
等等,几乎所有的python科学计算库都可以通过该种方式进行下载,并且集成道anaconda的整个环境当中。
于是,到了这一步。我们的环境基本上完成了。
先来看看效果。
3 接下来最后一步
那就是安装Zepplin并且配置好Spark在集群中运行job的一系列配置。
下载解压Zepplin我就不用多说了吧,直接到官网或者镜像库去下载就行了。只是和上面所说一样,也是要注意网络下载速度的问题,也是推荐一个镜像,就看你怎么选择了。地址如下:
https://mirrors.tuna.tsinghua.edu.cn/apache/
进入到根目录下的conf目录之中,并且编辑zeppelin-env.sh文件
vim zeppelin-env.sh
加入如下的配置:
exportJAVA_HOME=/home/ubuntu/jdk1.8.0_121
exportSPARK_HOME=/home/ubuntu/spark-2.1.0-bin-hadoop2.7
exportPYSPARK_PYTHON=/root/anaconda2/bin/python
export PYTHONPATH=/root/anaconda2/bin/python
exportHADOOP_CONF_DIR=/home/ubuntu/yarn_conf
如果您想要知道为什么的话,就可以好好阅读以下官方提供的英文注释咯哦
然后再根目录下的bin目录下执行 ./zeppelin-daemon.shstart(在此之前,我在zeppelin-site.xml文件中改了服务端口,默认为8080端口,由于8080端口被netflix开源的Genie占用了,于是我改成了服务端口为8081)
待启动完成之后,就可以通过web访问了。
首先你可以看看官方提供的教程。
但是个人觉得官方提供的教程太过于繁琐了。没有明确的思路。
个人大体就2个思路。
一就是配置解释器,二就是使用解释器,然后就没有了。
配置解释器:
然后可以看看默认的解释器(默认解释器有很多,比如spark)
我在此增加了一个自定义的解释器,如下所示
这里一定要注意spark.cores.max和spark.executor.memory。这里的大小推荐和yarn上的一样。不然会报内存不足等等的错误。
2 使用解释器:
创建一个note
选择一个解释器
最后就开始使用了(我们用python做一个测试)
scala做测试
对应的yarn上也有对应的记录
Spark Job监控如下