【问题标题】:Hadoop HADOOP_CLASSPATH issuesHadoop HADOOP_CLASSPATH 问题
【发布时间】: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 被忽略了。

【问题讨论】:

    标签: jar hadoop classpath


    【解决方案1】:

    如果允许设置HADOOP_CLASSPATH 那么

    export HADOOP_CLASSPATH=/path/to/jar/myjar.jar:$HADOOP_CLASSPATH; \
        hadoop fs -text /path/in/HDFS/to/my/file
    

    将完成这项工作。由于在您的情况下,此变量在hadoop-env.sh 中被覆盖,因此请考虑改用-libjars 选项:

    hadoop fs -libjars /path/to/jar/myjar.jar -text /path/in/HDFS/to/my/file
    

    或者手动调用FsShell

    java -cp $HADOOP_HOME/lib/*:/path/to/jar/myjar.jar:$CLASSPATH \
    org.apache.hadoop.fs.FsShell -conf $HADOOP_HOME/conf/core-site.xml \
    -text /path/in/HDFS/to/my/file
    

    【讨论】:

    • 是的,但是 hadoop 脚本会这样做:export HADOOP_CLASSPATH=$HADOOP_HOME/lib。它重写了我的 HADOOP_CLASSPATH
    • 正如我所说,我不想设置“分布式”类路径。我只想在客户端机器上设置类路径
    • @Razvan:好的。然后您可以手动调用 FsShell(参见上面的示例)。
    【解决方案2】:

    尝试将您的 jar 文件添加到默认的 CLASSPATH 变量中,并将 HADOOP_CLASSPATH 附加到它。 然后执行你的命令。

    export CLASSPATH=/your/jar/file/myjar.jar:$CLASSPATH:$HADOOP_CLASSPATH /path/to/hadoop/script fs -text /path/in/HDFS/to/my/file

    【讨论】:

    • hadoop 忽略默认的类路径变量
    【解决方案3】:

    如果有人想检查 hadoop 类路径,请在终端输入hadoop classpath
    要编译它,请使用:javac -cp $(hadoop classpath):path/to/jars/* java_file.java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多