hdfs为什么要用block以及block大小的设置

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版权协议,转载请附上原文出处链接和本声明。