我是Hadoop的新手,我正在尝试使用Python编写的mapper和reducer的流功能。问题是我的原始输入文件将包含要由映射器标识的行序列。如果我让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以获取每个输入文件并将其原样发送给映射器?
如果输入文件的数量大于节点数,是否会映射所有文件? 感谢。
答案 0 :(得分:1)
这里有许多问题需要考虑。
请注意,所有链接都指向同一页面,只是指向不同的章节。一般来说,我认为从上到下阅读该页面将为您提供一个更加坚定的概念,即如何以流媒体方式使用Hadoop。
奖金提示: 如果你想用python做map / reduce,我建议你看看the Hadoop partitioning key,它在Hadoop上运行,但是Apache Spark for Python它还允许你使用iPython控制台来开发你的map / reduce算法,这极大地提高了开发速度。