hadoop高可用集群搭建
Hadoop 高可用集群搭建? 一、Hadoop 高可用原理? 1. 原理? Hadoop 高可用(Hadoop High Availability) ,是保证业务连续性的有效解决 方案,通常通过设置备用节点的方式实现。一般将执行业务的名称节点称为活 动节点(Active) ,另一个名称节点作为备用的节点(Standby) ,当活动节点出 现问题导致业务不能正常的执行时,备用节点此时就会监测到,并立即切换为 活动状态,从而保证业务的正常运行而不会被中断。 2. NameNode 高可用? NameNode 是 HDFS 的核心, 如果 NameNode 失效了, 那么整个 HDFS 也就 不能提供服务了,所以 Hadoop 提供了高可用的方案,即 Hadoop HA;HDFS 提 供了两种高可用的方案:一种是基于 QJM(Quorum Journal Manager) ,另一种 是基于 NFS 的。这里使用 QJM 来解决 NameNode 的单点故障问题,解决的方 案就是在 HDFS 集群中建立多个 NameNode 节点。 为了保证NameNode元数据的一致性和编辑日志的安全性, 采用Zookeeper 来存储编辑日志文件。 多个 NameNode 节点中只有一个是处于 Active 状态的,其余都是 Standby 状态,同一时间只能有一个处于 Active 状态的 NameNode 节点。 多个 NameNode 上存储的元数据是实时同步的, 当 Active 的 NameNode 出 现故障时,通过 Zookeeper 实时切换到 Standby 的 NameNode 上,并将状态改 为 Active。 HDFS HA 架构中有两台 NameNode 节点,一台是处于活动状态(Active)为 客户端提供服务,另外一台处于热备份状态(Standby) 。 DataNode 会将心跳信息和 Block 汇报信息同时发给两台 NameNode, DataNode 只接受 Active NameNode 发来的文件读写操作指令。 为了使备用节点 保持其状态与 Active 节点同步,两个节点都与一组称为“JournalNodes” (JN) 的单独守护进程通信。当 Active 节点执行任何名称空间修改时,它会将修改记 录持久地记录到大多数这些 JN 中。待机节点能够从 JN 读取编辑,并且不断观 察它们对编辑日志的更改。当备用节点看到编辑时,它会将它们应用到自己的 命名空间。如果发生故障转移,Standby 将确保在将自身升级为 Active 状态之 前已从 JournalNodes 读取所有编辑内容。这可确保在发生故障转移之前完全同 步命名空间状态。 3. ResourceManager 高可用? ResourceManager HA 通过主动/备用架构实现 - 在任何时间点,其中一个 RM 处于活动状态,并且一个或多个 RM 处于待机模式,等待活动 RM 出现故 障或者宕机时机。 转换为活动的触发器来自管理员 (通过 CLI)或启用自动故障 转移时的集成故障转移控制器。 RM 可以选择嵌入基于 Zookeeper 的 ActiveStandbyElector 来决定哪个 RM 应该是 Active。当 Active 关闭或无响应时,另一个 RM 自动被选为 Active,然 后接管。请注意,不需要像 HDFS 那样运行单独的 ZKFC 守护程序,因为嵌入在 RM 中的 ActiveStandbyElector 充当故障检测器和领导者选择器而不是单独的 ZKFC 守护程序。 当存在多个 RM 时,客户端和节点使用的配置(yarn-site.xml)应该列出所 有 RM。客户端,应用程序管理器 ApplicationMaster(AM)和节点管理器 NodeManager(NM)尝试以循环方式连接到 RM,直到它们到达活动 RM。如 果活动停止,他们将恢复循环轮询,直到他们连接到新的 RM。 二、集群规划? 机器名 IP 地址 软件列表 运行进程 hadoop01 192.168.128.128 JDK Zookeeper Hadoop Namenode Resourcemanager Quorumpeermain(Zookeeper) DFSZKFailoverController(zkfc) hadoop02 192.168.128.129 JDK Zookeeper Hadoop Namenode Resourcemanager Quorumpeermain(Zookeeper) DFSZKFailoverController(zkfc) hadoop03 192.168.128.130 JDK Zookeeper Hadoop Datanode Nodemanager Journalnode Quorumpeermain(Zookeeper) Jobhistroy hadoop04 192.168.128.131 JDK Hadoop Datanode nodemanager journalnode hadoop05 192.168.128.132 JDK Hadoop Datanode nodemanager journalnode 其中 hadoop01、hadoop02 作为名称节点同时使用 Zookeeper 的 zkfc 对名 称节点进行控制,并且作为 YARN 框架的主节点,hadoop03、hadoop04 和 hadoop05 作为数据节点, 并且三台机器都是 YARN 的子节点,使用了 Hadoop HA 中的 journalnode 构成了一个共享存储器,当向名称节点传输元数据时,会 拷贝三份到这个共享存储器中。 三、准备工作? 1. 创建 5 台 linux 服务器? 2. 安装文件上传下载工具? 安装上传下载工具: yum -y install lrzsz (此处已提前安装过了) 从本地文件上传到服务器中: rz 上传到服务器后查询上传文件(默认上传到当前目录下) 从服务器下载到本地文件中: sz 下载到本地后查询文件(默认下载到下载目录下) 3. 配置 SSH 免密登录? 1) 配置每台服务器的主机名 查看当前主机的主机名: hostname 修改当前主机的主机名: hostnamectl set-hostname 新主机名 2) 配置每台服务器的本地解析 hosts 文件 配置解析文件: vim /etc/hosts 3) 配置 SSH 免密登录 查询是否有 hadoop 用户: cat /etc/passwd 创建 Hadoop 用户和密码: useradd hadoop passwd hadoop 切换至 hadoop 用户: su hadoop 生成 SSH 密匙: ssh-keygen -t rsa 将 id 发送至其他机器中: ssh-copy-id -I hadoop01 同样的方式发送到 其他机器中 测试 ssh 连接 4. 安装 Java 运行环境? 1) 下载 Ja