持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情
前言
学习一个新的技术前,我们必须要了解它的一个设计理念或者是一个设计思路。这样我们在使用这个技术时,深入这个技术的底层时,才能准确的把握这个技术的精髓所在。正如我们在第一篇文章中介绍的HDFS的设计理念,在我们了解了它的设计理念,今天就来介绍组成HDFS的组件介绍
HDFS组成部分介绍
HDFS是以管理——工作节点的模式运行在集群之上的,管理节点就是namenode,工作节点就是datanode。
namenode
namenode负责管理文件系统的命名空间,它维护着文件系统的整个文件树,以及文件树中的文件,目录等元数据信息。这些信息都是放入在内存里以备使用的,这时候肯定有人发起疑问了,维护在内存里,如果机器宕机了或者服务崩溃了,那信息不就丢失了吗?是的,内存里的数据是会丢失的,但是namenode会将系统文件树的这些元数据信息持久化到本地磁盘上,以两个文件的形式存储:命名空间镜像文件(namespace image)和编辑日志(edit log)。namenode记录者文件的数据节点的信息,namenode不会永久保存节点的这些元数据信息,它会在重启时根据数据节点的信息进行重建。
client
client负责与namenode和datanode进行交互,提供了一整套的POSIX的接口操作。
datanode
datanode负责检索并存储相应的数据块的信息,受namenode和datanode的调度。并且定期的向namenode发送自己所有的数据块信息列表。
数据块
HDFS使用跟磁盘文件系统一样的方式用来存储文件,只是HDFS的数据块的大小比磁盘文件系统大的多,HDFS默认的数据块大小为128MB,使用数据块的概念的好处有以下3种:
- 存储在文件系统上的文件可以大于网络中任意一个磁盘的大小,并且文件不用存储在同一个磁盘内。例如整个HDFS可以只存储一个超大的文件,占据整个HDFS的容量。
- 使用数据块可以简化系统设计,方便存储管理,通过数据块的数量和大小,你可以立马计算出目前占用的容量为多少。
- 使用数据块可以很方便的进行文件数据的复本备份,进而提高文件系统的容错性以及高可用性。
总结
今天我们简要了解了HDFS的组成部分。