【发布时间】:2015-05-10 02:00:20
【问题描述】:
我是 Hadoop 的新手,正在尝试将其流式传输功能与 Python 编写的映射器和缩减器一起使用。问题是我的原始输入文件将包含要由映射器识别的行序列。如果我让 Hadoop 拆分输入文件,它可能会在序列中间进行,因此不会检测到该序列。所以,我正在考虑手动拆分文件。这也会破坏一些序列,因此,除此之外,我还将提供替代拆分,这将创建与“第一个”拆分重叠的文件。这样我就不会丢失任何序列。
我将运行this article 中描述的以下命令:
hduser@ubuntu:/usr/local/hadoop$ bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar \
-file /home/hduser/mapper.py -mapper /home/hduser/mapper.py \
-file /home/hduser/reducer.py -reducer /home/hduser/reducer.py \
-input /user/hduser/seq_files/* -output /user/hduser/output_files
我打算将我的输入文件(即手动拆分生成的文件)放在 /user/hduser/seq_files/
问题是:
如何配置 Hadoop 以获取每个输入文件并将其原样发送到映射器?
如果输入文件的数量大于节点的数量,是否会映射所有文件? 谢谢。
【问题讨论】:
标签: hadoop mapreduce hadoop-streaming