Hadoop框架—HDFS文件块

  • Post author:
  • Post category:其他






一.HDFS文件块大小



1.概念


HDFS

中的文件在物理上是

分块存储(Block)

,块的大小可以通过配置参数(dfs.blocksize)来规定,默认在

Hadoop2.x/3.x

版本是

128M



1.x

版本是

64M

如果我们想查看这个参数,可以查阅

hdfs-default.xml

文件,找到其中的

dfs.blocksize

部分如下:

请添加图片描述

注:我们这里通过如下

shell

命令将该配置文件

下载

到了

本地

再进行了查看:

请添加图片描述

可以看到官方文档中说明,

默认块

大小

value



字节数

的大小存储,共134217728

bytes

,又因为

1MB=1024KB=1024^2Bytes

,经过转换得到恰好为

128MB

。(自用版本为Hadoop3.x系列)




2.寻址时间和传输时间

请添加图片描述


寻址时间



在集群中查找到所需要的块

block-i

所需要的时间

.


传输时间

:

对找到的块

block-i

进行

上传/下载

等操作进行传输所需要的时间

.

注:一般,当

寻址时间



传输时间



1%

时,为

最佳状态

(专家)。比如,当遍历集群中的block块,直到找到我们想要的block,花费的寻址时间为10ms,那么此时传输时间=10ms/0.0.1=1000ms=1s。这个时候为最佳状态。




3.文件块大小与什么有关系(重点)?

目前磁盘的的传输速率普遍为

100MB/s

,由于

块大小=磁盘传输速率*传输时间

,所以

块大小



磁盘传输的速率快慢

决定,某些公司使用的硬盘好,传输速率高,比如

200MB/s~300MB/s,

那么计算得到块大小在

200M~300M

,此时便可以设置为

256M

.(计算机中

100

不是整数,计算机中的

进制单元



1024

)




思考:为什么块的大小不能设置太小,也不能设置太大?

(1)HDFS的块设置

太小

,会

增加寻址时间

,程序一直在寻找块的开始位置;

请添加图片描述

假设有一个

文件大小


100KB

,我们此时把

块大小

设置为

1KB

,那么单这一个文件就需要被分为

100个块

,那么如果后续要查找该文件的话,由于要找该文件对应的100个块,这将会

大幅增加寻址时间

(2)如果块设置

太大

,从

磁盘传输数据的时间

会明显

大于定位这个块开始位置所需的时间

,导致程序在处理这块数据时,会非常慢。

请添加图片描述

反之,如果

块过大

,比如定义

1T

,那么一般的小文件可能都会被存储在同一个块中,显然

寻址时间减少

了很多,但是此时

传输时间>>寻址时间

,最终导致

处理数据

时非常







Conclusion:HDFS块的大小设置主要取决于磁盘传输速率!!!



版权声明:本文为f986153489原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。