2021-10-31

(4)HDFS的block和切片(split)的区别
1.block

当我们把文件上传到HDFS时,文件会被分块,这个是真实物理上的划分。每块的大小可以通过hadoop-default.xml里配置选项进行设置。系统也提供默认大小,其中Hadoop 1.x中的默认大小为64M,而Hadoop 2.x中的默认大小为128M。每个Block分别存储在多个DataNode上(默认是3个),用于数据备份进而提供数据容错能力和提高可用性

在很多分布式文件系统中我们都可以看到Block的存在,这种设计的优点是:
存储的文件大小可以大于集群中任意一个磁盘的容量。这很好理解,文件被划分到多个Block中存储,对磁盘透明;
使用Block抽象而非整个文件作为存储单元,可以极大简化存储子系统的设计。因为Block size是统一的,因此一个节点上可以存储多少Block就是可以推算的;
Block 非常适合用于数据备份,进而提供数据容错能力和可用性。

2 split

split 是逻辑意义上的split。 通常在 M/R 程序或者其他数据处理技术上用到。根据你处理的数据量的情况,split size是允许用户自定义的。
split size 定义好了之后,可以控制 M/R 中 Mapper 的数量。如果M/R中没有定义 split size , 就用默认的HDFS配置作为 input split。
输入分片(Input Split):在进行map计算之前,mapreduce会根据输入文件计算输入分片(input split),每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据的位置的数组。
通常一个split就是一个block(FileInputFormat仅仅拆分比block大的文件),这样做的好处是使得Map可以在存储有当前数据的节点上运行本地的任务,而不需要通过网络进行跨节点的任务调度。

3总结
split是MapReduce里的概念,是切片的概念,split是逻辑切片;而block是hdfs中切块的大小,block是物理切块。

split的大小在默认的情况下和HDFS的block切块大小一致,为了是MapReduce处理的时候减少由于split和block之间大小不一致,可能会完成多余的网络之间的传输。

用户可以在M/R 程序中自定义split size。

一个split 可以包含多个blocks,也可以把一个block应用多个split操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值