消除spark on yarn的两处警告

1.导读

从spark官网中我们可看到spark running-on-yarn 上的话只需要将master指定为yarn即可,
但是在on yarn的时候,有可能会报出如下两处警告

  • 警告一:
18/12/25 00:34:51 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicabl
  • 警告二:
18/12/25 00:38:13 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.

下面我们就一次处理这两个警告

2.警告一

18/12/25 00:34:51 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicabl

由于上述warning并不能提供更多有效的信息,我们在启动hdfs的时候,需要增加debug信息:

export HADOOP_ROOT_LOGGER=DEBUG,console

具体日志,过长不全部显示,这里我截取中点内容

DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...
<span style="color:#FF0000;">16/07/05 15:33:55 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: no hadoop in java.library.path

具体原因是从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

 grep -R 'java.library.path' *
bin/yarn:  YARN_OPTS="$YARN_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH"
bin/yarn.cmd:    set YARN_OPTS=%YARN_OPTS% -Djava.library.path=%JAVA_LIBRARY_PATH%
etc/hadoop/yarn-env.sh:  YARN_OPTS="$YARN_OPTS -Djava.library.path=$JAVA_LIBRARY_PATH"
etc/hadoop/yarn-env.cmd:  set YARN_OPTS=%YARN_OPTS% -Djava.library.path=%JAVA_LIBRARY_PATH%
...

所以解决方案就出来了,只需要在环境变量中 增加 JAVA_LIBRARY_PATH 指向/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/lib/native 即可

vim  ~/.bash_profile
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native

重启hdfs没有问题,但是在sparkonyarn 提交作业的时候,还是存在
这里需要在 $SPARK_HOME/conf/spark-env.sh 增加 LD_LIBRARY_PATH 即可

vim $SPARK_HOME/conf/spark-env.sh 
export LD_LIBRARY_PATH=$JAVA_LIBRARY_PATH

3.警告二

18/12/25 00:38:13 WARN Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.

其实从删除警告中我们可以知道spark.yarn.jars 或者 spark.yarn.archive 没有设置,这处警告在spark on yarn中早有体现;
在这里插入图片描述

大致意思就是如果我们将spark应用程序提交到yarn上会从YARN端访问Spark运行时jar,name我们应该指定spark.yarn.archive或spark.yarn.jars。如果既未指定也spark.yarn.archive未spark.yarn.jars指定,Spark将创建一个包含所有jar的zip文件,$SPARK_HOME/jars并将其上载到分布式缓存。

在这里插入图片描述

这里的提交信息,和官网描述完全一致,所以,修改方法也就很简单了;在官方配置文件中有,对着两项配置的说明,只需要把 SPARK/jars 下的所有 jar包上传到 hdfs中 然后在 $SPARK/conf/ spark-defaults.conf 下面配置spark.yarn.jars hdfs://hostname:端口/上传的路径/*

在这里插入图片描述

具体步骤

hdfs dfs -mkdir -p /spark/jars
hdfs dfs -put $SPARK_HOME/jars/  /spark/jars

在$SPARK_HOME/conf/spark-defaults.conf 增加配置
vim $SPARK_HOME/conf/spark-defaults.conf
spark.yarn.jars hdfs://hadoop000:9000/spark/jars/*  

再次提交作业,警告全无

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值