【Spark】Ubuntu16.04 spark 叢集安裝 (standalone模式)
一、前言
目前 Apache Spark 支援三種分散式部署方式,分別是:
- standalone
- spark on mesos
- spark on YARN
其中,第一種類似於MapReduce 1.0所採用的模式,內部實現了容錯性和資源管理,後兩種則是未來發展的趨勢,部分容錯性和資源管理交由統一的資源管理系統完成:讓Spark執行在一個通用的資源管理系統之上,這樣可以與其他計算框架,比如MapReduce,公用一個叢集資源,最大的好處是降低運維成本和提高資源利用率(資源按需分配)。
具體的區別這裡先不討論,本篇主要介紹 standalone 模式的叢集搭建。
二、準備機器
192.168.11.72 master
192.168.11.73 spark1
192.168.11.74 spark2
192.168.11.75 spark3
192.168.11.76 spark4
將上述對映關係分別儲存到 每臺機器的 /etc/hosts 檔案中。
三、建立 spark 使用者,配置免密登入
建立 spark 使用者:
sudo adduser spark
設定好密碼後一路回車即可。
然後配置免密登入:
四、安裝 JDK
給所有的機器都安裝好 jdk,配置好環境變數:
vi ~/.bashrc ``` export JAVA_HOME=/usr/local/jdk1.8.0_181 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH ```
source ~/.bachrc 後可以驗證:
java -version
```
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
```
五、具體安裝步驟
5.1、下載 Spark 安裝包
將下載好的安裝包上傳到 master:192.168.11.72。
解壓:
tar -zxvf spark-2.3.1-bin-hadoop2.7.tgz -C /home/spark/ mv spark-2.3.1-bin-hadoop2.7 spark
5.2、配置 spark
進入 spark conf 配置目錄下:
cd /home/spark/spark/conf/
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
在該檔案下新增:
export JAVA_HOME=/usr/local/jdk1.8.0_181
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
SPARK_MASTER_IP 指明主節點。
mv slaves.template slaves
vi slaves
在該檔案中新增子節點所在的位置(Worker節點):
spark1
spark2
spark3
spark4
5.3 節點複製
配置好 spark 後,將整個 spark 目錄拷貝到其他節點上(注意節點的路徑必須和master一樣,否則master啟動叢集回去從節點中對應目錄中去啟動 work,不一致會報 No such file or directory)。
scp -r /home/spark/spark [email protected]:/home/spark
scp -r /home/spark/spark [email protected]:/home/spark
scp -r /home/spark/spark [email protected]:/home/spark
scp -r /home/spark/spark [email protected]:/home/spark
5.4 啟動節點
接著就可以啟動了:在 master 節點,執行 spark 目錄下 sbin 目錄下的 start-all.sh 指令碼即可:
/home/spark/spark/sbin/start-all.sh
可見 spark 的啟動與 hadoop 無關,如果是採取 spark on YARN 的模式,則需要啟動 yarn 叢集。
啟動後執行 jps 命令,主節點上有 Master 程序,其他子節點上有 Work 程序,也可以登入 Spark 管理介面檢視叢集狀態:http://master:8080/
六、執行 spark 自帶的例子
/home/spark/spark/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/home/spark/spark/examples/jars/spark-examples_2.11-2.3.1.jar 100
- –class 應用程式的主類,含包名
- –master master 的地址,提交任務到哪裡執行
- –executor-memory 每個 executor 的記憶體
- –total-executor-cores 所有 executor 總共的核數(僅僅在 mesos 或者 standalone 下使用)
- –executor-core 每個 executor 的核數(僅僅在 mesos 或者 standalone 下使用)