为hadoop设置的类路径在哪里

时间:2015-02-01 07:53:34

标签: hadoop mapreduce hadoop2

hadoop设置的类路径在哪里? 当我运行下面的命令时,它给了我类路径。类路径设置在哪里?

  bin/hadoop classpath

我使用hadoop 2.6.0

5 个答案:

答案 0 :(得分:4)

正如almas shaikh所说,它设置在hadoop-config.sh,但你可以在hadoop-env.sh

中添加更多的罐子

以下是来自hadoop-env.sh的相关代码,其中添加了其他jar,例如capacity-scheduler和aws jar's。

export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-"/etc/hadoop"}

# Extra Java CLASSPATH elements.  Automatically insert capacity-scheduler.
for f in $HADOOP_HOME/contrib/capacity-scheduler/*.jar; do
  if [ "$HADOOP_CLASSPATH" ]; then
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$f
  else
    export HADOOP_CLASSPATH=$f
  fi
done

# ... some other lines omitted

# Add Aws jar
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:share/hadoop/tools/lib/*

答案 1 :(得分:4)

打开您的bash个人资料(~/.profile~/.bash_profile)进行编辑并添加以下内容:

  1. 导出 HADOOP_HOME="/usr/local/Cellar/hadoop" 然后替换为您自己的路径
  2. 导出 HADOOP_CLASSPATH=$(find $HADOOP_HOME -name '*.jar' | xargs echo | tr ' ' ':') 保存更改并重新加载

  3. 来源 ~/.profile

答案 2 :(得分:2)

当您运行hadoop命令时,它会通过选择驻留在各种目录中的jar来获取驻留在hadoop-config.sh中的文件$HADOOP_HDFS_HOME/libexec,该文件设置您的类路径(CLASSPATH)。

$HADOOP_HDFS_HOME/share/hadoop/mapreduce 
$HADOOP_HDFS_HOME/share/hadoop/common
$HADOOP_HDFS_HOME/share/hadoop/hdfs etc.

答案 3 :(得分:0)

根据this blog post,它位于名为HADOOP_CLASSPATH的环境变量中。您可以像设置任何其他环境变量一样设置它,具体取决于您使用的shell。如果您使用bash,则可以调用export HADOOP_CLASSPATH=/path/to/wherever:/path/to/wherever/else

答案 4 :(得分:0)

我也遇到了这个问题,已经解决了,但是我的hadoop版本是2.10.1。

我希望它对使用较新 hadoop 版本的人有所帮助。到目前为止,以下方法在最新的 hadoop 3.3.0 版本中应该也能正常工作。

您只需要编辑您的 .bashrc.profile,我将举例说明 .bashrc

# edit .bashrc
$ vim ~/.bashrc

HADOOP_HOME 中添加 PATH、hadoop bin direcotry 的 HADOOP_CLASSPATH.bashrc

# export HADOOP_HOME=${your hadoop install directory}, an example as follows:

export HADOOP_HOME=/usr/local/hadoop-2.10.1

export PATH=${HADOOP_HOME}/bin:${PATH}

export HADOOP_CLASSPATH=`hadoop classpath`

那么,

$ source ~/.bashrc