温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

修改hadoop脚本改变CLASSPATH中jar加载顺序

发布时间:2020-06-23 15:35:47 来源:网络 阅读:3108 作者:rumeng_you 栏目:大数据

    先说一下环境,有两个集群,一个新的一个旧的,打算把新的调试好然后把旧的关掉。

    新:Cloudera Express 5.6.0,CDH-5.6.0

    旧: Cloudera Express 5.0.5,CDH-5.0.5

    新集群搭建过程中发现一个问题,执行以下命令对lzo文件创建索引,在新集群中job无法提交到指定队列,同样的命令在旧集群中正常:

     hadoop jar hadoop-lzo.jar com.hadoop.compression.lzo.DistributedLzoIndexer  -D mapreduce.job.queuename=copy  /data/lzodata/


    两个集群的配置区别在于,旧集群lzo的配置一个是手动的,新集群是用GPLEXTRAS的parcel包配置的。

用GPLEXTRAS配置的新集群默认吧lzo的jar包加载到hadoop  classpath路径中了,导致的结果是DistributedLzoIndexer  提交不到正确的队列。

    因为新版版的hadoop-lzo.jar中

    com.hadoop.compression.lzo.DistributedLzoIndexer 修改了获取Configuration的方式

     Configuration conf = new Configuration();                                                  Job job = new Job(conf );   

    旧版本中为

    Job job = new Job(getConf());                                                              

    修改了源码,然后重新上传到提交job的服务器,只在提交job的时候起作用。                                                  

    修改脚本的位置,修改前请做好备份:

    /opt/cloudera/parcels/CDH-5.6.0-1.cdh6.6.0.p0.45/lib/hadoop/bin

    修改脚本中 export CLASSPATH=/opt/cloudera/userlib/hadoop-lzo.jar:$CLASSPATH


    上面的/opt/cloudera/userlib/hadoop-lzo.jar为想要加载的路径



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI