1. 程式人生 > 其它 >Spark學習(三)Spark 分散式部署

Spark學習(三)Spark 分散式部署

一、Yarn 部署簡介

  Spark自身提供計算資源,無需其他框架提供資源。But 這種方式降低了和其他第三方資源框架的耦合性,獨立性非常強。請注意:Spark主要是計算框架,而不是資源排程框架,所以本身提供的資源排程並不是它的強項,所以還是和其他專業的資源排程框架整合會更靠譜一些。所以接下來我們來學習在強大的Yarn環境下Spark是如何工作的(其實是因為在國內工作中,Yarn使用的非常多)。


二、配置 yarn 模式 

1、環境準備

hui@hadoop302 spark_yarn]$ cp -r spark_bak/ spark_yarn

2、修改配置

修改hadoop配置檔案/opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml, 並分發

[hui@hadoop302 hadoop]$ cp yarn-site.xml yarn-site.xml_bak #備份原有配置
[hui@hadoop302 hadoop]$ vim yarn-site.xml
<!--是否啟動一個執行緒檢查每個任務正使用的實體記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property
> <!--是否啟動一個執行緒檢查每個任務正使用的虛擬記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property> [hui@hadoop302 hadoop]$ sxync yarn-site.xml
修改conf/spark-env.sh,新增JAVA_HOME和YARN_CONF_DIR配置
export JAVA_HOME=/opt/module/jdk1.8.0_212
YARN_CONF_DIR
=/opt/module/hadoop-3.1.3/etc/hadoop

3、啟動hadoop

[hui@hadoop302 conf]$ super.sh start

4、提交測試應用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
以叢集方式提交 --deploy-mode cluster \ 注意:yarn \ yarn 後面有個空格否則報錯:
Exception in thread "main" org.apache.spark.SparkException: Master must either be yarn or start with spark, mesos, k8s, or local
        at org.apache.spark.deploy.SparkSubmit.error(SparkSubmit.scala:936)
        at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:238)
        at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:871)
        at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
        at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
        at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
        at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:1007)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1016)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

 

 三、yarn模式配置歷史伺服器

1、修改spark-default.conf檔案,配置日誌儲存路徑
[hui@hadoop302 conf]$ cp spark-defaults.conf.template spark-defaults.conf
[hui@hadoop302 conf]$ vim spark-defaults.conf
spark.eventLog.enabled          true
spark.eventLog.dir              hdfs://hadoop302:8020/spark_logs
spark.yarn.historyServer.address=hadoop302:18080
spark.history.ui.port=18080
注意 日誌儲存在 hdfs 上,配置路徑必須存在 
hui@hadoop302 conf]$ hadoop fs -mkdir /spark_logs
[hui@hadoop302 conf]$ hadoop fs -ls /
Found 8 items
drwxr-xr-x   - hui supergroup          0 2021-11-24 22:44 /spark_logs
2、編輯spark-env.sh檔案, 新增日誌配置
#spark_log conf
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop302:8020/spark_logs
引數含義:
  1. 18080:WEBUI訪問的埠號為18080
  2. hdfs://hadoop302:8020/spark_logs指定歷史伺服器日誌儲存路徑
  3. 30:指定儲存Application歷史記錄的個數,如果超過這個值,舊的應用程式資訊將被刪除,這個是記憶體中的應用數,而不是頁面上顯示的應用數

分發配置

[hui@hadoop302 conf]$ sxync spark-env.sh
[hui@hadoop302 conf]$ sxync spark-defaults.conf

3、啟動歷史服務程序

hui@hadoop302 spark_yarn]$ sbin/start-history-server.sh
提交應用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10