1、hdfs ha
nn active 单点故障SPOF
snn checkpoint 1小时
nn standby 实时备份 实时等待nn active节点挂,随时standby
现在企业普遍还是用2个nn组成hdfs ha 高可靠
data001 nn1(active) zkfc(zookeeperfailovercontrol) jn(日志节点) dn zk
data002 nn2(standby)zkfc(zookeeperfailovercontrol)jn dn zk
data003 jn dn zk
集群的最小版 3台机器
设想一下HA,当其中一个节点挂了,访问不可能去修改代码、脚本等改为第二台机器的ip
命名空间
hdfs dfs -ls hdfs://ruozedata001:9000/
做HA的两种方法
1、QJM
2、NFS
如果zookeeper集群上面有其他应用,可以考虑hdfs和zk集群分开,以防hdfs无法及时切换。
active nn:接收client的rpc的请求,同时自己的editlog文件写一份,也会向jn集群写一份,也同时接收dn的heartbeat blockreport block
standby nn:同时会接受到从jn集群的这份记录,使自己的元数据和active的元数据保持一致。这个动作叫做【重演】。说白了就是acitve nn的一个实时热备份
一旦standby切换为active活动的状态就能够立即马上对外提供服务。
journalNode jn:用于active standby nn同步数据的,本身由jn节点组成,至少2n+1,保证高可用。允许至多(n-1)/2台 jn节点失败。
生产上,65台刀片机,56物理core,2颗GPU,5个SSD/500G,10块2T/机械硬盘 7台jn 10万一台
问清楚,哪些ip机器是一个机架上的(哪些机器是公用一个网络设备的)
jn要放在不同机架上,防止机架出现问题或者网络设备出问题,导致一批网络都进不去
zkfc:
监控nn的健康状态,向zk集群定期地发送心跳,让自己被选举上,当被zk选举为active时,zkfc通过rpc协议调用让nm状态转换为nn active
dn:同时向两个nn发送块报告
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的资源汇报。负责资源的分配
zkfc:自动故障转移,是rm的线程。 非独立的守护进程
zk部署奇数,如果挂来一台变偶数,那投票就会失效
hdfs做ha之后,合并文件是各自的工作。
1个G可以有500多万个文件(一个文件200k)