HDFS(Hadoop Distributed File System) 负责海量数据的存储,是一个高度容错性系统,能检测和应对硬件故障。主要角色有NameNode, DataNode, SecondaryNameNode. HDFS采用 master/slave 架构,一个HDFS由一个NameNode和一定数目的DataNodes组成。
图2-1-1:HDFS架构图
图2-1-2:HDFS执行步骤
1. NameNode (NN)
NN是一个中心服务器,负责管理文件系统的命名空间(namespace)以及客户端对文件的访问。其中存储了文件的元数据,包括文件名、文件目录结构、文件属性(生成时间、副本数、权限)等,以及每个文件的块列表和列表中的块与块所在的DataNode之间的地址映射关系。
NN的容错机制非常重要,因为如果运行NN的机器坏掉的话,系统中的文件将会完全丢失。Hadoop提供了两种机制:1)将持久化存储在本地硬盘的文件系统元数据备份;2)运行一个辅助的NN(SecondaryNameNode),定期将namespace镜像文件(fsimage)与操作日志文件(edit log)合并。
一般情况下,单NN集群的最大集群规模为4000台。
2. DataNode (DN)
DN一般是一个节点一个,负责管理它所在节点上的存储,真正用于在本地文件系统存放数据。DN的基本单位是块(block),默认128M。大数据培训在HDFS上会保存数据的副本,默认是3个,即同一块数据会同时存储在3个不同的DN上进行备份,这个副本数量是可以设置的,后面进行配置的时候会介绍。
3. SecondaryNameNode (2NN)
2NN是辅助节点,用于同步元数据信息,辅助NN对fsimage和edit log进行合并(冷备份),以解决edit log过大及丢失改动信息的问题。
图2-1-3:SecondaryNameNode工作原理