spark on yarn 执行遇到的一个问题

最近在学习spark,遇到了一个问题,也花费了一天时间去解决,问题如下:

Exception in thread “main” java.lang.RuntimeException: Error in configuring object
at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109)
at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75)
at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
在这里插入图片描述
在这里插入图片描述

说实话这个问题一开始我遇到有点懵逼,为什么呢,因为我一开始是在spark local模式下执行的一个程序,完全没有问题,但是来到spark on yarn 模式下就这样了。看日志说我缺失lzo的类,没有道理的,我cdh的hdfs其实已经配置了这个压缩格式了,然后我的yarn也有了,如下图:下图1 显示其实我已经配置了com.hadoop.compression.lzo.LzopCodec这种压缩格式了

在这里插入图片描述图1

然后我又去yarn配置上看一下,也配置了lzo
在这里插入图片描述

所以应该不是我的hdfs和yarn的问题,应该是我的spark没有这个类来进行解压缩,那我猜测应该要去spark的conf目录下配置一下,
当然怎么配我还是不清楚,所以也参考了很多文章,比如下面这篇文章
https://blog.csdn.net/stark_summer/article/details/48375999
写的很详细,我就配置了如下:
export SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/native

export SPARK_CLASSPATH=$SPARK_CLASSPATH:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/*

配置完继续跑程序,发现还会报错:
java.lang.UnsatisfiedLinkError: no gplcompression in java.library.path
在这里插入图片描述
这个问题也是尴尬,我也实在无奈了,一下子也看不懂,
找了好久终于发现一位大哥写的文章解决了我的疑惑:
https://www.cnblogs.com/LiuYanYGZ/p/6110822.html
原因如下:
Java一般使用两个path:classpath 和 java.library.path
classpath是指向jar包的位置
java.library.path是非java类包的位置如(dll,so)
解决办法:

第一种方法,在代码里设置环境变量

第二种方法:执行时在vm arguments里添加-Djava.library.path= /usr/local/lib,例如java -Djava.library.path=. xxx(xxx是某个类文件的名字,不包括后缀)

第三种方法:设置环境变量java.library.path

1:Linux下的系统变量LD_LIBRARY_PATH来添加java.library.path

2:Windows下设置哪个环境变量???

由于我的是在Linux环境下的,所以我的解决办法就是:添加系统变量LD_LIBRARY_PATH
所以最终要在spark-env.sh 下添加的是:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/native

export SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/native

export SPARK_CLASSPATH=$SPARK_CLASSPATH:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/*

OK,最终解决了我的问题了,不过花的时间也是多啊,本人小菜鸟一名,请多多指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值