0

我已经配置了 Hadoop 集群。我有两台机器MAMB 当我使用以下代码运行 mapreduce 程序时

 hadoop  jar /HDP/hadoop-1.2.0.1.3.0.0-0380/contrib/streaming/hadoop-streaming-1.2.0.1.3.0.0-0380.jar  -mapper "python C:\Python33\mapper.py"  -reducer "python C:\Python33\redu.py"  -input "/user/XXXX/input/input.txt"  -output "/user/XXXX/output/out20131112_09"

其中:mapper - C:\Python33\mapper.py 和 reducer C:\Python33\redu.py 在 MB 的本地磁盘中

更新 在此处输入图像描述

最后我找到了错误。

MA-错误日志

stderr logs
python: can't open file 'C:\Python33\mapper.py': [Errno 2] No such file or directory
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2

mapper - C:\Python33\mapper.py 和 reducer C:\Python33\redu.py 在 MA 的本地磁盘中,而不是在MB中

现在,我是否需要将我的 m/r 程序复制到MA或者我应该如何解决这个问题

映射器

import sys
for line in sys.stdin:
   line = line.strip()
   keys = line.split()
   for key in keys:
       value = 1
       print( '%s \t %d' % (key, value))
4

1 回答 1

2

如果地图输入文件小于dfs.block.size然后您将只运行每个作业一个任务结束。对于小输入,您可以强制 Hadoop 运行多个任务,其 mapred.max.split.size字节值小于dfs.block.size.

于 2013-11-12T13:01:02.487 回答