1、在HDFS里面,文件存储为什么要以Block块的方式存储?
目的:减少磁盘寻道的时间。
(1)、不设置block:因为数据是分散的存放磁盘上的,读取数据时需要不停的进行磁盘寻道,开销比较大。
(2)、使用block:一次可以读取一个block中的数据,减少磁盘寻道的次数和时间。
其他:block在磁盘上非连续存储的,读取数据时需要磁盘寻道。
2、为什么HDFS中块(block)不能设置太大,也不能设置太小?
(1)、block设置过大:从磁盘传输数据的时间明显大于寻址时间,导致处理该块数据时比较慢。
(2)、block设置过小:NameNode需要大量内存来存储元数据,不可取。
3、HDFS寻址时间
HDFS中找到目标文件块(block)所需要的时间。
4、DataNode上的块大小默认是128MB,为什么128MB是最优选择?
目的:减少HDFS寻址开销。
HDFS的平均寻址时间大概是10ms,寻址时间为传输时间的1%时,为最佳状态,所以最佳传输时间是10ms/0.01=1000ms=1s。
目前磁盘的传输速率普遍为100MB/s;
计算出最佳block大小:100MB/s x 1s = 100MB,
所以我们设定block大小为128MB。
如果磁盘传输速率很大,例如2000M/s时,block可以设置为 2000M/s * 1s = 2000M
版权声明:本文为zgaoq原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。