天天看点

HDFS的数据块

目标

  • HDFS中数据块是什么
  • 为什么HDFS的more数据块是128M
  • HDFS中数据块的优势

数据块是什么

在Hadoop中,HDFS切割大文件到小数据块,这些小数据块叫做HDFS数据块。HDFS数据块是HDFS文件系统中的最小数据单元,我们不能对数据块进行控制,例如,块位置。这些工作都是由Namenode进行操控。

如果HDFS存储每个文件作为一个数据块,那么HDFS的数据块会非常大。默认HDFS的数据块是128M,但是这个值根据你的需求可以进行调整。一个文件的所有的数据块大小都是一样的,除了最后一个数据块(可能等于或者小于之前的数据块)。文件被切割成128M的数据块,存储到Hadoop文件系统。Hadoop应用负责在多个节点中分配这些数据块。

HDFS的数据块

例如,文件大小是518M,使用默认的128M的数据块,那么5个数据块会创建,前四个数据块是128M,最后一个数据块是6M。

为什么HDFS数据块是128M

HDFS存储大的数据集,例如TB或者PB级别的数据。像Linux文件系统拥有4kB块大小,如果HDFS的数据块大小是4kb,那么将会有许多数据块在HDFS中,需要很多的元数据。管理这么多数据块和元数据将会带来很大的压力。

另一方面,数据块不能太大,以至于系统必须等待最后一个数据处理单元完成工作。

Hadoop数据块的优势

  • 简单的存储管理

    因为数据块大小固定,很容易计算存储在磁盘上的数据块数量

  • 存储大文件的能力

    HDFS能够存储大于单个磁盘大小的文件,因为文件被切割成HDFS数据块,分布式在多个节点上。

  • HDFS的容错能力和高可用

    数据块可以在多个datanode节点上进行复制,因此提供容错能力和高可用

  • 简单的存储原理

    HDFS数据块简化datanodes的存储,数据块的元数据是由namenode管理,datanode并不需要关心数据块元数据,例如文件权限等

继续阅读