【问题标题】:How to add jars into the classpath and get effected without restarting the hadoop cluster?如何在不重新启动hadoop集群的情况下将jar添加到类路径中并生效?
【发布时间】:2011-12-31 22:52:23
【问题描述】:

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

当我尝试运行它们时,我得到了 class not found 异常。 我用谷歌搜索了修复它的方法,我发现我需要重新启动集群才能应用 更改后的 CLASSPATH,它确实有效。

哦,糟糕! 每次将新 jar 添加到 CLASSPATH 中时,我是否真的需要重新启动集群? 我认为这没有意义。

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


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

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

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

【问题讨论】:

    标签: hadoop jar classpath


    【解决方案1】:

    您可以拥有这样一个系统,将类名动态解析为接口类型来处理您的数据。

    只要我的 2 美分。

    【讨论】:

    • 对不起,我的错。我想我应该写详细信息。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      相关资源
      最近更新 更多