为何要split大小和block大小是相同的(默认)

来源:互联网 发布:智能垃圾桶 知乎 编辑:程序博客网 时间:2024/06/03 14:53

Mapreduce数据处理过程

作业(job)是Mapreduce数据处理单元,分为两大过程:mapreduce

首先作业提交集群中被分成若干小的任务(task)执行具体操作步骤,二jobtask是被jobtrackertasktracker分别控制执行的,前者是管理job后者管理task

在数据操作过程中,jobtracker通过调用tasktracker中任务(task)集协调整个流程。Tasktracker收到jobtracker调度命令后执行其任务集同事向jobtracker发送任务的状态。Jobtracker将其记录下来,一旦某任务执行失败。Jobtracker将失败的任务分配到其他节点任务上并重新执行该任务。

任务(task)划分和执行

数据输入到hadoop集群中会被按照一定的条件分成若干个小的数据块而一个数据块被一个map端的task任务并行处理,这种处理属于本地化处理。这样(本地化+并行处理)就大大缩短的数据的处理时间,然后毛任务将处理的结果(实际的数据大大减少避免了更大网络资源的开销)通过网络出送给reduce端任务。一般来说数据块的大小与hadoop默认的块的大小(1.0每个数据块64M2.0的每个数据块128M)。

分片的大小不仅决定task任务执行的效率,另一方面也影响着集群的数据处理中的负载均衡。分片过小有利于集群负载均衡但是过小的的分片意味着集群管理数据块时间增加,这样反而降低数据处理时间(集群管理时间+task执行时间=数据处理总时间)。相反如果数据块过大的话也会影响数据处理效率,试想若果task处理数据块大于集群的数据块的话,task会跨跨节点甚至跨机架处理数据,因为一旦出现这种task数据处理占用网络资源同样降低数据处理效率。





0 0