【问题标题】:Running a Hadoop job from a Java Program从 Java 程序运行 Hadoop 作业
【发布时间】:2012-12-18 11:18:45
【问题描述】:

我正在编写一个分布式系统,但在将其连接到 Hadoop 时遇到了问题。这是我的情况:

1) 我有一个在 3 台计算机(sys1、sys2、sys3)上运行的分布式系统

2) Sys2 和 Sys3 是两个不同 Hadoop 集群的主节点。这两个 Hadoop 集群互不相连,各自独立运行。

3) 我的分布式系统包含三个部分(p1、p2、p3)。

P1 位于 sys1 上,从客户端(客户端是另一个系统)接收 Mappers/Reducers 的源代码。然后 P1 将联系 P2 或 P3 并向他们发送映射器/减速器的代码。

4)现在的问题是 P2 或 P3 需要在 Hadoop 上运行作业并将结果发送回 P1。

我使用 hadoop 已经有一段时间了,知道如何编写一个简单的 mapReduce 程序,将其转换为 JAR 文件并在 Hadoop 上执行。问题是,在我的情况下,mapReduce 作业的源代码是在执行期间发送的,我无法从中制作 JAR 文件。我需要从收到的代码中制作一个 hadoop 作业并在 hadoop 中运行它。如果您有任何关于如何解决此问题的建议/建议,我将不胜感激?

PS。我知道一种解决方案是将接收到的 map/Reduce 代码写入磁盘上的文件,执行所有必需的命令来制作 JAR 文件并从我的 Java 代码(使用运行时实例)中的 shell 中运行作业和.. . 但我更喜欢能够直接从我的 Java 代码运行作业,而不是经历上述解决方案的所有可能麻烦。

【问题讨论】:

    标签: java hadoop mapreduce


    【解决方案1】:

    使用JavaCompiler API 怎么样?然后,您可以使用JarOuptputStream 轻松创建一个 jar 文件

    这是一篇很好的博客文章,解释了 API: JavaBeat

    【讨论】:

    • 编译该 jar 之后,this answer 应该有助于通过 Hadoop 的 Java API 运行作业。
    • 谢谢大家。我终于能够成功地使用 JavaCompiler API 即时编译代码并从中生成 JAR 文件。谢谢
    猜你喜欢
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多