这个问题并不是指在整个集群中分发 jar 以供工作人员使用。
它指的是在客户端机器上指定一些附加库。更具体地说:我正在尝试运行以下命令以检索 SequenceFile 的内容:
/path/to/hadoop/script fs -text /path/in/HDFS/to/my/file
它向我抛出了这个错误:text: java.io.IOException: WritableName can't load class: util.io.DoubleArrayWritable
我有一个名为 DoubleArrayWritable 的可写类。事实上,在另一台计算机上一切正常。
我尝试将 设置HADOOP_CLASSPATH
为包含包含该类但没有结果的 jar。实际上,运行时:
/path/to/hadoop/script classpath
结果不包含我添加到 HADOOP_CLASSPATH 的 jar。
问题是:在运行 hadoop 时如何指定额外的库(额外的意思是除了 hadoop 脚本在类路径中自动包含的库之外的其他库)
更多信息可能会有所帮助:
- 我不能修改 hadoop.sh 脚本(也不能修改任何相关的脚本)
- 无法将我的库复制到hadoop安装目录下的/lib目录下
- 在从 hadoop.sh 运行的 hadoop-env.sh 中有这一行:
export HADOOP_CLASSPATH=$HADOOP_HOME/lib
这可能解释了为什么我的 HADOOP_CLASSPATH env var 被忽略了。