我写了一些引用一些外部罐子的mapreduce
个工作。
所以我将它们添加到“正在运行”的集群的CLASSPATH中以便运行作业。
一旦我尝试运行它们,我就找到了类未找到的异常。 我用Google搜索了修复它的方法,我发现我需要重新启动群集才能应用 改变了的CLASSPATH,它实际上有效。
哦,好吧! 每次将新的jar添加到CLASSPATH中时,我是否真的需要重新启动集群? 我不认为这是有道理的。
有没有人知道如何在不重新启动的情况下应用更改?
我想我需要添加一些细节来征求你的意见。
我编写了一个自定义hbase
过滤器类并将其打包在一个jar中。
我写了一个mapreduce
作业,它使用自定义过滤器类并将其打包在另一个jar中。
因为过滤器类jar不在我的“运行”集群的类路径中,所以我添加了它。
但在重新启动集群之前,我无法成功运行该作业。
当然,我知道我可以将过滤器类和作业打包在一个罐子里。 但我不是故意的。 我很好奇如果我需要添加新的外部罐子,我应该重新启动集群吗?
答案 0 :(得分:2)
检查Cloudera article是否包含作业所需的第三方库。选项(1)和(2)不需要重新启动群集。
答案 1 :(得分:-1)
您可以使用这样的系统将类名动态解析为接口类型以处理您的数据。
只需2美分。