2012-04-16 44 views
2

我有一个Java程序,我想从它发送任务(罐子)到远程 Hadoop。我需要将特殊参数传递给jar of course。
如果计算任务刚结束java程序必须知道这一点。如何运行计算并计算远程Hadoop集群的进程?

我可以通过hadoop API来做到吗?
我可以在哪里获得文章或someting?

+0

你的问题很模糊结束了,我不明白正是你想要做的 – Chaos 2012-04-16 16:24:27

+0

我想说,吨我不仅需要运行Hadoop计算,还需要知道何时计算完成。然后我想要启动其他任务,例如。 – Makros 2012-04-16 16:33:22

回答

0

Hadoop为此提供了一些API。所以,如果你写Java代码Hadoop的工作,你可以这样定义的工作特性:

job.SetMapperClass(), job.setReducerClass(), job.setPartitionerClass(), job.setInputPath() 等。

那么你运行你的工作,你可以等待作业使用

job.waitForCompletion(真)

+0

这不完全是我需要的。
我需要为Hadoop集群传递任何hadoop模块。它就像这个http://weblogs.java.net/blog/boneill42/archive/2011/12/19/programmatically-submitting-jobs-remote-hadoop-cluster。
但我还是不明白,我怎样才能得到状态计算或者肯定会计算完成。 – Makros 2012-04-16 17:19:20

+0

您是否在谈论为了使作业正确运行而需要的一些自定义代码或第三方库?您可以使用DistributedCache机制(我认为这是类的名称),或者只是将jar文件手动复制到每台服务器上的TaskTracker的类路径中。 – Drizzt321 2012-04-16 23:19:59

+0

而在获得工作状态方面,还有API用于与JobTracker交谈并获得工作状态。然后,您可以使用它来获取计数器,或者使用不同的API从HDFS获取输出文件,其中应包含您的结果,具体取决于您编写Map/Reduce代码的方式。 – Drizzt321 2012-04-16 23:21:05