0

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

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

2) Sys2 和 Sys3 是两个不同 Hadoop 集群的 MasterNode。这两个 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 代码运行作业,而不是经历上述解决方案的所有可能麻烦。

4

1 回答 1

1

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

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

于 2012-12-18T11:42:35.173 回答