我的集群上安装了ClouderaHadoop版本4。它与googleprotobufferjar版本2.4一起打包。在我的应用程序代码中,我使用protobufferversion2.5编译的protobuffer类。这会导致在运行时出现未解决的编译问题。有没有办法用一个外部jar运行map reduce作业,或者在cloudera升级他们的服务之前我是不是一直被卡住了?谢谢。
bmvo0sr51#
是的,你可以用外部jar管理乔布斯先生。请确保将任何依赖项添加到 HADOOP_CLASSPATH 以及 -libjars 在提交类似以下示例的作业时:您可以使用以下命令来添加当前和 lib 目录:
HADOOP_CLASSPATH
-libjars
lib
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`echo *.jar`:`echo lib/*.jar | sed 's/ /:/g'`
记住,当你通过 hadoop jar 您还需要通过使用 -libjars . 我喜欢用:
hadoop jar
hadoop jar <jar> <class> -libjars `echo ./lib/*.jar | sed 's/ /,/g'` [args...]
注:以下为 sed 命令需要不同的分隔符;这个 HADOOP_CLASSPATH 是 : 分居 -libjars 我需要 , 分开了。编辑:如果您需要首先解释类路径,以确保您的jar(而不是预打包的jar)是被使用的jar,那么可以设置以下内容: export HADOOP_USER_CLASSPATH_FIRST=true
sed
:
,
export HADOOP_USER_CLASSPATH_FIRST=true
1条答案
按热度按时间bmvo0sr51#
是的,你可以用外部jar管理乔布斯先生。
请确保将任何依赖项添加到
HADOOP_CLASSPATH
以及-libjars
在提交类似以下示例的作业时:您可以使用以下命令来添加当前和
lib
目录:记住,当你通过
hadoop jar
您还需要通过使用-libjars
. 我喜欢用:注:以下为
sed
命令需要不同的分隔符;这个HADOOP_CLASSPATH
是:
分居-libjars
我需要,
分开了。编辑:如果您需要首先解释类路径,以确保您的jar(而不是预打包的jar)是被使用的jar,那么可以设置以下内容:
export HADOOP_USER_CLASSPATH_FIRST=true