如图有6台机器,其中1号为老大,老大分为两组,一组是HDFS的老大namenode,一组是MapReduce的老大resourcemanager(它跟yarn公用同一套进程)。2号为备份的老大,只有namenode(所以它只管HDFS)。为了防止压力过大,"把老大一分为2"。resourceManager放在了3号节点上(所以它只管MapReduce)。由zookeeper来监听1,2,3号节点的健康状态。2号和3号节点都处于备份状态。4号,5号,6号为小弟,也要做nodemanager(HDFS小弟)——存数据和datanode(MapReduce小弟)——处理数据,这两个角色不能分开(分开时处理数据会浪费时间)。JournalNode只同步元数据(存储的,丢失了就不好拼到一块)信息,因为处理的信息在内存里(一宕机数据就会丢失,但是重新计算还是可以接受的)。JournalNode最好是基数台(宕机可重新选举,保证高可用),这里为了节省机器数量,全放在了4,5,6号机器上。
但是,如果是生产环境下,会做成如下的形式。
正常情况下,3号节点不工作,节点一做老大的所有工作。2号节点做1号节点的备份工作和文件的合并的工作。
1号节点宕机,2、3号节点马上工作。