日志

Hadoop NameNode 高可用架构

NameNode是HDFS(hadoop分布式文件系统)的核心组件,在hadoop 1.x中NameNode存在SPOF(单点故障)问题,NameNode存储了HDFS的元数据信息,一旦NameNode宕机那么整个HDFS就无法访问,依赖HDFS的服务也会被波及(HBase、Hive…)同样无法访问,整个集群陷入瘫痪。NameNode的单点故障问题也使得Hadoop在1.x时代一直都只能用作离线存储和离线计算,无法满足对高可用要求很高的应用场景。Hadoop2.x针对NameNode的SPOF问题提出了高可用架构方案(HA),目前已经能在生产环境下应用。本文主要介绍该高可用架构的主备切换机制。

一、NameNode高可用架构

Hadoop NameNode高可用架构

Hadoop NameNode高可用架构

二、组件概述

Active NameNode 与 Standby NameNode

在NameNode的HA方案中有两个不同状态的NameNode,分别为活跃态(Active)和后备态(Standby),其中只有Active NameNode能对外提供服务,Standby NameNode会根据Active NameNode的状态变化,在必要时可切换成Active.

ZKFC

ZKFC即ZKFailoverController,是基于Zookeeper的故障转移控制器,它负责控制NameNode的主备切换,ZKFC会监测NameNode的健康状态,当发现Active NameNode出现异常时会通过Zookeeper进行一次新的选举,完成Active和Standby状态的切换

HealthMonitor

阅读全文

日志

kafka集群部署

Kafka是一个分布式的,可分区的,支持冗余备份的日志服务,提供消息系统功能,它相当于一条插口式的高速数据总线,主要用于处理活跃的流式数据,能有效降低系统组网的复杂度,和编程复杂度。本文主要介绍如何部署Kafka集群。

Kafka集群依赖Zookeeper集群协调管理,所以部署Kafka集群之前我们需要先搭建好Zookeeper Cluster

集群环境

假设有以下集群节点
hadoop1(192.168.10.1)
hadoop2(192.168.10.2)
hadoop3(192.168.10.3)

Zookeeper集群搭建

1)下载Zookeeper

Zookeeper Download

2)安装

将安装包解压到集群各个节点的指定目录下($ZK_HOME)

3)配置

在$ZK_HOME/conf/创建zoo.cfg配置文件

#基本时间单位,控制心跳和超时的基准
tickTime=2000

#允许 follower (相对于 leader 而言的“客户端”)连接并同步到 leader 的初始化连接时间.
#它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败.
initLimit=10

#leader 与 follower 之间发送消息,请求和应答时间长度.
#如果 follower 在设置的时间内不能与leader 进行通信,那么此 follower 将被丢弃.
syncLimit=5

#自动清理事务日志和快照的时间间隔(小时)
autopurge.purgeInterval=24

#需要保留的快照文件数
autopurge.snapRetainCount=30

#存储数据的位置
dataDir=/hadoop/zookeeper

#监听客户端连接端口
clientPort=2181

#指定集群的机器配置,配置格式为“server.id=host:port:port”,其中id必须唯一.
#并且需要在各台机器的dataDir下创建一个myid的文件,在myid文件中输入对应机器的id值.
#另外,第一个端口( 2888 )是follower机器连接到leader机器的端口,第二个端口(3888)是用来进行leader选举的端口.
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

4)运行

在各个节点上启动zookeeper

$ZK_HOME/bin/zkServer.sh start

观察zookeeper运行状态

$ZK_HOME/bin/zkServer.sh status

Kafka集群搭建

阅读全文