在阿里雲上搭建 Spark 實驗平台


之前在自己的筆記本上運行 Python 代碼,有些要運行一天多,一關機就前功盡棄,很不方便,所以才有租用阿里雲服務器的想法,用了同學租的一台用了兩天又覺得不夠使,索性就自己租了三台,配置如下,三台一共約 320 塊。

CPU: 1核

內存: 2048 MB

操作系統: Ubuntu 14.04 64位

帶寬計費方式: 按固定帶寬

當前使用帶寬: 1Mbps

實例規格: ecs.s1.small

實例規格族: 標准型 s1

我們使用開源免費軟件 PuTTY 連接到三台服務器上進行 Spark 的配置。

1、修改主機名

用 vi 打開 etc/hostname,三台服務器的主機名依次修改為 master、slave1 和 slave2。

# vi /etc/hostname

2、配置 hosts 文檔

# vi /etc/hosts

在 hosts 文件中添加三台服務器的 IP 地址和對應的主機名。

120.56.121.132 master
120.35.219.36 slave1
120.45.201.137 slave2

配置之后 ping 一下用戶名看是否生效

# ping master
# ping slave1
# ping slave2

3、關閉防火牆

# sudo ufw disable

4、配置 SSH 無密碼通信

# sudo apt-get install openssh-server
# sudo apt-get update
# ssh-keygen -t rsa -P ""   //提示選擇目錄時,按 Enter 鍵,那么 id_rsa 和 id_rsa.pub 會生成到 root/.ssh 目錄下。在根目錄下使用 ls -a 命令可以看到該目錄。

在三台服務器上執行:cd root/.ssh,cat id_rsa.pub>>authorized_keys,將 id_rsa.pub 追加到 authorized_keys。

將 slave1 和 slave2 的 id_rsa.pub 拷貝到 master(傳輸文件可用 scp),並將其內容追加到 master 的 root/.ssh/authorized_keys 中。同理,將 slave1 和 master 的 id_rsa.pub 追加到 slave2 的 authorized_keys,將 slave2 和 master 的 id_rsa.pub 追加到 slave1 的 authorized_keys。

驗證SSH無密碼通信

ssh master
ssh slave1
ssh slave2

5、安裝 JDK

在 JDK 官網下載 jdk-8u77-linux-x64.tar.gz。在 windows 7 下使用 Xftp 把該 JDK 文件傳到三台雲服務器的 /usr/local/java 下,解壓。

# cd /usr/local/java
# sudo tar xzvf jdk-8u77-linux-x64.tar.gz

然后,編輯 ~/.bashrc 文件,在文件最后添加:

export JAVA_HOME=/usr/local/java/jdk1.8.0_77
export JRE_HOME=/usr/local/java/jdk1.8.0_77/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
export JDK_HOME=/usr/local/java/jdk1.8.0_77

為了使修改生效,執行:

# source ~/.bashrc

檢驗 JDK 是否安裝成功

# java -version

6、安裝 Scala

下載 scala-2.11.8.tgz,解壓到 /usr/local 文件夾,並將文件夾改名為 scala。

# tar xvzf scala-2.11.8.tgz
# ln -s scala-2.11.8 scala

打開 ~/.bashrc,添加

export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin

7、安裝 Spark

下載 spark-1.6.1-bin-hadoop2.6.tgz,解壓到 /usr/local 文件夾,並將文件夾改名為 spark。

# tar xvzf spark-1.6.1-bin-hadoop2.6.tgz
# ln -s spark-1.6.1-bin-hadoop2.6 spark

修改配置文件 /usr/local/spark/conf 中:

# mv spark-env.template spark-env.sh
# mv log4j.properties.template log4j.properties
# mv slaves.template slaves

在 spark-env.sh 結尾添加

export SCALA_HOME=/usr/local/scala

修改 slaves 文件

master
slave1
slave2

打開 ~/.bashrc,添加

export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

為了使 .bashrc 修改生效,執行:

# source ~/.bashrc

8、啟動 Spark 集群

# start-all.sh  //因為上面的 .bashrc 文件中配置了 usr/local/spark/sbin 路徑,所以這里可直接執行

輸入 # jps 命令看 master 下是否出現 master 和 worker,在 slave 節點下是否出現 worker,出現則說明 Spark 集群啟動成功。 

9、運行 Spark 實例

# run-example SparkPi 10

然后出來一大串的運行信息,其中有運行結果。

10、調整日志級別

為了減少信息干擾,可以調整日志級別,修改 spark/conf/log4j.properties,把 log4j.rootCategory=INFO,console 改為 log4j.rootCategory=WARN,console

然后再運行

# run-example SparkPi 10

可以看到結果清爽多了。

但對於初學者來說,INFO 也是很有參考價值的,所以,建議把日志級別調整為 INFO。

完畢。

 

參考資料:

1、http://www.mak-blog.com/spark-on-yarn-setup-multinode.html

2、張丹陽, 曹維焯, 薛志雲,等. 阿里雲實現Spark的分布式計算[J]. 福建電腦, 2015(2):23-24.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM