CentOS6.5 安裝Spark叢集

獵手家園發表於2016-05-17

一、安裝依賴軟體Scala(所有節點)

1、下載Scala:http://www.scala-lang.org/files/archive/scala-2.10.4.tgz

2、解壓:

[root@Hadoop-NN-01 ~]# tar -xzvf scala-2.10.4.tgz -C /usr/local/

3、配置scala環境變數

[root@Hadoop-NN-01 ~]# vim /etc/profile
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:${SCALA_HOME}/bin

[root@Hadoop-NN-01 ~]# source /etc/profile       #使環境變數生效

4、測試scala執行環境

[root@Hadoop-NN-01 scala]# scala
scala> 15*15
res0: Int = 225

 

二、安裝spark

1、下載spark:http://archive.cloudera.com/cdh5/cdh/5/spark-1.5.0-cdh5.6.0.tar.gz

理論上講CDH的一套是沒有問題,可是我裝了三個版本都沒有裝成功,啟動的時候始終一個錯:Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Logger

提示缺少slf4j依賴包:log4j-1.2.17.jar、 slf4j-api-1.7.10.jar、 slf4j-log4j12-1.7.10.jar

可我將這三個包放到lib下依然不行,最後只能下載的官方的安裝。如果有朋友知道原諒還請留言,謝謝!

引用【書憶江南】的回覆:

#CDH版的Spark安裝目錄下的/conf/spark-env.sh配置檔案中,新增以下環境變數:export SPARK_DIST_CLASSPATH=(/mnt/sda6/Hadoop/hadoop−2.6.0−cdh5.15.0/bin/hadoopclasspath),給這個變數新增你已經安裝的CDHHadoop的類路徑,我看到別的教程說等號後面可以直接(/mnt/sda6/Hadoop/hadoop−2.6.0−cdh5.15.0/bin/hadoopclasspath),給這個變數新增你已經安裝的CDHHadoop的類路徑,我看到別的教程說等號後面可以直接(hadoop classpath),我試過,這樣只能啟動Master,啟動Worker程式的時候還是會報缺Logger的錯。所以,必須要在括號內寫全CDH Hadoop的安裝路徑精確到/bin,然後再斜槓接上hadoop classpath才行。

export SPARK_DIST_CLASSPATH=$(/mnt/sda6/Hadoop/hadoop-2.6.0-cdh5.15.0/bin/hadoop classpath)

官方下載:http://www.apache.org/dyn/closer.lua/spark/spark-1.6.0/spark-1.6.0-bin-hadoop2.6.tgz

2、解壓:

[root@Hadoop-NN-01 ~]# tar xzvf spark-1.6.0-bin-hadoop2.6.tgz

3、配置Spark環境變數

[root@Hadoop-NN-01 ~]# vim /etc/profile
export SPARK_HOME=/home/hadoopuser/spark-1.6.0-bin-hadoop2.6
export PATH=$PATH:${SPARK_HOME}/bin

[root@Hadoop-NN-01 ~]# source /etc/profile       #使環境變數生效

4、配置 ${SPARK_HOME}/conf/spark-env.sh

[hadoopuser@Hadoop-NN-01 conf]$ cp spark-env.sh.template spark-env.sh

[hadoopuser@Hadoop-NN-01 conf]$ vim spark-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_73
export SCALA_HOME=/usr/local/scala
export HADOOP_HOME=/home/hadoopuser/hadoop-2.6.0-cdh5.6.0
export HADOOP_CONF_DIR=/home/hadoopuser/hadoop-2.6.0-cdh5.6.0/etc/hadoop

export SPARK_MASTER_IP
=192.168.107.82 export SPARK_MASTER_PORT=8070 export SPARK_MASTER_WEBUI_PORT=8090

export SPARK_WORKER_CORES=1 #每個Worker使用的CPU核數 export SPARK_WORKER_INSTANCES=1 #每個Slave中啟動幾個Worker例項 export SPARK_WORKER_PORT=8092 #Worker的WebUI埠號 export SPARK_WORKER_MEMORY=1g #每個Worker使用多大的記憶體

 

其它引數:

SPARK_MASTER_IP

繫結一個外部IP給master。

SPARK_MASTER_PORT

從另外一個埠啟動master(預設: 7077)

SPARK_MASTER_WEBUI_PORT

Master的web UI埠(預設:8080)

SPARK_WORKER_PORT

啟動Spark worker 的專用埠(預設:隨機)

SPARK_WORKER_DIR

伸縮空間和日誌輸入的目錄路徑(預設:SPARK_HOME/work)

SPARK_WORKER_CORES

作業可用的CPU核心數量(預設:所有可用的)

SPARK_WORKER_MEMORY

作業可使用的記憶體容量,預設格式1000M或者 2G (預設:所有RAM去掉給作業系統用的1 GB)注意:每個作業自己的記憶體空間由SPARK_MEM決定。

SPARK_WORKER_WEBUI_PORT

worker 的web UI 啟動埠(預設:8081)

SPARK_WORKER_INSTANCES

每個機器上執行worker數量(預設:1)當你有一個非常強大的計算機的時候和需要多個Spark worker程式的時候你可以修改這個預設值大於1。如果你設定了這個值。要確保SPARK_WORKER_CORE 明確限制每一個r worker的核心數,否則每個worker 將嘗試使用所有的核心。

SPARK_DAEMON_MEMORY

分配給Spark master和 worker 守護程式的記憶體空間(預設:512m)

SPARK_DAEMON_JAVA_OPTS

Spark master 和 worker守護程式的JVM 選項(預設:none)

 

5、配置 {SPARK_HOME}/conf/ slaves

[hadoopuser@Hadoop-NN-01 conf]$ cp slaves.template slaves         

[hadoopuser@Hadoop-NN-01 conf]$ vim slaves
#注意這裡新增所有工作節點的主機名或者ip
#Hadoop-NN-01(如果既想當master又想當worker的話,可以配置上。)
Hadoop-DN-01
Hadoop-DN-02

6、程式分發

scp -r spark-1.6.0-bin-hadoop2.6. hadoopuser@Hadoop-DN-01:/home/hadoopuser/
scp -r spark-1.6.0-bin-hadoop2.6. hadoopuser@Hadoop-DN-02:/home/hadoopuser/

7、啟動spark叢集

[hadoopuser@Hadoop-NN-01 sbin]# ./start-all.sh

單節點啟動:

sbin/start-master.sh               #啟動主節點
sbin/start-slave.sh 192.168.107.82:8070    #啟動從節點

8、執行示例程式

[hadoopuser@Hadoop-NN-01 spark-1.6.0-bin-hadoop2.6.]# ./bin/run-example SparkPi 10 > Sparkpilog.txt

9、驗證

1)jps

主節點多了Master

從節點多了Worker

2)瀏覽器檢視http://192.168.107.82:8090/

10、使用spark-shell

[hadoopuser@Hadoop-NN-01 spark-1.5.0-cdh5.6.0]# bin/spark-shell

瀏覽器訪問SparkUI  http:// 192.168.107.82:4040/

可以從 SparkUI 上檢視一些 如環境變數、Job、Executor等資訊。

至此,整個 Spark 分散式叢集的搭建就到這裡結束。

11、停止spark叢集

[hadoopuser@Hadoop-NN-01 sbin]# ./stop-all.sh

 

相關文章