企业级Hadoop大数据平台实战(4)——搭建hdfs和yarn模块

搭建环境

实验环境:RHEL7.5 selinux and iptables is disabled
Hadoop 、jdk、zookeeper 程序使用 nfs 共享同步配置文件
软件版本:
hadoop-3.2.1.tar.gz jdk-8u181-linux-x64.tar.gz

#将server5和server9调成2G内存,并且是namenode
客户端:server6/7/8/

主机信息 作用
server5(172.25.8.5) NameNode/ DFSZKFailoverController/ ResourceManager
server6(172.25.8.9) NameNode/ DFSZKFailoverController / ResourceManager
server7(172.25.8.7) JournalNode/ QuorumPeerMain/ DataNode/ NodeManager
server8(172.25.8.8) JournalNode/ QuorumPeerMain/ DataNode/ NodeManager
server9(172.25.8.6) JournalNode/ QuorumPeerMain/ DataNode/ NodeManager
NN:Namenode
RM(ResourceManager):资源监控和分配,管理系统资源
NM(nodeManager):节点管理:中间人
AM(ApplicationMaster):和RM商量资源需求,应用 job申请资源----》RM分配资源---》AM认证---
在典型的 HA 集群中,通常有两台不同的机器充当 NN。在任何时间,只有一台机器处于Active 状态;另一台机器是处于 Standby 状态。Active NN 负责集群中所有客户端的操作;而 Standby NN 主要用于备用,它主要维持足够的状态,如果必要,可以提供快速的故障恢复。
为了让 Standby NN 的状态和 Active NN 保持同步,即元数据保持一致,它们都将会和JournalNodes 守护进程通信。当 Active NN 执行任何有关命名空间的修改,它需要持久化到一半以上的 JournalNodes 上(通过 edits log 持久化存储),而 Standby NN 负责观察 edits log的变化,它能够读取从 JNs 中读取 edits 信息,并更新其内部的命名空间。一旦 Active NN出现故障,Standby NN 将会保证从 JNs 中读出了全部的 Edits,然后切换成 Active 状态。Standby NN 读取全部的 edits 可确保发生故障转移之前,是和 Active NN 拥有完全同步的命名空间状态。
为了提供快速的故障恢复,Standby NN 也需要保存集群中各个文件块的存储位置。为了实现这个,集群中所有的 Database 将配置好 Active NN 和 Standby NN 的位置,并向它们发送块文件所在的位置及心跳,如下图所示:

企业级Hadoop大数据平台实战(4)——搭建hdfs和yarn模块_第1张图片
在任何时候,集群中只有一个 NN 处于 Active 状态是极其重要的。否则,在两个 Active NN的状态下 NameSpace 状态将会出现分歧,这将会导致数据的丢失及其它不正确的结果。为了保证这种情况不会发生,在任何时间,JNs 只允许一个 NN 充当 writer。在故障恢复期间,将要变成 Active 状态的 NN 将取得 writer 的角色,并阻止另外一个 NN 继续处于 Active状态。

为了部署 HA 集群,你需要准备以下事项:
(1)、NameNode machines:运行 Active NN 和 Standby NN 的机器需要相同的硬件配置;
(2)、JournalNode machines:也就是运行 JN 的机器。JN 守护进程相对来说比较轻量,所以这些守护进程可以可其他守护线程(比如 NN,YARN ResourceManager)运行在同一台机器上。在一个集群中,最少要运行 3 个 JN 守护进程,这将使得系统有一定的容能力。当然,你也可以运行 3 个以上的 JN,但是为了增加系统的容错能力,你应该运行奇数个 JN(3、5、7 等),当运行 N 个 JN,系统将最多容忍(N-1)/2 个 JN 崩溃。

在 HA 集群中,Standby NN 也执行 namespace 状态的 checkpoints,所以不必要运行Secondary NN、CheckpointNode 和 BackupNode;事实上,运行这些守护进程是错误的。

你可能感兴趣的:(Linux运维进阶)