一、HDFS包含3类节点
1、NameNode,用来管理文件系统的命名空间,维护整个系统的目录树和文件索引目录;并以2种形式存储在NameCode上,一个是Namespace image(命名空间镜像),一个是Edit log(编辑日志)。
并且可以NameNode获得文件的每个块具体存储在的DataNode(这些信息只保存在内存中,是NameNode启动时,集群的具体情况动态的创建这些信息的)。
在整个集群中,只能有一个NameNode。
2、DataNode,是数据/文件块存储的节点,这些节点可以有多个,并且通过心跳机制向NameNode传送所存储的块的信息。
(注)块是HFDS的一个抽象概念,默认为64MB。
3、Secondary NameNode,最初从名称看,认为它是类似备库一种节点。但是看了介绍,发现这类节点不是备份节点那么简单,这类节点是对NameNode的一种补充,对Namespace Image和Edit Log计算合并,是Namespace image的checkpoint创建的同时,不会影响到客户端的访问,因为这种计算是非常强占资源。
这种类型的节点是可选的。
HDFS的NameNode是单节点的结构,这个节点出现故障,会造成整个集群不可用,所以个人觉得这是Hadoop的一个缺陷,也是今后学习时要关注的一个主题。
二、HFDS体系结构
HFDS也是以一种master/slave的结构。HFDS集群有一个Namenode和多个DataNode组成。NameNode是一个中心,它不仅对内进行管理,还要对外“接待”客户端的访问。
1、副本存放和读取策略
在HFDS中,数据块的存储都是采用多副本的存放方案,这样可以保障数据的安全;并且使用一种叫做“机架感知”的策略进行副本的存放。
举例说明,副本数是3,基于这种策略,有两份副本会保存到同一个机架上的不同几点上,将第三份副本存放到另外的机架;这样即可以充分利用同机架内的高网路带宽;也可以保证不会因为一个机架出现故障,所带来的数据丢失的风险。
HDFS在读取数据时,会尽量使用离客户端最近的副本,如果读取程序的同机架有数据副本,则会一直读取它。
2、安全模式
NameNode启动时,进入到一个特殊状态,即安全模式,这时不会进行数据块的复制的,会接收所有DataNode的心跳信号和块状态报告。
NameNode检测数据块的副本数目没有达到最小值(配置的),要等待30秒钟。
3、文件安全
(1)NameNode上的文件是这个系统最为重要的,需要进行备份,转储到其他文件系统中。
(2)使用Secondary NameNode进行周期性的,将Namespace image和Edit log的合并,并且在该节点上保留一份,再传送到NameNode上,替换以前的image。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26812308/viewspace-746902/ ,如需转载,请注明出处,否则将追究法律责任。