block介绍
- hadoop默认情况下,一个block块大小为128m。
HDFS以block块的形式存储在集群上,默认生成三份副本,存储在【${hadoop.tmp.dir/dfs.data}】目录下
HDFS中小于一个块大小的文件不会占满整个快的空间,文件有多大占多大空间
块是物理存在的,以文件的形式存储在数据节点datanode中,例如:
- block块大小设置合理性
a.磁盘存储设备:机械、固态
b.网络带宽
c.业务数据 - HDFS中的fsck指令可以显示块信息
文件系统中块构成:hdfs fsck / files -blocks
block块大小的调整
一、block块调大
修改hdfs.site.xml文件
<property>
<name>dfs.blocksize</name>
<value>256m</value>
</property>
二、block块调小
-
修改hdfs-site.xml文件中的
dfs.blocksize
属性值【同上,比如改为dfs.blockszie=10】#在执行上传指定时,会报异常如下:
put: Specified block size is less than configured minimum value
(dfs.namenode.fs-limits.min-block-size): 10 < 1048576 -
修改hdfs-site.xml文件中的
dfs.namenode.fs-limits.min-block-size
属性值
默认的最小块大小是1m,修改时blocksize要大于min-block-size<property> <name>dfs.namenode.fs-limits.min-block-size</name> <value>1048576</value> </property>
#修改完之后,在执行上传指令时还报异常,如下:
-put: Invalid values: dfs.bytes-per-checksum (=512) must divide block size (=10). -
修改hdfs.site.xml文件的
dfs.bytes-per-checksum
属性值
checksum校验和是为了保证数据的完整性,一般不改,如果改都是要调大,但是也不能大于stream-buffer-size的值
默认的大小为512字节,每512个字节去校验一个block块,但本例中的块大小为10字节,达不到校验的数值,所以要改小于10字节<property> <name>dfs.bytes-per-checksum</name> <value>512</value> </property>