Linux 在hadoop作业中修改LD_库路径JAVA_库和类路径

Linux 在hadoop作业中修改LD_库路径JAVA_库和类路径,linux,apache,hadoop,classpath,hdfs,Linux,Apache,Hadoop,Classpath,Hdfs,在集群上运行hadoop作业之前,我需要修改LD_LIBRARY_PATH JAVA_LIBRARY_PATH和CLASSPATH。在LD_LIBRARY_PATH和JAVA_LIBRARY_PATH中,我需要添加运行作业时所需的一些JAR的位置,因为这些JAR在我的集群中可用,类似于CLASSPATH 我有一个3节点的集群,我需要修改所有3个数据节点的LD_LIBRARY_路径和CLASSPATH,这样可以将集群节点上可用的jar添加到CLASSPATH中,以便在运行作业时可以使用以下jar,

在集群上运行hadoop作业之前,我需要修改LD_LIBRARY_PATH JAVA_LIBRARY_PATH和CLASSPATH。在LD_LIBRARY_PATH和JAVA_LIBRARY_PATH中,我需要添加运行作业时所需的一些JAR的位置,因为这些JAR在我的集群中可用,类似于CLASSPATH

我有一个3节点的集群,我需要修改所有3个数据节点的LD_LIBRARY_路径和CLASSPATH,这样可以将集群节点上可用的jar添加到CLASSPATH中,以便在运行作业时可以使用以下jar,因为我在运行作业时避免jar分发,以使用集群节点上所有可用的jar。我已经尝试了下面给出的选项

1.我已经尝试修改hadoop-env.sh来修改类路径

export HADOOP_TASKTRACKER_OPTS="-classpath:/opt/oracle/oraloader-2.0.0-2/jlib/
但是上面的内容修改的是HADOOP_类路径,而不是类路径

export HADOOP_TASKTRACKER_OPTS="-classpath:/opt/oracle/oraloader-2.0.0-2/jlib/
  • 对于LD_LIBRARY_PATH和JAVA_LIBRARY_PATH,我已经厌倦了在mapred-site.xml中添加下面给定的属性,建议使用my place,但这不起作用

    mapred.child.env

    JAVA\u LIBRARY\u PATH=/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/

    用户为任务跟踪器子进程添加了环境变量。示例:1)A=foo这将环境变量A设置为foo 2)B=$B:c这是继承tasktracker的B环境变量。

  • 我还重新启动了所有3个数据节点、所有tasktrakers和2个NAMENOdes。但是这些变量没有设置,我的hadoop作业无法找到运行测试所需的所有jar文件

    错误日志::

    错误:java.lang.ClassNotFoundException: oracle.i18n.text.OraDateFormat位于 java.net.URLClassLoader$1.run(URLClassLoader.java:202)


    当我在集群节点上回显HADOOP_类路径时,运行HADOOP作业所需的所有操作都会出现。但我认为以下jar需要添加到JAVA_LIBRARY_PATH中,但它不会出现。

    不要重新发明轮子

    如果您的实现使用
    ToolRunner
    (如果您在Java中实现map reduce,您确实应该使用它),那么您可以使用
    -libjars jar1、jar2
    将JAR发送到集群


    查看Tom White的“Hadoop:权威指南”中的“侧数据分发”部分。

    嗨,Yevgen,我想-libjars会将jar复制到集群,并复制到分布式缓存,因为我不想发送jar,相反,我想使用集群节点上已经存在的JAR,例如:假设我有目录/dir1/dis2/*其中运行hadoop作业所需的所有JAR都存在于集群节点上。我想将这些JAR添加到类路径中,以便这些JAR可用。@AshishSharma首先将JAR复制到HDFS中,并通过@LorandBendig将它们添加到jobrunner类中的类路径中。我无法访问实际代码,因此无法修改您提到的类。我只是有一个命令,可以在集群节点上运行hadoop作业。在运行hadoop作业时,我需要添加一些集群节点上可用的jar。@AshishSharma我不知道如何在运行作业时添加jar。另一种选择是将JAR复制到所有节点上的$HADOOP_HOME/lib并重新启动集群我的理解是HADOOP-env.sh是调整HADOOP集群的CLASSPATH/LD_LIBRARY_路径设置的好地方(由管理员提供)我不确定原因,但您之前的问题是,我的答案被转移到超级用户:@ChrisWhite我已经尝试了以下方法,以便在运行作业时可以使用这些jar。你能建议我该怎么解决这个问题吗。