Docker+Spark+Jupyter=文字資料處理邏輯測試平臺容器化

weixin_34041003發表於2016-08-04

寫在前面

之前寫過一篇“Spark+Jupyter=線上文字資料處理邏輯測試平臺”
[http://www.jianshu.com/p/bbd4190089e7]

這幾天要把這玩意兒放到我自己的阿里雲上線,供一些正在學習Python文字處理的基友們試用,然後按著之前的步驟又配了一次環境。這臺伺服器配置渣網速慢,光編譯scipy就假死了好幾次。就算有著自己寫的教程一步步來都要煩死了。

生無可戀的我攤在桌子上,目光掃到了一本書——《Docker技術入門與實戰》,心中突然就有一個作死的想法:乾脆把這玩意兒容器化好了,資料處理+Spark聽起來就很吸引人啊有木有。

說幹就幹,結合之前的教程我決定再來一次Docker版本的文字資料處理邏輯測試平臺搭建。

事實上你可以把這篇文章看作是Docker入門操作的教程,因為裡面主要講述的是Docker的部署,修改與提交

準備工作

使用Docker的話其實是很有好處的,在Docker的映象站裡已經有人家搭好的基礎款jupyter映象,我們只需要往裡面新增Spark環境即可。
同樣預設使用的是Ubuntu或者Debian的機器,並且知道Docker是用來幹什麼的即可。

安裝Docker

目前新版本的Ubuntu和Debian應該都能直接使用apt-get安裝docker,執行以下命令即可

$apt-get -y install docker.io

之後輸入

$service docker status
$service docker start

確保docker服務已啟動
如果docker沒有建立/usr/bin/docker的話,執行

ln -sf /usr/bin/docker.io /usr/local/bin/docker

映象下載

前面說過Docker的映象站上已經有基於Jupyter的資料處理映象可供下載了,這映象分成兩個版本:

  • dataquestio/python3-starter
  • dataquestio/python2-starter

由於我的朋友大部分使用的是Py2,所以我選擇了dataquestio/python2-starter這個版本,至於Py3如果有需要後期在jupyter裡新增kernel即可。
執行

$docker pull dataquestio/python2-starter

坐等進度條跑完之後執行

$docker images

即可看到目前所有的映象,我們很高興的看到dataquestio/python2-starter已經在列表裡了

內容新增

首先要準備三樣東西:

  • hadoop2.6.0.tar.gz
  • spark-1.6.1-bin-hadoop2.6.tar.gz
  • scala-2.10.6.tar.gz

我們要把這三個檔案放到容器裡去,所以首先我們要執行容器

docker run -v /your/file/path:/mnt dataquestio/python2-starter

這行命令的主要作用是執行容器並將你的檔案路徑掛載到容器系統的/mnt路徑下,這裡如果不懂的話建議查查docker容器的執行原理。
之後這個終端會列印出jupyter的執行資訊,表示docker已經開始時運作。保留這個終端新建一個終端視窗,執行

$docker ps

會看到shell列印出所有正在執行的容器的資訊,其中第一項是容器的id,複製並執行

$docker exec -it yourcontainerid /bin/bash

你會發現你的shell已經進入容器並可以對容器環境進行操作了,進入/mnt並按照上一篇教程
[http://www.jianshu.com/p/bbd4190089e7]
對spark環境進行配置,不過這個容器並沒有安裝Java,所以你需要執行

$add-apt-repository ppa:webupd8team/java
$apt-get update
$apt-get install oracle-java8-installer

並在之後對bashrc或者bash_profile進行修改時加入JAVA_HOME的配置

export JAVA_HOME=/usr/lib/jvm/java-8-oracle"
export PATH=$PATH:$JAVA_HOME/bin

打包映象

在spark配置好並確定你的jupyter能正常使用pyspark之後退出容器的shell,執行

docker ps

你會發現容器的id已經改變,這說明這個容器已經被你新增過內容,不再是之前你下載的映象,所以你需要將這個容器打包成一個新映象,之後你就可以在任意裝有docker的平臺上部署自己的容器了。
打包容器使用docker commit命令

docker commit -m "Added Spark Support" -a "Author: yourname" $newCotainerID $newImagename

如果順利的話命令會返回新的docker映象id資訊,執行

docker images

即可檢視你的新映象

相關文章