Linux 在hadoop作业中修改LD_库路径JAVA_库和类路径
在集群上运行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来修改类路径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,
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/
当我在集群节点上回显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。你能建议我该怎么解决这个问题吗。