前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住给大家分享一下。点击跳转到网站:https://www.captainai.net/dongkelun
前言
YARN 是在Hadoop 2.0 中引入的集群管理器,它可以让多种数据处理框架运行在一个共享的资源池上,并且通常安装在与Hadoop 文件系统(简称HDFS)相同的物理节点上。在这样配置的YARN 集群上运行Spark 是很有意义的,它可以让Spark 在存储数据的物理节点上运行,以快速访问HDFS 中的数据。
1、配置
1.1 配置HADOOP_CONF_DIR
1 | vim /etc/profile |
1 | export HADOOP_CONF_DIR=/opt/hadoop-2.7.5/etc/hadoop |
1 | source /etc/profile |
1.2 命令行启动
1 | spark-shell --master yarn |
但是在spark2.x里会报一个错误
1 | 18/04/16 07:59:23 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable |
2、错误解决
2.1 添加spark.yarn.jars
首先看到第二条warn
1 | Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME. |
联想到是不是这条warn信息导致的,然后根据这条warn信息上网查了一下,再根据错误信息也查了一下
1 | Yarn application has already ended! It might have been killed or unable to ... |
发现,都是说要配置spark.yarn.jars,于是按照如下命令配置
1 | hdfs dfs -mkdir /hadoop |
在最下面添加:
1 | spark.yarn.jars hdfs://192.168.44.128:8888/hadoop/spark_jars/* |
(注意后面的*不能去掉)
然后启动spark-shell,发现还是报相似错误(没了warn)
2.2 配置hadoop的yarn-site.xml
因为java8导致的问题
1 | vim /opt/hadoop-2.7.5/etc/hadoop/yarn-site.xml |
添加:
1 | <property> |
再次启动spark-shell,成功!
3、意外之喜
由于要写博客记录,所以需要将错误还原,第一次只将spark.yarn.jars注释掉,启动spark-shell,发现是成功的,只是会有条warn而已,也就是说,这个错误的根本原因,是java8导致没有配置2.2中的yarn-site.xml!!
参考资料
https://blog.csdn.net/lxhandlbb/article/details/54410644
https://blog.csdn.net/gg584741/article/details/72825713