我有一个Hadoop集群,不同的进程可以向这个集群提交mapreduce作业(它们都使用相同的用户帐户)。
有没有办法区分这些工作?某种描述,可以在提交过程中添加到工作中,如“这是一个过程的工作”1234“,不要触摸'?
我正在使用Python和HadoopStreaming,并希望使用简单的hadoop job -list
(或至少使用Web管理界面)区分作业。
答案 0 :(得分:0)
是的,您可以使用job.setJobName(String)
为每个作业指定名称。
如果您要将作业名称设置为区别对象,则应该能够区分它们。
例如,通过使用类似ManagementFactory.getRuntimeMXBean().getName()
的内容,您可以以1234@localhost
的格式获取进程ID和计算机名称(无论如何在Linux上,不确定其他操作系统上的行为),其中1234
1}}是进程ID,您可以将其设置为作业名称以区分它们。
答案 1 :(得分: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