【发布时间】:2012-11-23 02:15:38
【问题描述】:
在集群上运行 hadoop 作业之前,我需要修改 LD_LIBRARY_PATH JAVA_LIBRARY_PATH 和 CLASSPATH。在 LD_LIBRARY_PATH 和 JAVA_LIBRARY_PATH 中,我需要添加一些运行作业时需要的 jar 的位置,因为这些 jar 在我的集群中可用,类似于 CLASSPATH。
我有一个 3 NODE 集群,我需要修改所有 3 个数据节点的 LD_LIBRARY_PATH 和 CLASSPATH,以便将集群节点上可用的 jar 添加到类路径中,以便在运行时可以使用以下 jar作业,因为我在运行作业以使用集群节点上所有可用的 jar 时避免 jar 分发。我已经尝试了以下给出的选项
1.我试过修改hadoop-env.sh来修改CLASSPATH
export HADOOP_TASKTRACKER_OPTS="-classpath:/opt/oracle/oraloader-2.0.0-2/jlib/
但上面的东西修改了 HADOOP_CLASSPATH 而不是 CLASSPATH
-
对于 LD_LIBRARY_PATH 和 JAVA_LIBRARY_PATH,我已经厌倦了在 mapred-site.xml 中添加下面给出的属性作为建议的我的位置,但这没有用。
mapred.child.env JAVA_LIBRARY_PATH=/opt/oracle/oraloader-2.0.0-2/lib/ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/oraloader-2.0.0-2/lib/
用户为任务跟踪器子进程添加了环境变量。示例: 1) A=foo 这会将环境变量 A 设置为 foo 2) B=$B:c 这是继承 tasktracker 的 B 环境变量。 描述>
我还重新启动了所有 3 个数据节点、所有 tasktraker 和 2 个 NAMENOdes。仍然没有设置这些变量,我的 hadoop 作业无法找到运行测试所需的所有 jar 文件。
错误日志::
错误:java.lang.ClassNotFoundException: oracle.i18n.text.OraDateFormat 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
当我在我的集群节点上回显 HADOOP_CLASSPATH 时,运行 hadoop 作业所需的所有内容都即将到来。但我认为需要在 JAVA_LIBRARY_PATH 中添加以下 jar,但它不会出现。
【问题讨论】:
-
我不知道为什么,但是你之前的问题和我的回答被转移到了超级用户:superuser.com/questions/513221/…
-
@ChrisWhite 我尝试了以下方法,以便在运行作业时可以使用这些罐子。你能否建议我应该做些什么来解决这个问题。
标签: linux apache hadoop classpath hdfs