如何将jar添加到类路径中并在不重新启动hadoop集群的情况下生效?

时间:2011-11-18 04:53:22

标签: hadoop jar classpath

我写了一些引用一些外部罐子的mapreduce个工作。 所以我将它们添加到“正在运行”的集群的CLASSPATH中以便运行作业。

一旦我尝试运行它们,我就找到了类未找到的异常。 我用Google搜索了修复它的方法,我发现我需要重新启动群集才能应用 改变了的CLASSPATH,它实际上有效。

哦,好吧! 每次将新的jar添加到CLASSPATH中时,我是否真的需要重新启动集群? 我不认为这是有道理的。

有没有人知道如何在不重新启动的情况下应用更改?


我想我需要添加一些细节来征求你的意见。

我编写了一个自定义hbase过滤器类并将其打包在一个jar中。 我写了一个mapreduce作业,它使用自定义过滤器类并将其打包在另一个jar中。 因为过滤器类jar不在我的“运行”集群的类路径中,所以我添加了它。 但在重新启动集群之前,我无法成功运行该作业。

当然,我知道我可以将过滤器类和作业打包在一个罐子里。 但我不是故意的。 我很好奇如果我需要添加新的外部罐子,我应该重新启动集群吗?

2 个答案:

答案 0 :(得分:2)

检查Cloudera article是否包含作业所需的第三方库。选项(1)和(2)不需要重新启动群集。

答案 1 :(得分:-1)

您可以使用这样的系统将类名动态解析为接口类型以处理您的数据。

只需2美分。