HDFS文件块大小

        HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在Hadooop2X版本中是128M,老版本中是64M。

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

  1. HDFS的块设置太小会增加寻址时间,程序一直在找块的位置;
  2. 如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需要的时间。导 致程序在处理这块数据时,会非常慢。

总结:HDFS块的大小主要取决于磁盘传输速率。

hdfs中block为什么设置为128MB:

        hdfs中的平均寻址时间为10ms,而传输速率普遍为100MB/s而在大量测试中得出寻址时间为传输时间的1%时,为最佳状态

        通过计算最佳传输时间=10ms/0.01=1s,进一步计算出Block块大小=1s*100MB=100MB,而我们磁盘block块的大小都是2^n倍,所以设置hdfs中的blcok大小为128MB,但是很多情况下HDFS安装时使用更大的块。以后随着新一代磁盘驱动器传输速率的提升,块的大小会被设置得更大。

但是这个参数也不会设置得过大。MapReduce中的map任务通常一次只处理一个块中的数据,因此如果任务数太少(少于集群中的节点数量),作业的运行速度就会比较慢。

如果block设置过大:在MapReduce中的map任务通常一次只处理一个块中的数据,因此设置的过大就会使作业的运行速度较慢

hdfs中小于blcok块大小的文件如何存储:当所存储的文件小于block块的大小时,它并不会占用整个block块的大小,只会占用它的实际存储大小

你可能感兴趣的:(Hadoop,hdfs,hadoop,大数据)