如何使用Hadoop的Cloudera的外部罐子?(how to use external jars

2019-09-26 13:19发布

我有一个了Cloudera的Hadoop版本4我的集群上安装。 它被打包与谷歌protobuffer罐子版本2.4。 在我的应用程序的代码我用protobuffer 2.5版编译protobuffer类。

这将导致在运行时尚未解决的编译问题。 有没有一种方法来运行图减少工作与外部罐子还是我坚持到了Cloudera升级他们的服务?

谢谢。

Answer 1:

是的,你可以运行与外部罐子MR工作。

务必将依赖同时添加到HADOOP_CLASSPATH-libjars在提交就像下面这个例子的工作:

您可以使用下面的方法从目前并添加所有的jar依赖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,分离。

编辑:如果您需要您的类路径中首先解释,以确保您的罐子(而不是预包装的罐子)是被使用的一个,你可以设置如下:

export HADOOP_USER_CLASSPATH_FIRST=true



文章来源: how to use external jars in Cloudera hadoop?