HDFS中的文件在物理上是分块(Block)存储的,块的大小是可以通过配置参数(dfs.blocksize)来规定的。一个文件块的默认大小是128M。
块大小的计算
- 如果寻址时间为10ms,即查找到目标block的时间为10ms
- 寻址时间为传输时间的1%,则为最佳状态。
- 因此传输时间=10ms/0.01=1000ms=1s
- 而目前磁盘传输速率普遍为100M/s
- 所以block大小为:1s*100M/S=100M
- 所以一般企业内定义的块大小为128M(机械硬盘)或256M(固态硬盘)
块大小的设置
为什么块大小不能设置太小也不能设置太大
- HDFS的块设置太小,会增加寻址时间,程序一直在找块的位置
- HDFS块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢
总结
- HDFS的块大小主要取决于磁盘的传输速率,机械硬盘一般设置为128M,固态硬盘较快,一般设置256M