HDFS数据块:
与一般文件系统一样,HDFS也有块(block)的概念,HDFS上的文件也被划分为块大小的多个分块作为独立的存储单元。
与通常的磁盘文件系统不同的是:
HDFS中小于一个块大小的文件不会占据整个块的空间(当一个1MB的文件存储在一个128MB的块中时,文件只使用1MB的磁盘空间,而不是128MB)
设置数据块的好处:
(1)一个文件的大小可以大于集群任意节点磁盘的容量
(2)容易对数据进行备份,提高容错能力
(3)使用抽象块概念而非整个文件作为存储单元,大大简化存储子系统的设计
问题:HDFS里面为什么一般设置块大小为64MB或128MB?
为什么不能远少于64MB?
(1)减少硬盘寻道时间。HDFS设计前提是应对大数据量操作,若数据块大小设置过小,那需要读取的数据块数量就会增多,从而间接增加底层硬盘的寻道时间
(2)减少NameNode内存消耗。由于NameNode记录着DataNode中的数据块信息,若数据块大小设置过小,则数据块数量增多,需要维护的数据块信息就会增多,从而消耗NameNode的内存。
为什么不能远大于64MB?
原因主要从上层的MapReduce框架来寻找。
(1)Map崩溃问题。系统需要重新启动,启动过程中需要重新加载数据,数据块越大,数据加载时间越长,系统恢复过程越长
(2)监管时间问题。主节点监管其他节点的情况,每个节点会周期性的与主节点进行汇报通信。倘若某一个节点保持沉默的时间超过一个预设的时间间隔,主节点会记录这个节点状态为死亡,并将该节点的数据转发给别的节点。而这个“预设时间间隔”是从数据块的角度大致估算的。(加入对64MB的数据块,我可以假设你10分钟之内无论如何也能解决完了吧,超过10分钟还没反应,那我就认为你出故障或已经死了。)64MB大小的数据块,其时

HDFS采用数据块存储,一般设置为64MB或128MB,以减少寻道时间,降低NameNode内存消耗。小于64MB会增加寻道时间和NameNode负担,远大于64MB则可能影响MapReduce效率,如Map崩溃恢复时间、监管时间估算和问题分解。HDFS块大小设置旨在平衡寻址和传输成本。
最低0.47元/天 解锁文章
3218

被折叠的 条评论
为什么被折叠?



