在hadoop作业中修改ld\u library\u path java\u library和classpath

nmpmafwu  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(371)

在集群上运行hadoop作业之前,我需要修改ld\u library\u path java\u library\u path和classpath。在ld\u library\u path和java\u library\u path中,我需要添加运行作业时所需的一些jar的位置,因为这些jar在我的集群中可用,类似于classpath。
我有一个3节点的集群,我需要修改所有3个数据节点的ld\u library\u路径和类路径,这样可以将集群节点上可用的jar添加到类路径中,这样在运行作业时可以使用下面的jar,因为我在运行作业时避免jar分发,以使用集群节点上所有可用的jar。我试过下面的选项
1.我尝试过修改hadoop-env.sh来修改类路径

export HADOOP_TASKTRACKER_OPTS="-classpath:/opt/oracle/oraloader-2.0.0-2/jlib/

但是上面的东西修改hadoop\u类路径而不是类路径
对于ld\u library\u path和java\u library\u path,我已经厌倦了在mapred-site.xml中添加下面的属性,建议使用my place,但这不起作用。
<属性>
mapred.child.env
java库路径=/opt/oracle/oraloader-2.0.0-2/lib/
ld\u library\u path=$ld\u library\u path:/opt/oracle/oraloader-2.0.0-2/lib/
用户为task tracker子进程添加了环境变量。示例:1)a=foo这将把env变量a设置为foo 2)b=$b:c这是inherit tasktracker的b env变量/说明>

我还重新启动了所有3个数据节点、所有tasktrakers和2个NameNode。不过,这些变量没有设置,我的hadoop作业无法找到运行测试所需的所有jar文件。
错误日志:
错误:java.lang.classnotfoundexception:oracle.i18n.text.oradateformat at at java.net.urlclassloader$1.run(urlclassloader)。java:202)
当我在集群节点上回显hadoop\u类路径时,运行hadoop作业所需的所有资源都将到来。但我认为以下jar需要添加到java\u library\u path中,但它不会出现。

r1zk6ea1

r1zk6ea11#

不要重新发明轮子。
如果您的实现使用 ToolRunner (如果您在java中实现map reduce,那么您真的应该使用它)然后您可以使用 -libjars jar1,jar2 把你的jar运到集群。
查看tom white的“hadoop:最终指南”中的“side data distribution”部分。

相关问题