在集群上运行 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</名称>
<value>JAVA_LIBRARY_PATH=/opt/oracle/oraloader-2.0.0-2/lib/</value>
<value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/oraloader-2.0.0-2/lib/</value>
<描述>用户为任务跟踪器子进程添加了环境变量。示例: 1) A=foo 这会将环境变量 A 设置为 foo 2) B=$B:c 这是继承 tasktracker 的 B 环境变量。</说明>
</属性>
我还重新启动了所有 3 个数据节点、所有 tasktraker 和 2 个 NAMENOdes。仍然没有设置这些变量,我的 hadoop 作业无法找到运行测试所需的所有 jar 文件。
错误日志::
错误:java.lang.ClassNotFoundException: oracle.i18n.text.OraDateFormat at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
当我在集群节点上回显 HADOOP_CLASSPATH 时,运行 hadoop 作业所需的所有内容都即将到来。但我认为需要在 JAVA_LIBRARY_PATH 中添加以下罐子,但它不会出现。