此次試驗的項目是:
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監控如下