1

我有一个 Hadoop 集群,不同的进程能够向这个集群提交 mapreduce 作业(它们都使用相同的用户帐户)。

有没有办法区分这些工作?某种描述,可以在提交期间添加到作业中,例如“这是进程“1234”的作业,请勿触摸”?

我正在使用 Python 和 HadoopStreaming,并且想使用简单hadoop job -list(或至少使用 Web 管理界面)来区分作业。

4

2 回答 2

0

是的,您可以使用 为每个作业指定一个名称job.setJobName(String)

如果您要将作业名称设置为可区分的名称,您应该能够将它们区分开来。

例如,通过使用类似的东西,ManagementFactory.getRuntimeMXBean().getName()您可以获得进程 id 和机器名称(无论如何在 linux 上,不确定在其他操作系统上的行为)格式为,进程 id1234@localhost在哪里,您可以将其设置为作业名称来告诉1234他们分开。

于 2013-02-21T13:59:33.750 回答
0

对于交叉兼容的解决方案,您始终可以使用mapred.job.name来指定您的工作名称,这样您hadoop job -list以后可以轻松区分所有内容。

在 Hadoop 流的情况下,这应该看起来像这样:

hadoop jar $HADOOP_STREAMING_JAR -Dmapred.job.name='something' -mapper mapper.py -reducer reducer.py -input /path/to/input -output /path/to/output
于 2013-02-21T16:20:09.463 回答