Spark on Yarn配置Trouble shooting

Spark on Yarn配置和問題解決

軟件版本:

Nmae Version
hadoop 2.7.3
Scala 2.13.0
Spark 2.1.0

非常遺憾的發現,儘管是官方文檔也可能不靠譜,費了好大勁,終於把Spark on Yarn配置成功了。

遇到的主要的坑是,修改yarn-site.xml配置導致NodeManager沒有正常啓動,以及Spark-submit時出現ClosedChannelException錯誤。

NodeManager沒有正常啓動:

解決方式:

yarn-site.xml的配置仍然按照Haddop單機配置中的進行

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

在源代碼文檔中寫道:

Parameter Value Notes
yarn.nodemanager.aux-services mapreduce_shuffle Shuffle service that needs to be set for Map Reduce applications.

Spark官方文檔說需要更改屬性。但修改之後NodeManager不能正常啓動,原因不明,暫時放棄。

Spark-submit時出現ClosedChannelException錯誤

在Yarn正常啓動後,使用命令

spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
$SPARK_HOME/examples/jars/spark-examples_2.11-2.1.0.jar \
10

提交spark任務到yarn集羣上,出現運算失敗,經常報的錯誤是ClosedChannelException

stackoverflow查找到一個有效的解決方式:

首先更改yarn-env.sh和hadoop-env.sh中所有的HEAP_SIZE或類似的JAVA堆內存上限設置,默認是1000M,將它們提高到機器可以承受的相對較高的值。

其次,在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>

其他Spark配置和Hadoop配置:

$SPARK_HOME/conf/spark-env.sh中添加以下內容

export JAVA_HOME=/path/to/java
export SCALA_HOME=/path/to/scala
export HADOOP_HOME=/path/to/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

其他Spark和Hadoop配置如常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章