??在HDFS中存储数据是以块(block)的形式存放在DataNode中的块(block)的大小可以通过设置dfs.blocksize来实现;在Hadoop2.x的ios个版本大小中,文件块的默认大小是128M老ios个版本大小中默认是64M;寻址时间:HDFS中找到目标文件块(block)所需要的时间。原理:
- 文件块越大寻址时间越短,但磁盘传输时间越长
- 文件块越小寻址时间越长,但磁盘传输时間越短
-
如果块设置过大 一方面,从磁盘传输数据的时间会明显大于寻址时间导致程序在处理这块数据时,变得非常慢;另一方面mapreduce中嘚map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢
-
如果块设置过小,一方面存放大量小文件会占用NameNode中大量内存来存儲元数据而NameNode的内存是有限的,不可取;另一方面文件块过小寻址时间增大,导致程序一直在找block的开始位置
因而,块适当设置大一些减少寻址时间,那么传输一个由多个块组成的文件的时间主要取决于磁盘的传输速率
-
HDFS中平均寻址时间大概为10ms
-
经过前人的大量测试发现,寻址时间为传输时间的1%时为最佳状态;
-
目前磁盘的传输速率普遍为100MB/s;
实际在工业生产中,磁盘传输速率为200MB/s时一般设定block大小为256MB;磁盘傳输速率为400MB/s时,一般设定block大小为512MB