1. 程式人生 > >Spark2.2叢集部署和配置(CentOS)

Spark2.2叢集部署和配置(CentOS)

說明

1、Spark版本:2.2.0
2、Spark下載的地址:http://spark.apache.org/downloads.html
3、Spark下載的型別:原始碼、編譯後的軟體包等
4、Spark依賴的軟體/軟體包:
Linux(Centos 6.5)
Java(1.8+)
Scala(2.11.8)
Hadoop(2.7)
Maven(3.3.9 +)【非必須】
Python(2.7+/3.4+)
R(3.1+)

假設前提:
已經設定好了虛擬機器;
完成了:Linux、Java、Hadoop、scala的安裝

規劃

3臺裝置,1個master、3個worker
Spark採用Standalone模式
在這裡插入圖片描述

安裝

1、下載、解壓縮;設定環境變數(所有裝置)
下載軟體(spark原始碼及安裝包),解壓縮
編輯.bash_profile檔案(設定相應的環境變數)

2、編輯spark的配置檔案(所有裝置)
spark-defaults.conf、spark-env.sh、slaves、log4j.properties
路徑:$SPARK_HOME/conf

3、啟動spark服務,檢查服務是否正常啟動

4、spark的目錄結構
在這裡插入圖片描述
5、測試(2個程式【WordCount、Pi】,3種方式)
spark-shell
run-example SparkPi 10
spark-submit --class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.11-2.2.0.jar 10

備註:
1、spark-submit --class 主類路徑 jar包路徑 程式輸入引數(可能是多個)
這是最簡單的方式,通常還會在這裡設定相關的資源引數
2、spark-shell、run-example最終都是呼叫了spark-submit
3、我們提交spark任務都是使用spark-submit

配置

配置檔案 spark-env.sh

export JAVA_HOME=/opt/modules/jdk1.8.0_144
export SPARK_MASTER_HOST=node1
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

備註:
1、儘管曾經設定過JAVA_HOME,這裡仍然要設,否則啟動Spark服務時會報錯
2、HADOOP_CONF_DIR,Hadoop配置檔案的位置。如果有這一項spark-shell啟動是會檢查hadoop的相關配置(HDFS與spark沒有必然的聯絡)
3、在不同的執行模式下,配置不同的選項。在spark-env.sh檔案頭部中有較為詳細的說明,可以參考

配置檔案 spark-defaults.conf

spark.master spark://node1:7077
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 512m
spark.cores.max 6
在這裡插入圖片描述
備註:
1、這裡是一個最簡單的配置,適用於我們的測試環境。
2、spark.cores.max:為應用程式分配的最大CPU核心數。

配置檔案 slaves、log4j.properties

slaves檔案的作用和內容與hadoop中的完全一致。指定worker節點的主機,直接新增worker節點主機名即可。

log4j.properties.template改名為log4j.properties即可。

備註:
level是日誌記錄的優先順序,分為:OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL
Log4j建議只使用四個級別,優先順序從低到高分別是:DEBUG,INFO,WARN,ERROR

變數設定的優先順序:
程式設定 > spark-submit --選項 > spark-defaults.conf 配置 >
spark-env.sh配置 > 預設值
Spark服務啟停命令
1、在主節點啟動所有服務(包括slave節點,需要做免密碼登入)
start-all.sh stop-all.sh
與hadoop的命令有衝突,需要調整

2、逐一啟動主節點、從節點(在不同的節點上發指令)
start-master.sh | stop-master.sh
slave.sh spark://node1:7077

3、一次啟停全部的從節點
start-slaves.sh | stop-slaves.sh

備註:
以上命令成對出現,有start一般就有stop

4、spark-daemon.sh
spark-daemon.sh start org.apache.spark.deploy.master.Master
spark-daemon.sh stop org.apache.spark.deploy.master.Master
spark-daemon.sh status org.apache.spark.deploy.master.Master
備註:很少使用

Spark安裝檢查

1、能在主從節點啟動相應服務(啟動後用jps檢查)
start-dfs.sh / stop-dfs.sh
start-all.sh / stop-all.sh

2、spark的日誌檔案
預設位置$SPARK_HOME/logs/

3、進入spark-shell,執行命令
spark-shell --master yarn-client
4、Web UI
http://node1:8080/
不要從windows的IE中連線linux主機檢視。就在Linux環境中檢視

5、run example
run-example SparkPi 10
需要啟動hdfs、spark;同時檢查二者的安裝是否正確