我有一个 Hadoop 集群,不同的进程能够向这个集群提交 mapreduce 作业(它们都使用相同的用户帐户)。
有没有办法区分这些工作?某种描述,可以在提交期间添加到作业中,例如“这是进程“1234”的作业,请勿触摸”?
我正在使用 Python 和 HadoopStreaming,并且想使用简单hadoop job -list
(或至少使用 Web 管理界面)来区分作业。
我有一个 Hadoop 集群,不同的进程能够向这个集群提交 mapreduce 作业(它们都使用相同的用户帐户)。
有没有办法区分这些工作?某种描述,可以在提交期间添加到作业中,例如“这是进程“1234”的作业,请勿触摸”?
我正在使用 Python 和 HadoopStreaming,并且想使用简单hadoop job -list
(或至少使用 Web 管理界面)来区分作业。
是的,您可以使用 为每个作业指定一个名称job.setJobName(String)
。
如果您要将作业名称设置为可区分的名称,您应该能够将它们区分开来。
例如,通过使用类似的东西,ManagementFactory.getRuntimeMXBean().getName()
您可以获得进程 id 和机器名称(无论如何在 linux 上,不确定在其他操作系统上的行为)格式为,进程 id1234@localhost
在哪里,您可以将其设置为作业名称来告诉1234
他们分开。
对于交叉兼容的解决方案,您始终可以使用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