如何在clouderahadoop中使用外部jar?

zbdgwd5y  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(413)

我的集群上安装了ClouderaHadoop版本4。它与googleprotobufferjar版本2.4一起打包。在我的应用程序代码中,我使用protobufferversion2.5编译的protobuffer类。
这会导致在运行时出现未解决的编译问题。有没有办法用一个外部jar运行map reduce作业,或者在cloudera升级他们的服务之前我是不是一直被卡住了?
谢谢。

bmvo0sr5

bmvo0sr51#

是的,你可以用外部jar管理乔布斯先生。
请确保将任何依赖项添加到 HADOOP_CLASSPATH 以及 -libjars 在提交类似以下示例的作业时:
您可以使用以下命令来添加当前和 lib 目录:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`echo *.jar`:`echo lib/*.jar | sed 's/ /:/g'`

记住,当你通过 hadoop jar 您还需要通过使用 -libjars . 我喜欢用:

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

相关问题