HDFS块大小设置

为什么block大小设置位128M?

最佳传输损耗理论:在一次传输中,寻址时间占总传输时间的1%,本次传输的损耗最小,为最佳性价比传输。

目前硬件的发展条件,普通磁盘写的速率大概为100M/S, 寻址时间一般为10ms!

10ms / 1% = 1s
1s * 100M/S=100M

块在传输时,每64K还需要校验一次,因此块大小,必须为2的n次方,最接近100M的就是128M!

如果公司使用的是固态硬盘,写的速度是300M/S,将块大小调整到 256M
如果公司使用的是固态硬盘,写的速度是500M/S,将块大小调整到 512M

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

一、HDFS 块设置的比较小会增加寻址时间,并且每个块在namenode都会存储一份元数据,增加namenode开销

一个大文件会被分为多个block存在hdfs中,而每个block对于磁盘来说就是一个文件。
该hdfs的大文件寻址时间是等于磁盘寻找每个block文件的总和。
而本地磁盘每寻找一个block文件都要寻址一次,每次寻址时间都差不多。所以block数量越多,寻址次数越多,则把该大文件的所有block寻找出来的总时间就越多。

二、HDFS块设置的比较大,那么传输时间就会变得很大

我们知道,hdfs存储大文件会把该文件分为多个块。
在mapreduce中,一个mapreduce程序要处理该文件,每个map都是一个客户端,但每个map都只分别下载一个block,对于整个mapreduce程序来说,下载该文件的时间就是下载一个块的时间。当block size比较小时,那么对于整个mapreduce来说,下载这个文件的时间就会很小。

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