hadoop设置的类路径在哪里? 当我运行下面的命令时,它给了我类路径。类路径设置在哪里?
bin/hadoop classpath
我使用hadoop 2.6.0
答案 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
)进行编辑并添加以下内容:
HADOOP_HOME="/usr/local/Cellar/hadoop"
然后替换为您自己的路径 导出 HADOOP_CLASSPATH=$(find $HADOOP_HOME -name '*.jar' | xargs echo | tr ' ' ':')
保存更改并重新加载。
来源 ~/.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