在前面我们已经介绍了hdfs系统就是一个文件存储系统,这篇文章我们介绍下hdfs的特性。
一、主从架构
HDFS 采⽤ master/slave 架构。⼀般⼀个 HDFS 集群是有⼀个 Namenode 和⼀定数⽬的Datanode 组成。Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点,两种⻆⾊各司其职,共同协调完成分布式的⽂件存储服务。
二、分块存储
HDFS 中的⽂件在物理上是分块存储(block)的,块的⼤⼩可以通过配置参数来规定,默认⼤⼩在 hadoop2.x 版本中是 128M。
三、名称空间
HDFS ⽀持传统的层次型⽂件组织结构。⽤户或者应⽤程序可以创建⽬录,然后将⽂件保存在这些⽬录⾥。⽂件系统名字空间的层次结构和⼤多数现有的⽂件系统类似:⽤户可以创建、删除、移动或重命名⽂件。
Namenode 负责维护⽂件系统的名字空间,任何对⽂件系统名字空间或属性的修改都将被Namenode 记录下来。HDFS 会给客户端提供⼀个统⼀的抽象⽬录树,客户端通过路径来访问⽂件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data。
四、NameNode元数据管理
我们把⽬录结构及⽂件分块位置信息叫做元数据。NameNode 负责维护整个 HDFS ⽂件系统的⽬录树结构,以及每⼀个⽂件所对应的 block 块信息(block 的 id,及所在的 DataNode 服务器)。
五、DataNode数据存储
⽂件的各个 block 的具体存储管理由 DataNode 节点承担。每⼀个 block 都可以在多个DataNode 上。DataNode 需要定时向 NameNode 汇报⾃⼰持有的 block 信息。存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)
六、副本机制
为了容错,⽂件的所有 block 都会有副本。每个⽂件的 block ⼤⼩和副本系数都是可配置的。应⽤程序可以指定某个⽂件的副本数⽬。副本系数可以在⽂件创建的时候指定,也可以在之后改变。
七、读多写少
HDFS 是设计成适应⼀次写⼊,多次读出的场景,且不⽀持⽂件的修改。正因为如此,HDFS 适合⽤来做⼤数据分析的底层存储服务,并不适合⽤来做⽹盘等应⽤,因为修改不⽅便,延迟⼤,⽹络开销⼤,成本太⾼。
还没有评论,来说两句吧...