【发布时间】:2012-10-08 01:27:07
【问题描述】:
这个问题不是指在整个集群中分发 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 被忽略了。
【问题讨论】: