当我们将以下命令作为hadoop mapreduce流的一部分运行时
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streamingxxxx.jar -input cities.txt -output streamout -mapper / bin / cat -reducer' grep -i CA'
1)基于Java的mapreduce工作是否在后台工作?
答案 0 :(得分:1)
您可以在此article
找到命令的内部信息mapper和reducer都是可执行文件,它们从stdin读取输入(逐行)并将输出发送到stdout。该实用程序将创建 Map / Reduce 作业,将作业提交到适当的群集,并监视作业的进度,直到完成为止。
当为映射器指定可执行文件时,每个映射器任务将在初始化映射器时将可执行文件作为单独的进程启动。当映射器任务运行时,它将其输入转换为行并将行提供给进程的标准输入。同时,映射器从进程的stdout收集面向行的输出,并将每一行转换为键/值对,并将其作为映射器的输出进行收集。
为reducers指定可执行文件时,每个reducer任务都会将可执行文件作为单独的进程启动,然后初始化reducer。当reducer任务运行时,它将其输入键/值对转换为行,并将行提供给进程的stdin。同时,reducer从进程的stdout收集面向行的输出,将每一行转换为一个键/值对,并将其作为reducer的输出收集。
答案 1 :(得分:0)
你是对的,它是在场景后面运行的java代码.MapReduce作业由StreamJob触发,如果它不是java类,Mapper只是指定命令的包装器。