Hadoop主要模块
Hadoop主要作为资源管理器主要分为两个部分Yarn和HDFS(MapReduce是一种编程模型,先不写),
Yarn (Yet Another Resourse Negotiator)
Yarn需要启动的节点有ResourseManager和NodeManager以及ApplicationMaster。
相当于主从结构 ResourseManager几种管理NodeManager的信息包括内存和CPU,Nodemanager注册到ResourseManager,以及执行实际的任务,管理Container的生命周期、监控每一个Container的资源使用(内存、CPU等)情况、追踪节点健康状况、管理日志。其实Container是任务申请的空间。ApplicationMaster是用户编写的Yarn ,首先注册到RM,然后去跟RM申请资源,申请到后项RM要资源执行自己的任务。
其中RM是高可用 用ZK提供主备冗余
抄了一张图
HDFS
有以下节点
Namenode(Activity)
Nomenode(StandBy)
Datanode
DFSZKFailoverController(zkfc)
JournalNode
Namenode
管理HDFS的命名空间,维护文件系统的目录Activity和StandByDFSZKFailoverController通过实现主备HA
Datanode
是HDFS真是存储文件的地方
JournalNode
是主备NameNode的共享数据,本身JournalNode是个集群,当Activity有修改的时候,会保证大部分JournalNode得到同步,然后StandBy会读取JournalNode变更的信息,在主备切换的时候,保证命名空间一致。
DFSZKFailoverController
zkfc启动在DataNode上,通过检测本地Datanode的健康状态和通过ZK的节点选主实现主备切换,ZKFC为防止脑裂,实现了“fencing”的功能,选主的时候会在ZK上注册两个节点
/ActiveStandbyElectorLock和/ActiveBreadCrumb,第一个是临时节点,保证连接超时会删除,StandBy发现后可以抢注。后一个是永久节点,注册当前Activity的信息,如果是原来的Activity不正常断开,则次节点会存在,如果刚注册的Activity NameNode发现该节点有不是自己的信息,则调用RPC的transitionToStandby把对方置位StandBy,或者SSH登录该机器把进程Kill。
抄来一张图