hadoop—将JAR添加到启动map reduce作业的代码的类路径中

moiiocjp  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(284)

我正在尝试从实现工具接口的应用程序启动map reduce作业。应用程序很少做其他事情,比如map reduce作业的前提条件。
这个类使用一些第三方lib,如何在运行jar时使用命令hadoopjar[args]将这些jar添加到类路径中
在cloudera的帖子中,我尝试将hadoop\u classpath env var设置为第三方jar,但没有成功。上面提到的第三方jar仅是启动作业的类所需,而不是mapper/reducer类所需。所以我不需要把它们放在分布式缓存中。
当我在$hadoop\u home/lib下复制这些我需要的第三方jar时,它可以工作,但是我需要一个更干净的解决方案。
谢谢你的关心。
注意-我知道将所有第三方jar放在my-map-reduce-job.jar的lib目录中是可行的,但是我没有这个自由,jar是使用maven创建的,我希望这些第三方jar在my-map-reduce-job.jar之外

whhtz7ly

whhtz7ly1#

为了将来的参考-在启动map reduce作业的客户机上设置env var hadoop\u classpath是一个不错的选择。
我发现我的错误,我以错误的方式导出hadoop\u类路径。jar之间的分隔符依赖于平台,对于unix,它的冒号(:)
导出hadoop\u classpath=/path/to/my/jar1:/path/to/my/jar2,然后导出hadoop jar[mainclass][args]
如果hadoop\u classpath env var已经在别处预定义,那么您可能需要将jar附加到它。export hadoop\u classpath=$hadoop\u classpath:/path/to/my/jar1:/path/to/my/jar2

相关问题