Spark on Yarn模式下的配置
spark-env.sh配置如下,standalone deploy mode部署模式下忽略
export JAVA_HOME=/usr/jdk64/jdk
export SPARK_HOME=/opt/spark
# Options read in YARN client/cluster mode
export SPARK_CONF_DIR=/opt/spark/conf
export HADOOP_CONF_DIR=/etc/hadoop/conf
export YARN_CONF_DIR=/etc/hadoop/conf
export SPARK_EXECUTOR_CORES=1
export SPARK_EXECUTOR_MEMORY=2G
export SPARK_DRIVER_MEMORY=1G
export SPARK_LOG_DIR=/data0/logs/spark2
spark-defaults.conf文件配置
spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir hdfs:///spark2-history/
spark.history.fs.logDirectory hdfs:///spark2-history/
spark.history.provider org.apache.spark.deploy.history.FsHistoryProvider
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 1g
spark.eventLog.compress true
spark.driver.extraJavaOptions -Dhdp.version=2.3.4.0-3485
spark.yarn.am.extraJavaOptions -Dhdp.version=2.3.4.0-3485
spark.yarn.preserve.staging.files true #job結束後,stage相關的文件保留
spark.yarn.historyServer.address s10-hadoop:18080 #RM UI連接到history server UI上
本次依賴的Hadoop的是hdp的版本,出現部分問題
1. 隨後提交Spark Pi測試yarn-cluster模式時,報錯Spark Job Failing "Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster"
原因爲yarn在upload相關jar時,本地jar名稱出現${hdp.version}無法識別導致
添加如下配置
# spark-conf.default中添加hdp.version參數
spark.driver.extraJavaOptions -Dhdp.version=2.3.4.0-3485
spark.yarn.am.extraJavaOptions -Dhdp.version=2.3.4.0-3485
# SPARK_HOME/conf目錄下新建java-opts文件,添加
-Dhdp.version=2.3.4.0-3485
最後再次測試Spark Pi在yarn-cluster模式運行通過
2. 支持spark-sql讀取hive數據
在SPARK_CONF_DIR下 添加了軟鏈(不是copy)hive-site.xml 指向原生hive配置文件,有變化也會自動同步
3. 在讀取hive表進行spark-sql計算時,報Class com.hadoop.compression.lzo.LzoCodec not found
hadoop-lzo此處暫時默認安裝,不在具體描述
在spark-env.sh中制定hadoop-lzo目錄路徑
export SPARK_DIST_CLASSPATH=$SPARK_DIST_CLASSPATH:/usr/hdp/2.3.4.0-3485/hadoop/lib/*
SPAKR_DIST_CLASSPATH配置jar 對driver、executor均作用
參考: