HDFS 使用类似 Linux 文件目录结构来抽象表示存储的数据结构,使用 inode 来表示目录或文件。
当你通过 hdfs dfs -copyFromLoacl my.log /
命令上传一份日志文件,还是使用计算引擎存储临时状态或计算结果,你看见 HDFS 目录上的所有文件,在实际存储时都会被切割加工成一个个的块(默认大小 128M,快还有副本默认 3 个),最后这些 block 的元数据信息会统一存储在 NameNode 中。
1. 什么是 Block
上面所说的块就是我们今天的主角 Block:HDFS 存储数据的基本单元,其核心属性有:
- id: 唯一标识,long 类型,默认情况下从 1073741824(2 的 30 次方)开始,每创建 1 个 block 自增 1;
- blockName: 块的名称,字符串 blk_ + id,例如 blk_1073741825、blk_1073741826 等;
- numBytes: 块的大小,long 类型,通常情况下