Spark Cluster 建置環境
本建置透過Apache提供的Ambari建置Spark叢集環境,並利用Ipython與Jupyter提供簡易的叢集測試環境,讓使用者得以透過撰寫Python語言操作Spark Cluster。本測試環境網絡架構圖如下所示。
本測試環境使用3台實體機器皆採用CentOS 6.5版本64bit之作業系統建立叢集,其中一台扮演Master以及兩台扮演Slave。建置過程中所有的節點皆須安裝Python2.7以上版本並設定SSH免金鑰登入。Master需安裝Ambari-Server、Ipython、Jupyter,而Ambari-Server會將Ambari- Agent部屬至各個子節點之中,部屬完畢後透過Ambari-Server建置Spark叢集環境。本建置之配置如表所示。
名稱 |
作業系統 |
安裝軟體 |
Master |
CentOS 6.5 64bit |
|
Slave1 |
CentOS 6.5 64bit |
|
Slave2 |
CentOS 6.5 64bit |
|
Spark Cluster 安裝
本建置報告係透過apache ambari快速建置Spark叢集。
- 建立SSH免認證金鑰
- Python版本更新
- 安裝Ipython、Jupyter
- 安裝Ambari-Server
- 建置Spark叢集
- 快速啟動Spark叢集
建立SSH免認證金鑰
ssh-keygen
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
編輯HostName
設定叢集各節點的IP、名稱,並在本機後面加上localhost標記,此Hostname設定檔,所節點都須有一份。
vim /etc/hosts
更新Yum
更新yum套件包
yum update -y
關閉防火牆
chkconfig iptables off
/etc/init.d/iptables stop
安裝開發套件
編譯Python只要有gcc編譯器就足夠了,但一些擴展模組需要額外的庫,否則一些Python模組將不可用(比如Python的zlib模組需要zlib-devel,ssl模組需要openssl-devel)。使用者可以根據需要,選擇性的安裝這些擴展模組。這裡我們安裝zlib、ssl和sqlite3的套件。
yum install zlib-devel openssl-devel sqlite-devel –y
yum groupinstall "Development tools" -y
下载新版Python
wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
tar zxvf Python-2.7.8.tgz
編譯安裝
cd Python-2.7.8
./configure --prefix=/usr/local/python
make
make install
替換系統預設Python
mv /usr/bin/python /usr/bin/python2.6.6
ln -sf /usr/local/python/bin/python2.7 /usr/bin/python
修正yum
系統執行yum時因預設調用Python 2.7.8因此出現錯誤(如下圖),透過修改/usr/bin/yum文件,使yum使用python2.6執行。
vim /usr/bin/yum
安装setuptools和pip
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
ln -sf /usr/local/python/bin/pip /usr/bin/pip
ln -sf /usr/local/python/bin/easy_install /usr/bin/easy_install
安裝IPython
pip install ipython
ln -s /usr/local/python/bin/ipython /usr/bin/ipython
安裝readline擴充模組
yum install readline-devel
yum install patch
pip install readline
安裝Jupyter
pip install jupyter
啟動jupyter
ipython notebook
安裝Ambari-Server
cd /etc/yum.repos.d/
wget http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.1.0/ambari.repo
設定並啟用Ambari-Server
設定ambari-server時若無其他配置,按照預設即可安裝完成(持續輸入Enter即可),安裝完畢後啟動服務,可使用瀏覽器輸入http://<ambari-server-host>:8080,進入Ambari管理介面。
ambari-server setup
ambari-server start
建置Spark Cluster
在網址列輸入{MasterIP}:8080,可進入Ambari管理介面(如下圖),愈設帳號為admin,密碼admin。
點選畫面中間的launch install wizar開始建立Cluster,並輸入Cluster名稱(此處可隨意命名),本文命名為lungspark。
設定叢集節點,於Target Hosts輸入從結節點名稱,並登入Master中ssh private Key私鑰,複製至下方的空白處,此處ssh連線必須有root權限。
安裝相關套件,此處安裝Spark(1.3.1)、HDFS、YARN、ZooKeeper,其餘相關套件可依需求另外加選。
此處安裝須等待數十分鐘至數小時(依照安裝套件、叢集數量及網路速度決定),安裝完成後點選Next。
設定HDFS權限
cp -r .ipython /home/hdfs/
chown -R hdfs:hdfs /home/hdfs/.ipython
設定快速啟動之Shell檔
為方便並快速透過jupyter啟動Spark叢集,建立pyspark-dev-env.sh與ipyspark.sh兩個Shell檔,pyspark-dev-env.sh設定環境變數,ipyspark.sh負責透過ipython notebook 啟用jupyter並調用Spark資源,其shell檔設定如下。
pyspark-dev-env.sh
#!/bin/bash
export SPARK_HOME=/usr/hdp/current/spark-client
export PYTHONPATH=$SPARK_HOME/python/:$PYTHONPATH
export PYTHONPATH="$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH"
source $SPARK_HOME/bin/utils.sh
source $SPARK_HOME/bin/load-spark-env.sh
source /etc/spark/conf/spark-env.sh
export PYSPARK_PYTHON=python
ipyspark.sh
#!/bin/bash
source pyspark-dev-env.sh
IPYTHON_OPTS="notebook --profile=pyspark" pyspark $1 $2
為方便執行,將ipyspark.sh給予執行權限。
chmod +x ipyspark.sh
快速啟動Spark Cluster
如啟動單機版本則執行./ipyspark.sh即可,若欲啟動叢集模式則輸入./ipyspark.sh --master yarn-client,啟動完成下圖所示,預設為{MasterIP:8888}。
./ipyspark.sh --master yarn-client