前言
博主想要使用 Yarn 作为集群管理器启动 pyspark,但是一直没有启动成功。
捣鼓了两天,通过无数次百度终于解决了问题。
1. 报错
Spark版本:2.2.0
Hadoop版本:2.7.3
19/03/12 21:37:59 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Attempted to request executors before the AM has registered!
19/03/12 21:37:59 WARN MetricsSystem: Stopping a MetricsSystem that is not running
。。。。。。
2. 解决办法
- 确保在 HDFS 上有spark的jars文件目录
上传 jars 至 HDFS:
hdfs dfs -mkdir /spark_jars
hdfs dfs -put spark-2.0.2/jars/* /spark_jars
- 设置 spark-defaults.sh
文件末尾添加如下内容:
spark.yarn.jars=hdfs://master:9000/spark_jars/*
- 设置 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>
将该文件复制到各个子节点(没有尝试过只修改master节点是否有效)。
- 设置HADOOP_CONF_DIR (所有节点执行)
修改 ~/.bashrc 文件,末尾添加(路径根据自己机器修改):
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
source ~/.bashrc
- 重新启动所有的服务:
start-all.sh
spark-2.0.2/sbin/start-all.sh
- 使用 yarn 为集群管理器登录: