MapReduce程序通过-libjar参数指定第三方jar包,step by step 调试

hadoop 3.1.0

 

日常开发的程序,我们都是通过Maven管理相关jar包依赖,但有时一些第三方包没有提供maven源,只能手动管理jar包。

 

对于hadoop jar 使用第三方依赖的方式有很多:

参考:https://www.cnblogs.com/yyy-blog/p/10249646.html#_label1

https://www.iteye.com/blog/heipark-1299945

 

我们通常使用 -libjars 的参数方式

命令格式 hadoop jar xxx.jar xxclass -libjars a.jar,b.jar

 

那么hadoop jar命令说如何解析-libjars参数的呢?

 

hadoop提供了一个ToolRunner类来启动MapReduce程序,该ToolRunner类可以自动解析-libjars参数。

ToolRunner调用GenericOptionsParser解析参数

比如我们执行 hadoop jar xxx.jar xxclass -libjars a.jar,b.jar 1111 2222

可以看到xxclass后面的都是参数

后面GenericOptionsParser类通过方法parseGeneralOptions解析参数

接着会在parseGeneralOptions方法的最开始调用buildGeneralOptions方法,设置需要特殊解析的参数

 

 

接着调用 GnuParser.parse方法解析特殊的命令行参数

将-libjars 和 xxx.jar放到一个option里面

接着调用processGeneralOptions方法,解析libjars参数,

调用validateFiles方法获取jar的文件路径

提取jar包信息后,并设置Configuration 的tmpjars值。同时设置相应的ClassLoader。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值