spark叢集部署
1、背景知識
Spark有3種叢集部署模式,分別是Standalone、Mesos和YARN,這3種模式都屬於master/slave模式。
-
Standalone獨立模式,Spark 原生的簡單叢集管理器, 自帶完整的服務, 可單獨部署到一個叢集中,無需依賴任何其他資源管理系統, 使用 Standalone 可以很方便地搭建一個叢集,一般在公司內部沒有搭建其他資源管理框架的時候才會使用。
-
Mesos模式,一個強大的分散式資源管理框架,它允許多種不同的框架部署在其上,包括 yarn,由於mesos這種方式目前應用的比較少,這裡沒有記錄mesos的部署方式。
-
YARN模式: 統一的資源管理機制, 在上面可以執行多套計算框架, 如map reduce、storm 等, 根據 driver 在叢集中的位置不同,分為 yarn client 和 yarn cluster。
由於在實際工廠環境下使用的絕大多數的叢集管理器是 Hadoop YARN,因此我們關注的重點是 Hadoop YARN 模式下的 Spark 叢集部署。
2、使用軟體及其版本
環境
虛擬機器:VirtualBox 6.0.24 r139119
Linux:CentOS 7
Windows:Windows10
軟體
Spark
工具
遠端連線工具:XShell6
SFTP工具:FileZilla3.33.0
3、目標
-
Spark叢集部署
4、操作步驟
-
下載Spark
在Spark官網
`http://spark.apache.org/downloads.html
由於前面使用的hadoop是hadoop2.6的cdh5.7版本,官網並沒有直接提供,只能在官網下載二進位制的版本,進行重新編譯
-
安裝Spark
Spark On YARN模式中無須單獨部署Spark叢集,其本質是將Spark程式提交到Hadoop叢集的YARN中執行,此時的Spark只作為提交程式的客戶端,由於前面已經部署好了Hadoop高可用叢集,所以只需要在master節點部署即可
-
上傳spark安裝包到master節點,解壓安裝,使用命令
tar -zxvf spark-2.4.7-bin-hadoop2.6.tgz -C ~/app/
-
修改配置檔案
進入spark安裝目錄下的conf目錄
-
修改spark-en.sh檔案,使用命令
cp spark-env.sh.template spark-env.sh
複製spark-env.sh檔案,進行編輯,使用命令
sudo vi spark-env.sh
在末尾新增配置資訊
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_131
export HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop -
修改master主機中hadoop目錄中的/etc/hadoop下的yarn-site.xml,使用命令
sudo vi yarn-site.xml
新增配置內容內容
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>-
yarn.nodemanager.pmem-check-enabled:是否啟動一個執行緒檢查每個任務正使用的實體記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true
-
yarn.nodemanager.vmem-check-enabled:是否啟動一個執行緒檢查每個任務正使用的虛擬記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true
-
-
分發yarn-site.xml到slave01,slave02,使用命令
scp yarn-site.xml hadoop@slave01:~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
scp yarn-site.xml hadoop@slave02:~/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
-
-
修改環境變數
使用命令
sudo vi /etc/profile
新增配置資訊
export SPARK_HOME=/home/hadoop/app/spark-2.4.7-bin-hadoop2.6
export PATH=$SPARK_HOME/bin:$PATH使用
source /etc/profile
命令,使配置生效。 -
驗證
使用yarn方式啟動spark,使用命令:
spark-shell --master yarn --deploy-mode client
,進入spark-shell互動介面可以看到使用的yarn方式,spark版本是2.4.7,scala的版本是2.11.12,顯示上述介面,表示Spark on Yarn 部署成功!
-
Spark叢集測試
-
使用Spark官方提供的示例SparkPi,進行叢集測試,驗證spark任務是否可以成功提交到yarn中執行,使用命令:
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 2g \
--executor-memory 1g \
--executor-cores 1 \
/home/hadoop/app/spark-2.4.7-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.4.7.jar 10-
--class:呼叫最後一行中jar包指定類。
-
--master yarn:指定spark任務提交到yarn執行。
-
deploy-mode cluster:指定spark on yarn的執行模式為client,便於檢視輸出結果。
-
driver-memory 2g:指定每個Driver的可用記憶體為2GB。
-
executor-memory 1g:指定每個Executor的可用記憶體為1GB。
-
executor-cores 1:指定每個Executor使用cup的核心數為一
-
執行完上述命令後,在瀏覽器輸入
http://192.168.137.2:8088
檢視yarn管理介面可以看到任務已經提交到yarn叢集之上。
點選任務ID,進入介面
點選
logs
連結,進入介面點選輸出日誌
可以看到輸出結果
-
-
5、總結