首页 > 解决方案 > mapper 和 reducer 任务是如何分配的

问题描述

执行MR作业时,Hadoop将输入数据分成N个Split,然后启动对应的N个Map程序分别处理。
1.数据如何划分(拆分成不同的inputSplits)?
2.Split是如何安排的(你如何决定处理Split的Map程序应该在哪台TaskTracker机器上运行)?
3.如何读取分割后的数据?
4.如何减少任务分配?
在 hadoop1.X 在 hadoop 2.x
在此处输入图像描述

在此处输入图像描述

这两个问题有一定的关系,所以我一起问了,你可以看看你擅长哪个部分。

提前致谢 。

标签: hadoopmapreducescheduled-tasks

解决方案


数据在预定义大小的 HDFS 块中存储/读取,并由各种 RecordReader 类型通过使用字节扫描器读取,并知道要读取多少字节以确定何时需要返回 InputSplit。

更好地理解它的一个很好的练习是实现你自己的 RecordReader 并创建一个小记录、一个大记录和许多记录的大小文件。在多记录情况下,您尝试将记录拆分为两个块,但该测试用例应该与两个块上的一个大记录相同。

减少任务可以由 MapReduce 操作的客户端设置。

从 Hadoop 2 + YARN 开始,该图像已过时


推荐阅读