spark1.6.0分佈式安裝

1. 概述

本文是對spark1.6.0分佈式集羣的安裝的一個詳細說明,旨在幫助相關人員按照本說明能夠快速搭建並使用spark集羣。

 

2. 安裝環境

本安裝說明的示例環境部署如下:

IP 外網IP hostname 備註
10.47.110.38 120.27.153.137 iZ237654q6qZ Master、Slaver
10.24.35.51 114.55.56.190 iZ23pd81xqaZ Slaver
10.45.53.136 114.55.11.55 iZ23mr5ukpzZ Slaver
10.24.35.76 114.55.56.228 iZ23v8c9mqpZ Slaver


各軟件版本:

  • Java:jdk-8u60-linux-x64.tar.gz
  • Scala:2.10.4
  • Spark:1.6.0
  • Hadoop:CDH-5.4.5-1.cdh5.4.5.p0.7

 

3. 安裝前準備

3.1 在每臺機添加hosts(root用戶)

修改文件/etc/hosts(或者/etc/sysconfig/network),添加以下內容:

10.47.110.38       iZ237654q6qZ

10.24.35.51          iZ23pd81xqaZ

10.45.53.136       iZ23mr5ukpzZ

10.24.35.76          iZ23v8c9mqpZ

注意:主機名必須和hosts文件中的名稱保持一致!   

 

3.2 每個spark節點上創建一個用戶(root用戶)

# adduser spark

# passwd spark

密碼統一設爲:spark



3.3 每臺機安裝java(root用戶)

3.3.1 下載java

下載地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u60-oth-JPR

 

3.3.2 解壓到指定目錄

# tar -zxvf jdk-8u60-linux-x64.tar.gz -C /usr/local/


         建立軟鏈接以方便以後更改java版本

         # ln -sf/usr/local/jdk1.8.0_60/ /usr/local/jdk



3.3.3 配置環境變量

更改全局配置文件/etc/profile

# vim /etc/profile

在文件最後添加:

export JAVA_HOME=/usr/local/jdk         //添加java home

export PATH=.:$JAVA_HOME/bin:$PATH                 //將scala路徑添加進環境變量


注意:在修改完profile後,需要輸入以下命令進行更新,否則不會立即生效:

       # source /etc/profile

 

3.3.4 驗證

輸入java -version驗證是否已配置成功

# java -version

 

3.4 每臺機安裝scala(root用戶)

3.4.1 下載scala

下載地址:http://www.scala-lang.org/download/2.10.4.html

 

3.4.2 解壓到指定目錄

# tar -zxvf scala-2.10.4.tgz -C /usr/local/


建立軟鏈接以方便以後更改scala版本

# ln -sf /usr/local/scala-2.10.4/ /usr/local/scala


 

3.4.3 配置環境變量

更改全局配置文件/etc/profile

# vim /etc/profile

在JAVA_HOME最後添加:

export SCALA_HOME=/usr/local/scala           //添加scala home

更改path路徑,添加scala環境

export PATH=.:$JAVA_HOME/bin: $SCALA_HOME/bin:$PATH               //將scala路徑添加進環境變量


注意:在修改完profile後,需要輸入以下命令進行更新,否則不會立即生效:

       # source /etc/profile

 

3.4.4 驗證

輸入scala -version驗證是否已配置成功

# scala -version


 

3.5 每臺機安裝ssh並配置無密碼連接(安裝openssh使用root,其他使用spark)

3.5.1 安裝openssh

# yum install -y openssh-server


注意:從這裏開始使用spark用戶,執行命令su - spark切換到spark用戶

3.5.2 生成密鑰

# ssh-keygen -t rsa -P ''(然後回車)

執行完這個命令後,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)


 

3.5.3 分享公鑰到其他主機

在每臺機上將公鑰拷貝到要免登陸的機器上

            # ssh-copy-id iZ237654q6qZ

            # ssh-copy-id iZ23pd81xqaZ

            # ssh-copy-id iZ23mr5ukpzZ

            # ssh-copy-id iZ23v8c9mqpZ

 

3.5.4 驗證是否免密碼

輸入以下命令,如果沒有提示輸入密碼就直接登入,則配置成功:

         # ssh iZ23mr5ukpzZ


驗證成功後退出登錄:

         # exit



3.6 每臺機關閉防火牆等服務(root)

# service iptables stop

# chkconfig iptables off                     //關閉開機啓動防火牆

 

 

4 spark部署(spark用戶)

4.1 下載spark

下載地址:http://mirrors.hust.edu.cn/apache/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz

 

4.2 配置spark環境變量

解壓到/home/spark目錄

            $ tar -zxvfspark-1.6.0-bin-hadoop2.6.tgz


            建立軟鏈接

            $ ln -sf spark-1.6.0-bin-hadoop2.6spark


配置環境變量,編輯/home/spark目錄下的bash_profile

$ vim ~/.bash_profile

添加以下兩行(如果原來裏面最後有path相關的兩行,先刪掉):

export SPARK_HOME=/home/spark/spark

export PATH=.:$SPARK_HOME/bin:$PATH


配置完成後同樣的source以下,使之生效

$ source ~/.bash_profile

 

4.3 配置spark

首先新建好spark用到的目錄(使用root用戶,只有這裏使用root用戶,每臺機):

$ mkdir /data                   //存儲數據的總目錄

$ mkdir /data/spark                  //spark數據存儲主目錄

$ mkdir /data/spark/local       //spark存儲本地數據的目錄

$ mkdir /data/spark/log          //spark存儲日誌的目錄

$ mkdir /data/spark/work      //spark存儲worker日誌等信息的目錄

$ chmod -R 777 /data/            //將/data目錄權限設置爲最大


 

4.3.1 配置spark-env.sh

       Spark-env.sh文件中配置了spark運行時的一些環境、依賴項以及master和slaver的資源配置。        

$ cd spark              //進入spark目錄        

$ cp conf/spark-env.sh.template conf/spark-env.sh              //將spark-env.sh.template複製一份爲spark-env.sh

 

因爲我們是部署standalone模式,可以參考配置文件中註釋項的提示:




添加以下內容:

配置項

說明

SPARK_LOCAL_IP= 10.47.110.38

本機ip或hostname(不同主機配置不同)

SPARK_LOCAL_DIRS=/data/spark/local

配置spark的local目錄

 

 

SPARK_MASTER_IP= 10.47.110.38

master節點ip或hostname

SPARK_MASTER_WEBUI_PORT=8080

web頁面端口

SPARK_WORKER_CORES=2

Worker的cpu核數

SPARK_WORKER_MEMORY=8g

worker內存大小

SPARK_WORKER_DIR=/data/spark/work

worker目錄

 

 

export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=4"

spark-shell啓動使用核數

export SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.appDataTtl=604800"

worker自動清理及清理時間間隔

 

 

export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://systex/user/spark/applicationHistory"

history server頁面端口、備份數、log日誌在HDFS的位置(注意,需要在HDFS上新建對應的路徑)

 

 

SPARK_LOG_DIR=/data/spark/log

配置Spark的log日誌目錄

 

 

export JAVA_HOME=/usr/local/jdk/

配置java路徑

export SCALA_HOME=/usr/local/scala/

配置scala路徑

export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop

配置hadoop的lib路徑

export HADOOP_CONF_DIR=/etc/hadoop/conf

配置hadoop的配置路徑

 

4.3.2 配置spark-defaults.conf

Spark-default.conf文件中主要配置的是與在spark上運行任務有關的一些參數,以及對executor等的配置。


添加以下內容:

配置項

說明

spark.eventLog.enabled  true

eventLog是否生效(建議開啓,可以對已完成的任務記錄其詳細日誌)

spark.eventLog.compress  true

eventLog是否啓用壓縮(cpu性能好的情況下建議開啓,以減少內存等的佔用)

spark.eventLog.dir     hdfs://systex/user/spark/applicationHistory

eventLog的文件存放位置,與spark-env.sh中的history server配置位置一致

 

 

spark.broadcast.blockSize       8m

廣播塊大小

spark.executor.cores    1

Executor的cpu核數

spark.executor.memory   512m

Executor的內存大小

spark.executor.heartbeatInterval        20s

Executor心跳交換時間間隔

spark.files.fetchTimeout        120s

文件抓取的timeout

 

 

spark.task.maxFailures  6

作業最大失敗次數(達到此次數後,該作業不再繼續執行,運行失敗)

spark.serializer        org.apache.spark.serializer.KryoSerializer

設置序列化機制(默認使用java的序列化,但是速度很慢,建議使用Kryo)

spark.kryoserializer.buffer.max         256m

序列化緩衝大小

 

 

spark.akka.frameSize    128

Akka調度幀大小

 

 

spark.default.parallelism    20

默認並行數

 

 

spark.network.timeout   300s

最大網絡延時

 

 

spark.speculation       true

Spark推測機制(建議開啓)



4.3 配置slaves

在conf目錄下有slaves文件,在其中配置slaves的hostname

$ cp conf/slaves.template conf/slaves

$ vim conf/slaves


添加各個slave節點的hostname:



至此,我們就將spark需要配置的東西全部配置完成,將spark整個目錄複製到其他主機:

            $scp -r /home/spark/spark-1.6.0-bin-hadoop2.6 spark@iZ23pd81xqaZ:/home/spark/

            $scp -r /home/spark/spark-1.6.0-bin-hadoop2.6 spark@iZ23mr5ukpzZ:/home/spark/

$ scp -r/home/spark/spark-1.6.0-bin-hadoop2.6 spark@iZ23v8c9mqpZ:/home/spark/

 

在相應的主機創建對應的spark軟鏈接,並將spark-env.shSPARK_LOCAL_IP改爲對應的ip即可。

 

 

5. 啓動spark並測試(spark用戶)

現在我們啓動spark,在master節點執行以下命令:

$ cd /home/spark/spark

$ ./sbin/start-all.sh                    //啓動master和slaves

$ ./sbin/start-history-server.sh        //啓動history server


使用jps命令查看是否成功啓動:

檢查進程是否啓動【在master節點上出現“Master”,在slave節點上出現“Worker”】




## 監控頁面URL http:// 120.27.153.137:8080/


運行spark-pi:

spark-submit  --master spark://10.47.110.38:7077 --classorg.apache.spark.examples.SparkPi --name Spark-Pi /home/spark/spark/lib/spark-examples-1.6.0-hadoop2.6.0.jar

能看到如下結果:



成功!


原文地址:http://www.w2bc.com/article/115838

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章