这是一个涉及Hadoop/HDFS的概念问题。假设您有一个包含 10 亿行的文件。为了简单起见,让我们考虑每行的形式<k,v>
其中 k 是该行距开头的偏移量,value 是该行的内容。
现在,当我们说我们想要运行 N 个映射任务时,框架是否将输入文件拆分为 N 个分区并在该分区上运行每个映射任务?或者我们是否必须编写一个分区函数来执行 N 个分割并在生成的分割上运行每个映射任务?
我想知道的是,分割是在内部完成还是我们必须手动分割数据?
更具体地说,每次调用 map() 函数时,它的值是什么?Key key and Value val
参数?
谢谢,
迪帕克
The InputFormat
负责提供分割。
一般来说,如果有n个节点,HDFS会将文件分发到所有这n个节点上。如果启动一个作业,默认会有n个映射器。感谢 Hadoop,机器上的映射器将处理存储在该节点上的部分数据。我想这就是所谓的Rack awareness
.
长话短说:将数据上传到HDFS并启动MR作业。 Hadoop 将关心优化执行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)