HDFS中block不能设置太大,也不能太小
在HDFS中存储数据是以块(block)的形式存放在DataNode中的,块(block)的大小可以通过设置dfs.blocksize来实现;在Hadoop2.x的版本中,文件块的默认大小是128M,老版本中默认是64M;寻址时间:HDFS中找到目标文件块(block)所需要的时间。原理:
- 文件块越大,寻址时间越短,但磁盘传输时间越长
- 文件块越小,寻址时间越长,但磁盘传输时间越短
-
如果块设置过大, 一方面,从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢;另一方面,mapreduce中的map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢。
-
如果块设置过小,一方面存放大量小文件会占用NameNode中大量内存来存储元数据,而NameNode的内存是有限的,不可取;另一方面文件块过小,寻址时间增大,导致程序一直在找block的开始位置。
因而,块适当设置大一些,减少寻址时间,那么传输一个由多个块组成的文件的时间主要取决于磁盘的传输速率。
HDFS中block大小为何为128M?
- HDFS中平均寻址时间大概为10ms
- 经过前人的大量测试发现,寻址时间为传输时间的1%时,为最佳状态;
所以最佳传输时间为10ms/0.01=1000ms=1s - 目前磁盘的传输速率普遍为100MB/s;
计算出最佳block大小:100MB/s x 1s = 100MB
所以设定block大小为128MB。
实际在工业生产中,磁盘传输速率为200MB/s时,一般设定block大小为256MB;磁盘传输速率为400MB/s时,一般设定block大小为512MB。
HDFS分块存储的好处
1、文件大小可以大于任意一个磁盘的容量,块并不需要存储在同一个磁盘上
2、抽象块作为存储单元,简化存储子系统的设计
1) DataNode将块作为处理对象,能存储多少块也能计算出
2) NameNode管理元数据
3、数据备份提高容错能力和可用性
4、Hadoop文件格式以及数据压缩算法
5、并行处理 。由于数据在机器上分配,因此可以利用分布式和并行计算
HDFS中block大小默认为128M,旨在平衡寻址时间和磁盘传输时间。块设置过大可能导致寻址时间占比过小,影响程序效率;设置过小则增加寻址时间,消耗NameNode内存。分块存储利于数据备份、提高容错性和并行处理能力。在实际应用中,根据磁盘传输速率调整block大小,如200MB/s时设为256MB,400MB/s时设为512MB。
1万+

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



