警告1
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
具体原因是从java.library.path处没有找到libhadoop.so,我们发现,libhadoop.so是存放在/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/native下的。
在hadoop包中搜索发现,java.library.path被定义为$JAVA_LIBRARY_PATH
vim ~/.bash_profile
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native
1.在环境变量中 增加 JAVA_LIBRARY_PATH 指向/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/native 即可
vim $SPARK_HOME/conf/spark-env.sh
export LD_LIBRARY_PATH=$JAVA_LIBRARY_PATH
2.重启hdfs没有问题,但是在sparkonyarn 提交作业的时候,还是存在
这里需要在 $SPARK_HOME/conf/spark-env.sh 增加 LD_LIBRARY_PATH 即可
警告2
WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
大致意思就是如果我们将spark应用程序提交到yarn上会从YARN端访问Spark运行时jar,name我们应该指定spark.yarn.archive或spark.yarn.jars。如果既未指定也spark.yarn.archive未spark.yarn.jars指定,Spark将创建一个包含所有jar的zip文件,$SPARK_HOME/jars并将其上载到分布式缓存。
hdfs dfs -mkdir -p /spark/jars
hdfs dfs -put $SPARK_HOME/jars/ /spark/jars
1.创建包含jar的hdfs目录
vim $SPARK_HOME/conf/spark-defaults.conf
spark.yarn.jars hdfs://hadoop000:9000/spark/jars/*
2.在spark的启动项里指定jar的路径