1.hadoop ha
1.1 节点
nn active 单点故障
snn checkpoint 1小时
nn standby 实时备份
实时等待nn active节点挂,随时由standby 实时备份--》active 活动的
1.2 hadoop ha 架构图
现在企业普遍还是用2个nn 组成 hdfs ha 高可靠
zkfc(zookeeperfailovercontrol)
pentalKill001 nn1(active) zkfc journalnode(jn) dn zk
pentalKill002 nn2(standby) zkfc jn dn zk
pentalKill003 jn dn zk
集群的最小版 3台
架构图
2.hdfs ha架构
2.1 架构理解
pentalKill001 nn1(active) 192.168.1.100
pentalKill002 nn2(standby) 192.168.1.101
hdfs dfs -ls
其实访问是这个路径 /user/hadoop/
hdfs dfs -ls /
hdfs dfs -ls hdfs:/pentalKill001:9000/
设想一下 HA,当其中一个点挂了,访问不可能去修改代码,脚本等
改为第二台机器的ip
为了解决这个问题,引入 命名空间
hdfs dfs -ls hdfs://nameservice1/
当 active --》standby standby-->active 对外实时提供读写服务,
对于客户端来说,是无感知的,平滑过渡的。
Prior to Hadoop 2.0.0,
the NameNode was a single point of failure (SPOF) in an HDFS cluster.
as of 3.0.0 more than two
计算 要支持重跑
2.2 各个组件的功能
active nn:
接收client的rpc的请求,同时自己的editlog文件写一份,
也会向jn集群写一份
也同时接收dn的heartbeat blockreport block
standby nn:
同时会接受到从jn集群的这份记录,使自己的元数据和active nn的元数据保持一致。
这个动作叫做 【重演】,说白了 就是active nn的一个实时热备份。
一旦standby切换为active状态,就能够立即马上对外提供服务。
JournalNode jn集群:
用于active standby nn同步数据的,
本身由jn节点组成,至少3台 2n+1 保证高可用
you should run an odd number of JNs, (i.e. 3, 5, 7, etc.).
Note that when running with N JournalNodes,
the system can tolerate at most (N - 1) / 2 failures and
continue to function normally.
5台jn 允许失败的jn节点:5-1=4/2=2
上家的
65台刀片机 256G 56物理core
2颗GPU 5个SSD 500G 10块 机械硬盘 2T = 10W/台 硬件成本
7台
++问清楚 哪些ip机器是一个机架上的?++
zkfc:
监控nn的健康状态
向zk集群定期的发送心跳 让自己被选举上,
当被zk选举为active时,zkfc通过rpc协议调用让nn状态转换为nn active
dn:
同时向两个NN发送 心跳 块报告
3.yarn ha架构
简配: 【对标】hdfs ha,没有类似jn集群--》zk来替代的
没有zkfc单点进程--》rm进程的zkfc线程
没有dn的多向nn发送心跳--》nm只向active rm发送心跳
架构图
rm:
a.启动时 向zk集群hadoop-ha目录写个lock文件。写成功标识为active,否则为standby。
standby:
rm节点会一直监控这个lock文件是否存在,假如不存在,就尝试去创建,争取为active rm。
b.同时会接收client的任务的请求,接收和监控nm的资源汇报,负责资源的分配调度,启动和监控applicationmaster.
zkfc:
自动故障转移 是rm的线程 非独立的守护进程