下載 App
如何搭建spark yarn 模式的集群集群。
搭建Spark on YARN集群的詳細步驟
Spark on YARN模式允許Spark作業在Hadoop YARN資源管理器上運行,利用YARN進行資源調度。以下是搭建步驟:
一、前提條件
已安裝并配置好的Hadoop集群(包括HDFS和YARN)
所有節點已配置SSH免密登錄
Java環境已安裝(建議JDK 8或11)
二、安裝Spark
1. ?https://downloads.apache.org/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz
tar -xzvf spark-3.3.2-bin-hadoop3.tgz
mv spark-3.3.2-bin-hadoop3 /opt/spark
2. 配置環境變量
在所有節點上編輯~/.bashrc或/etc/profile。
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
然后執行:
source ~/.bashrc
三、配置Spark on YARN
1. 配置spark-env.sh
cd $SPARK_HOME/conf
cp spark-env.sh.template spark-env.sh
編輯spark-env.sh,添加:
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_EXECUTOR_MEMORY=2g
export SPARK_DRIVER_MEMORY=1g
export SPARK_YARN_QUEUE=default
2. 配置spark-defaults.conf
cp spark-defaults.conf.template spark-defaults.conf
編輯spark-defaults.conf,添加:
spark.master ? ? ? ? ? ? ? ? ? ? yarn
spark.eventLog.enabled ? ? ? ? ? true
spark.eventLog.dir ? ? ? ? ? ? ? hdfs://namenode:8020/spark-logs
spark.history.fs.logDirectory ? ?hdfs://namenode:8020/spark-logs
spark.yarn.jars ? ? ? ? ? ? ? ? ?hdfs://namenode:8020/spark-jars/*
3. 上傳Spark依賴到HDFS
hdfs dfs -mkdir /spark-jars
hdfs dfs -put $SPARK_HOME/jars/* /spark-jars/
四、啟動服務
首先啟動Hadoop集群:
start-dfs.sh
start-yarn.sh
啟動Spark歷史服務器(可選):
$SPARK_HOME/sbin/start-history-server.sh
五、驗證安裝
提交一個測試作業:
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.3.2.jar 10
六、關鍵配置說明
部署模式:
client模式:Driver運行在提交作業的客戶端
cluster模式:Driver運行在YARN集群中
資源分配:
bash
spark-submit \
--master yarn \
--deploy-mode cluster \
--num-executors 4 \
--executor-memory 2g \
--executor-cores 2 \
your-application.jar
動態資源分配(在spark-defaults.conf中配置):
properties
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.minExecutors=1
spark.dynamicAllocation.maxExecutors=10
spark.dynamicAllocation.initialExecutors=2
七、常見問題解決
Classpath問題:確保HADOOP_CONF_DIR和YARN_CONF_DIR正確指向Hadoop配置目錄
權限問題:檢查HDFS目錄權限和YARN隊列權限
資源不足:調整spark.executor.memory和spark.executor.cores參數