关于Split和Block

本文深入解析HDFS中的块存储概念与Split划分的区别,解释了Split在处理记录跨界和分布式存储时的作用,以及与单磁盘文件系统在块划分上的差异。

       很多人错误地认为split和block两个概念是一起的,有严格的对应关系,有一种很易理解的方式是,HDFS和MapReduce并不是强耦合在一期的,MapReduce处理的数据并不一定来自HDFS,可以来自其他分布式文件系统,甚至在本地磁盘都行(前提是,该文件系统必须实现一定的规范协议),如果这样,Split划分方式必须由程序设定,也就是split和block没有直接的关系,毕竟它们来自不同的世界。
      HDFS存储系统中,引入了文件系统的分块概念(block),块是存储的最小单位,HDFS定义其大小为64MB。与单磁盘文件系统相似,存储在HDFS上的文件均存储为多个块,不同的是,如果某文件大小没有到达64MB,该文件也不会占据整个块空间(不同于普通文件系统,如一个基本的物理存储单元:扇区,数据即使小于4KB,要要占用4kb的扇区空间)。在分布式的HDFS集群上,Hadoop系统保证一个块存储在一个datanode上,不跨越存储。
     另外就是记录边界的问题,block是在物理上做了划分,但是会出现记录跨界,或者底层文件系统不是HDFS的情形,因此需要一种逻辑上的数据处理单元,处理如记录越界的问题,这就是split的价值所在。
  单磁盘文件系统中,存储的物理单元概念是扇区。之上有了逻辑块的
概念,然后是不同的文件系统如ext3等,再往上是VFS(虚拟文件系统),这里面真正的物理单元实际上只有扇区其实,
   
 概念对比: 
 单磁盘文件系统: 扇区(物理单元)->逻辑块(通用块,解决扇区)->不同的文件系统(ext2,ext3)->VFS(虚拟文件系统)  每一层都是为了解决之前那层的各种不兼容问题。
 HDFS: block(物理单元)->split 
split记录跨界,但是如果想利用内存里的数据,在上传数据时,DN传输时就读取记录的话,这种方法就不行了,因为此时该文件的分布式存储尚未完成,无法知道下半条记录在哪个节点上的哪块内存中,甚至不知道写进内存没有。这种情况下就需要自定义文件格式,规范记录的边界,不允许跨界。
   

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值