Hadoop学习笔记和总结(四)
目录
第四章 Hadoop的四种模式
无论是哪种模式,都需要先搭建Hadoop环境。推荐一个搭建教程,本人也是通过该方法搭建成功的。
链接:
4.1 伪分布式
该模式通常用于个人的学习,非生产环境。不多叙述,了解即可。。。
4.2 完全分布式
架构:一个主节点多个从节点,即一主多从
NameNode(主节点)主要负责:
(1)存储元数据
元数据:管理数据的数据,存储的就是DataNode存储数据的描述,包括数据存储在DataNode的哪一个节点上,以及数据是谁上传的。
即:抽象目录树、数据与数据块的映射关系、数据块存储的位置信息。(在后面将详细说明)
(2)处理读写请求,即文件的上传下载。
DataNode(从节点)主要负责:集群中真正的数据存储。需要注意的是,DataNode存储数据时,需先经过NameNode,先存储其元数据信息。
该模式存在的一些问题:
(1)NameNode一旦宕机,集群则无法使用。
该问题是完全分布式的一种缺点,也叫单点故障。所以该模式一般在生产环境中不采用。只在学习或公司测试时使用。但如果生产环境中节点比较少的时候也可以使用完全分布式。
(2)集群中节点(从节点)数目越多,NameNode宕机的几率越大。
(3)SecondaryNameNode只是一个助理,只是分担NameNode的压力,无法真正替代NameNode。
4.3 高可用集群
该模式是目前最广泛的搭建方式。该模式可以保证集群可以持续对外提供服务,可以做到7*24小时不间断。
高可用集群依赖于Zookeeper,这种集群的搭建方法建议学习Zookeeper组件后再研究,目前不涉及搭建过程。
(Zookeeper学习总结:)
架构:多主多从(本文以双主多从为例)
集群中会存在两个NameNode(主节点),但在同一时间只有一个NameNode是活跃的,活跃状态称为Active。另一个处于热备份状态,称为Standby。
但是这两个NameNode存储的元数据是一模一样的,若Active宕机,则Standby立刻切换为Active,对外提供持续服务;假如过了一段时间,宕机的NameNode复活,但复活后的状态只能是Standby喽。
该模式存在的一些问题:
(1)在同一时间,集群中只有一个active的NameNode
集群中具有主节点能力的节点只有一个,如果集群中节点过多(1000节点),会导致NameNode存储的元数据增多,会造成NameNode崩溃(两个都崩溃)。
实际上,这种谁Active谁工作的模式,依旧是单主工作。另一个NameNode没有真正的分担NameNode的压力,所以在超大集群的时候,采用联邦机制。
4.4 联邦机制
架构:多主多从(以两主多从为例)
同一个集群中可以有多个主节点,这些主节点的地位是相同的。同一时间,可以有多个活跃(Active)的NameNode。
主节点的分工:这两个NameNode共同使用集群中所有的DataNode,每个NameNode负责管理集群中的DataNode上的一部分数据。
每个NameNode进行数据管理靠的是BlockPoolID(块池ID),不同的NameNode管理的BlockPoolID是不同的。
DataNode中的数据是通过BlockPoolID(块池ID)标记进行区分的。
如图:
该模式存在的一些问题:
(1)联邦模式也存在NameNode宕机,即单点故障问题。所以生产环境通常采用联邦机制 & 高可用的集群搭建模式。
实际生产中使用最广:高可用模式(一般公司)
超大集群:联邦模式 & 高可用(电商等)