Abh*_*ain 20 hadoop mapreduce hdfs
我们都知道,与传统文件系统中的块大小相比,HDFS中的块大小相当大(64M或128M).这样做是为了减少与传输时间相比的寻道时间百分比(因此,传输速率的改进比磁盘寻道时间的改进大得多,因此设计文件系统时的目标始终是减少与要转移的数据量相比的寻求次数).但是这带来了内部碎片的另一个缺点(这就是为什么传统的文件系统块大小不是那么高并且只有几KB的量级 - 通常是4K或8K).
我正在阅读这本书 - Hadoop,权威指南,并发现这写在某个地方,一个小于HDFS块大小的文件不占用整个块,并没有占到整个块的空间,但无法理解如何?有人可以对此有所了解.
Sat*_*bir 24
HDFS中的块划分仅在逻辑上构建在底层文件系统的物理块上(例如ext3/fat).文件系统没有物理上划分为块(例如64MB或128MB或者块大小).它只是将元数据存储在NameNode中的抽象.由于NameNode必须在内存中加载整个元数据,因此元数据条目的数量有限,因此解释了对大块大小的需求.
因此,存储在HDFS上的三个8MB文件在逻辑上占据3个块(NameNode中的3个元数据条目),但在底层文件系统中物理上占用8*3 = 24MB空间.
考虑到NameNode内存的限制,大块大小是为了正确使用存储空间.
Pra*_*ati 11
根据Hadoop - The Definitive Guide
与单个磁盘的文件系统不同,HDFS中小于单个块的文件不会占用整个块的底层存储空间.如果不合格,本书中的"块"一词指的是HDFS中的一个块.
HDFS中的每个块都作为文件存储在底层OS文件系统(ext3,ext4等)的数据节点中,相应的详细信息存储在名称节点中.假设文件大小为200MB,块大小为64MB.在这种情况下,文件将有4个块,对应于64MB,64MB,64MB和8MB大小的数据节点中的4个文件(假设复制为1).
ls -ltr数据节点上的一个将显示块详细信息
-rw-RW-R-- 1个训练训练21年10月11日15时27 blk_-7636754311343966967_1002.meta
-rw-RW-R-- 1个训练训练21年10月4日15点27 blk_-7636754311343966967
-rw-RW-R-- 1个训练训练99年10月21 15点29 blk_-2464541116551769838_1003.meta
-rw-RW-R-- 1个训练训练11403 10月21日15时29 blk_-2464541116551769838
-rw-RW-R-- 1个训练训练99年10月21 15: 29 blk_-2951058074740783562_1004.meta
-rw-rw-r-- 1次培训11544 10月21日15:29 blk_-2951058074740783562