Hadoop之split

文件上传至HDFS之前,InputFormat接口的getSplits方法会将文件划分切割成为若干个可序列化的split

一个大数据的文件一般要划分为若干个split,因此,处理一个split的时间远远小于处理整个大数据文件的时间,根据木桶效应,整个Map处理的速度则是由群集中所有运行map节点的最慢的那个节点决定,如果将splits分成较为细粒度的数据大小,而同时对不同的节点计算机根据其速度分配splits个数,可以获得更好的负载均衡。

一般大多数的split与HDFS中的block大小相同,都为64M,这样做的好处是使得Map可以在存储有当前数据的节点上运行本地的任务,而不需要通过网络进行跨节点的任务调度。

如果一个Map中所需要的数据大于一个block的大小64M的时候,那么部分数据很可能存储到别的节点上,处理的时候必然会通过网络跨节点数据传输,则Map无疑是增加了等待时间从而降低了Map处理效率

如果一个Map中所需要的数据小于block的大小64M的时候,那么会对当前节点block容量的浪费,同时是增加了split的个数,Map对split进行计算并且上报结果,关闭当前计算打开新的split均需要耗费资源,这样无疑也降低了Map处理效率

你可能感兴趣的:(Hadoop,任务调度,分布式计算,MapReduce,split)