Zookeeper HA 铺排方案

Zookeeper HA 安顿方案

一、计划服务器情状

ZooKeeper Cluster

Host IP
zookeeper1 192.168.50.228
zookeeper2 192.168.50.229
zookeeper3 192.168.50.230

注:为了测量检验方便,把具有服务器的防火墙都关门了

#chkconfig iptables off #世世代代关闭防火墙

#chkconfig iptables on #永世开启防火墙

选拔主机名代替IP特别易读,修改章程如下:

1、修改主机名

#vim /etc/sysconfig/network

HOSTNAME=zookeeper1 #长机名称

2、配置hosts文件(也就是么有DNS服务器)

192.168.50.228 zookeeper1

192.168.50.229 zookeeper2

192.168.50.230 zookeeper3

二、安装SunJRE

2.1、JRE7下载

下载地址:

http://download.Oracle.com/otn-pub/java/jdk/7u75-b13/jre-7u75-linux-x64.tar.gz?AuthParam=1426833144\_785a1e689cccd502d1def7b4a777c646

2.2、安装

把jre7.tar.gz拷贝到安装目录,然后解压

#tar -zxvf jre7.tar.gz

2.3、配置遭受改观

#vim /etc/profile

export JAVA_HOME=/home/bdata/software/jre1.7.0_75

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export ZOOKEEPER_HOME=/home/bdata/software/zookeeper-3.4.6

export PATH=$PATH: $JAVA_HOME/bin :$ZOOKEEPER_HOME/bin

2.4、设置暗许JRE

sudo update-alternatives

 –install /usr/bin/java java /home/bdata/software/jre1.7.0_75/bin/java
300

三、安装zookeeper集群

•1、下载zookeeper

下载地址:

http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

2、安装&配置zookeeper

把tar文件解压到安装目录

#tar -zxvf zookeeper-3.4.6.tar.gz

在conf文件夹下创设zoo.cfg

#cd ${zookeeper_home}/conf

#cp zoo_sample.cfg zoo.cfg

#vim zoo.cfg

#陈设如下

#Zookeeper服务器心跳时间,单位飞秒

tickTime=2000

#投票大选新leader的开头化时间

initLimit=10

#Leader与Follower之间的最大响应时间单位,响应超过syncLimit*tickTime,Leader认为Follwer死掉,从服务器列表中除去Follwer

syncLimit=5

#数量寄存目录(长久化路线)

dataDir=/home/bdata/datadir/zk/data

#日志保存路线  这一个要自身新建

dataLogDir=/home/bdata/datadir/zk/logs

clientPort=2181

#最大的顾客端连接数,这里我们设置一千0

maxClientCnxns=10000

#集群配置,zookeeper1表示服务机器名能够接纳IP或机器名,使用机器名急需安装hosts文件,集群布署需求在dataDir钦赐的目录下创办七个myid文件,里面安装1-255之间的整数用作zookeeper唯一标志名称,集群必得设置该值

如/home/bdata/datadir/zk/data/myid

echo “1” > myid

#server.服务器标记=IP或机器名:大选leader端口(zk之间的报纸发表):接收大选数据通讯端口,还大概有三个客商端的端口2181,那多个端口不要混淆

server.1=zookeeper1:2887:3887

server.2=zookeeper2:2887:3887

server.3=zookeeper3:2887:3887

•3、设置日志输出路径

#vim ${zookeeper_home}/bin/zkEnv.sh

#################截取部分局署#################

ZOOBINDIR=”${ZOOBINDIR:-/usr/bin}”

ZOOKEEPER_PREFIX=”${ZOOBINDIR}/..”

if [ “x$ZOOCFGDIR” = “x” ]

then

  if [ -e “${ZOOKEEPER_PREFIX}/conf” ]; then

    ZOOCFGDIR=”$ZOOBINDIR/../conf”

  else

    ZOOCFGDIR=”$ZOOBINDIR/../etc/zookeeper”

  fi

fi

 

if [ -f “${ZOOCFGDIR}/zookeeper-env.sh” ]; then

  . “${ZOOCFGDIR}/zookeeper-env.sh”

fi

 

if [ “x$ZOOCFG” = “x” ]

then

    ZOOCFG=”zoo.cfg”

fi

 

ZOOCFG=”$ZOOCFGDIR/$ZOOCFG”

 

if [ -f “$ZOOCFGDIR/java.env” ]

then

    . “$ZOOCFGDIR/java.env”

fi

 

if [ “x${ZOO_LOG_DIR}” = “x” ]

then

#安装日志输出路线,默以为施行zkServer.sh start命令所在目录生成日志文件

    ZOO_LOG_DIR=”/home/bdata/software/datadir/zk/logs/”

fi

•4、启动zookeeper

每种节点都运营zookeeper服务

#zkServer.sh start

查看zookeeper运营情状

#zkServer.sh status

//展现如下音信表示集群运行退步(注:集群情状至少运行两台服务器才干不辱义务)

JMX enabled by default

Using config: /home/bdata/software/zookeeper-3.4.6/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

//**********************************************************************

//呈现如下音信表示集群运营成功

JMX enabled by default

Using config: /home/bdata/software/zookeeper-3.4.6/bin/../conf/zoo.cfg

Mode: leader  #leade节点突显leader,普通节点呈现follower

四、注意事项

1、检查情形(zkServer.sh status)现身:Error contacting service. It is
probably not running.

斩草除根办法:

打开zkServer.sh

找到

status)

    STAT=`echo stat | nc localhost $(grep clientPort “$ZOOCFG” | sed -e
‘s/.*=//’) 2> /dev/null| grep Mode`

在nc与localhost之间加上 -q 1 (是数字1并非字母l)

假若已存在则去掉

2、Unkown Host/不可能映射主机名错误/连接超时

化解方法,Zookeeper内部是经过配备主机名然后去DNS中搜索的IP实行访谈的,所以这里你不可能不运用主机名的措施实行寻访,一定要在本机HOST中布置IP映射。

Ubuntu 14.04装置遍及式存款和储蓄Sheepdog+ZooKeeper 

CentOS 6安装sheepdog 设想机布满式积累 

ZooKeeper集群配置

行使ZooKeeper完毕分布式分享锁

布满式服务框架 ZooKeeper — 管理分布式情状中的数据

ZooKeeper集群情状搭建实践

ZooKeeper服务器集群情状安顿实地度量

ZooKeeper集群安装

Zookeeper3.4.6的安装

正文永远更新链接地址:

http://www.bkjia.com/Linux/1107449.htmlwww.bkjia.comtruehttp://www.bkjia.com/Linux/1107449.htmlTechArticleZookeeper HA 安顿方案 一、计划服务器境遇ZooKeeper Cluster Host IP zookeeper1 192.168.50.228 zookeeper2
192.168.50.229 zookeeper3 192.168.50.230 注:为了测验方便…

1. Zookeeper介绍:

1.中心介绍:

Zookeeper:
为布满式应用提供布满式同盟(和煦)服务。使用类似文件系统的树形结构。目标是布满式服务不再须要由于同盟争论而其他完毕合营服务。

Zookeeper’s Hierarchical Namespace

诚如景况下Zookeeper集群的服务器数量是奇数个,2N+1,
N代表允许宕机的个数,下边小说中牵线使用3台主机实行尝试。

Zookeeper集群统一为任何分布式应用(也是集群,譬如HDFS集群、Yarn集群等等)集群提供合作服务

2. Zookeeper角色。

Zookeeper剧中人物不是手工业配置的,而是集群自动公投发生的:

(1)Leader:做定夺(做如何决定跟Zookeeper达成的功用有关),更新系统状态

(2)Follower:接入客商端。接收客商端诉求,并赶回响应结果给客商端。

(3)Observer:

(4)Client:使用合营服务的遍及式应用,举个例子HDFS集群。

Zookeeper Service

3.Zookeeper的杰出应用场景:

(1)统一命名服务(Name Service)

(2)配置处理(Configuration Management)

(3)集群处理(Group Membership)

(4)共享锁(Locks)/ 同步锁

2. Zookeeper集群意况搭建和运营:

假诺有独立的集群规划,能够在独立的机器上安装Zookeeper集群,笔者动用的是实验虚构机碰着,就直接在hadoop-senior01、hadoop-senior02、hadoop-senior03安装,与Hadoop共存,未有毛病。

1. 下载Zookeeper安装包:

行使版本:zookeeper-3.4.5.tar.gz

(1)java情状设置:

见前面文章。

(2)上传解压安装包:

$ tar -zxf zookeeper-3.4.5.tar.gz -C /opt/modules/

2. 配置Zookeeper:

(1)复制配置文件:

Zookeeper的主目录的conf文件夹下,有三个实例的布局文件zoo_sample.cfg,大家复制一份出来:

$ cd /opt/modules/zookeeper-3.4.5/conf

$ cp -a zoo_sample.cfg zoo.cfg

$ vi zoo.cfg

$ mkdir data

下边通过编写制定那几个文件来完毕Zookeeper的布局:

(2)配置数据存款和储蓄目录:

遵守支付标准,大家平常在zookeeper的装置目录下,新建八个目录data,将那么些目录作为zookeeper的数据存款和储蓄目录。

dataDir=/opt/modules/zookeeper-3.4.5/data

zoo.cfg主要参数介绍:

tickTime:zookeeper服务器与服务器之间,或然服务器与顾客端之间保持心跳的时间间隔。单位:阿秒。

clientPort:顾客端连接zookeeper服务器的端口。暗中认可2181

dataDir:Zookeeper保存数据的目录。

(3)在zoo.cfg中充足服务器音信:

格式: server.A=B:C:D  。 在zoo.cfg中增多如下内容:

server.1=192.168.8.128:2888:3888

server.2=192.168.8.129:2888:3888

server.3=192.168.8.130:2888:3888

(4)在每台服务器的$ZOOKEEPE本田UR-V_HOME/data/目录创制myid文件。

在hadoop-senior01服务器(192.168.8.128)上,cd
到$ZOOKEEPER_HOME/data/目录,创造myid文件,myid文件的剧情是1

在hadoop-senior02服务器(192.168.8.129)上,cd
到$ZOOKEEPER_HOME/data/目录,创造myid文件,myid文件的情节是2

在hadoop-senior03服务器(192.168.8.130)上,cd
到$ZOOKEEPER_HOME/data/目录,创设myid文件,myid文件的剧情是3

注意:myid文件在linux下用vi创建。

在一台机械上布置好,拷贝到别的服务器:

$ scp -r zookeeper-3.4.5/
natty@hadoop-senior02.pmpa.com:/opt/modules/

3.启动Zookeeper:

(1)启动Zookeeper:

$ bin/zkServer.sh start

(2)查看情状

$ bin/zkServer.sh status

$ jps

瞩目:运行操作需求在三台服务器上都执行

3. Zookeeper基本命令介绍

利用命令,能够利用bin/zkCli.sh脚本

$ bin/zkCli.sh

在zkCli.sh步向命令行方式后,可以敲命令操作。使用help命令来查阅可以动用的具备的一声令下。

[zk: localhost:2181(CONNECTED) 0] ls /

[zk: localhost:2181(CONNECTED) 1] help

[zk: localhost:2181(CONNECTED) 2] create /test pmpa_test

查看刚才创造的/test的音讯:

[zk: localhost:2181(CONNECTED) 4] get /test

4. Namenode HA 介绍:

为了防卫Namenode的单点故障,Hadoop 2.x本子扩大了HA(High Available
高可用)功用。在上边三种状态下,须要配备HA:Namenode机器发生意外;Namenode机器须要晋级。
HDFS HA通过配置Active/Standby
多个Namenode实现在集群中对Namenode的热备。上边实现配置:使用Quorum
Journal Manager(QJM)
在Active Namenode和Standby Namenode来共享edit
logs。

HDFS HA设计

其他,在hadoop
2.x本子在此以前,未有自带HA成效,若是要兑现此成效,能够应用Linux上的keepalived软件扩充热备。

HDFS HA设计

1. HDFS HA using QJM 架构:

在第一名的HA集群中,Active Namenode响应顾客端的操作乞求,而Standby
Namenode作为二个slave实行,只是保持跟Active Namenode的景观一样。Active
namenode和Standby
namenode为了保持一致,他们都与JournalNodes(JNs)实行通讯。每当Active
node修改namespace时,都会将修改日志计入JNs中,Standby node从JNs读取edit
logs,并时刻监察和控制JNs(只要艾德it Logs有改观就共同),因为Standy
node在时时监督,就足以确定保障在故障转移爆发时,Standby node的edit
Logs与Active node完全一致,进而直接切换到Active状态。

为了落到实处高效故障转移,Standby
node必得领悟集群中数据块的职分,为datanodes配置那2个Namenods(Active/Standby),何况datanodes同一时候向八个namenodes发送块音讯和心跳。

在HDFS
HA集群中,必需确认保证唯有二个Active节点,不然会导致错误和芜杂。

2. 硬件财富:

JournalNode daemon是轻量级的,能够和别的hadoop
daemons(namenode,resourcemanager等)共同运营在一台主机。JournalNode主机和Zookeeper主机很相像,必供给有单数个(2N+1)主机(最少3个),个中N代表能够宕机的数码,纵然宕机的数额超越了N,JournalNode集群就不可用了。

Standby namenode不得以替代Secondary Node的功力。

5. Namenode HA搭建配置和测验:

Namenode HA财富规划设计:

Namenode HA财富配置

Namenode
HA只涉及到HDFS角色,在hadoop-senior01.pmpa.com上安装Namenode(Active),在hadoop-senior02.pmpa.com上设置Namenode(Standby)。与yarn财富不争论。

1. 先备份从前的hadoop安装目录:

先停掉hdfs 和
yarn(拷贝文件夹前最佳先停掉利用),在senior01上举办,停掉hdfs:

$ sbin/stop-dfs.sh

在senior02上执行,停掉yarn:

$ sbin/stop-yarn.sh

备份hadoop安装目录(Senior01):

$ cp -ra hadoop-2.5.0/ hadoop-2.5.0_bak

上边根据官方文书档案来配置HDFS HA:

HDFS HA with
QJM

2. Namenode HA配置:

(1)配置NN HA须要布署 hdfs-site.xml。

a). 配置四个服务组名称,暗许名字是mycluster(可狂妄修改),
 配置项:dfs.nameservices。

b).
配置JournalNodes,私下认可端口是8485,配置项:dfs.namenode.shared.edits.dir。设计图中的
“SHARED EDITS”剧中人物。

c).
配置JournalNodes的本地保存目录,一般景色下会在$HADOOP_HOME/data下创办四个dn目录钦定之,当然能够随便钦点,配置项:dfs.journalnode.edits.dir

d).
配置代理Proxy,客商端的拜谒入口设置为代理,不再是事先的单独namenode。配置项:dfs.client.failover.proxy.provider.mycluster。

e).
配置隔离,选择的sshfence,这一项为了确认保障两台namenode唯有一台是active状态,平常意况下独有一台namenode对外提供服务。

(2)配置core-site.xml:

a). 配置hdfs的拜会入口:采访入口必要修改成mycluster,
配置项:fs.defaultFS。

多个布局文件内容如下:

core-site.xml

hdfs-site.xml

3.联合举行铺排:

(1)在senior02和senior03上创建 jn目录(保存journal node文件):

$ mkdir jn

(2)上面修改了core-site.xml 和
hdfs-site.xml,将这2个布局文件同步senior02和senior03。

$ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml
natty@hadoop-senior02.pmpa.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

$ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml
natty@hadoop-senior03.pmpa.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

4. HA with QJM 启动:

(1)运转 JournalNode,须要在三个节点上施行:

$ sbin/hadoop-daemon.sh start journalnode

那时候使用jps 能够看出 JournalNode 进度。

(2)在[nn1]上格式化,并运维namenode:

$ bin/hdfs namenode -format

$ sbin/hadoop-daemon.sh start namenode

(3)在[nn2]上同步[nn1]的元数据新闻:

$ bin/hdfs namenode –help

$ bin/hdfs namenode -bootstrapStandby

上面要在nn2上推行,nn2向nn1同步一回元数据音信。

(4)在[nn2]上启动namenode:

$ sbin/hadoop-daemon.sh start namenode

(5)将[nn1]切换成Active:

$ bin/hdfs haadmin -transitionToActive nn1

(6)在[nn1]上运行全部datanode:

$ sbin/hadoop-daemon.sh start datanode

(7)测试[nn1]和[nn2]的状态:

能够浏览器访问namenode
50070端口,能够发掘八个是active,二个是standby的动静。分别拜候:http://hadoop-senior01.pmpa.com:50070/
http://hadoop-senior02.pmpa.com:50070/

nn1  Namnode  —–Active

nn2  Namenode  —- Standby

大家得以上传二个测验文件到HDFS,在Active
节点中得以浏览到该公文,在Standby节点,提醒“Operation category READ is
not supported in state standby”。

上边把nn1 改成standby状态,再来查看这多个页面(手动切换Active/Standby)

$ bin/hdfs haadmin -transitionToStandby nn1

$ bin/hdfs haadmin -transitionToActive nn2

6. Namenode HA 完结活动故障转移:

Namenode HA达成自动故障转移:

Namenode达成活动故障转移

Namenode HA
自动故障转移,须求借助Zookeeper来产生。使用ZKFC组件来支持完毕。

HDFS  HA  Using QJM

1. 安顿活动故障转移:

(1)
在hdfs-site.xml开启自动故障转移,配置项:dfs.ha.automatic-failover.enabled。

(2)在core-site.xml配置Zookeeper的HA,配置项:ha.zookeeper.quorum

(3)同步转移到另外服务器:

$ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml
natty@hadoop-senior02.pmpa.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

$ scp etc/hadoop/core-site.xml etc/hadoop/hdfs-site.xml
natty@hadoop-senior03.pmpa.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

2. 开行Zookeeper自动故障转移:

(1)关闭hdfs:

$ sbin/stop-dfs.sh

(2)运维zookeeper(每台机械开动):

$ bin/zkServer.sh start

(3)伊始化HA在Zookeeper集群中的状态(在里边一台Namenode上运维):

$ bin/hdfs zkfc -formatZK

(4)启动hdfs 服务:

$ sbin/start-dfs.sh 

行使start-dfs.sh 运维hdfs后,也会运行zkfc。

能够直接在一一Namenode节点上运转DFSZK Failover Controller
,通过jps可查看到DFSZKFailoverController进度。

经过sbin/hadoop-daemon.sh ,可以挑选在nn1
和nn2上哪个先运转zkfc。在哪台Namenode上先运转,哪台就是Active状态(其他的正是Standby状态)。

$ sbin/hadoop-daemon.sh start zkfc

3. 测验Zookeeper 自动故障转移:

起步了HDFS之后,在浏览器访谈50070端口,鲜明senior02是Active状态、Senior01是Standby状态。以后通过在nn2上杀掉Namenode进度(模仿Senior02故障,看看Senior01是还是不是能够自动切换成Active状态)。

$ jps

12017 DFSZKFailoverController

5675 QuorumPeerMain

11803 DataNode

11730 NameNode

11892 JournalNode

12119 Jps

$ kill -9 11730

在senior02上杀掉namenode进程后,能够在senior01的50070端口访谈,看到已经切换成Active状态。

Senior01 切换到Active状态

7. ResourceManager HA 介绍:

1. RM HA介绍:

Resource
Manager担任集群中能源追踪、分配和接纳的调节(比方作业调解)。在Hadoop
2.4版本以前,Yarn集群中的Resource Manager存在单点故障。RM
HA增多了一组冗余的Active/Standby Resource Manager来防止单点故障。

2. Resource Manager HA架构:

RM HA Architecture

  1. RM记录的情状:

(1)Job职分的情事,

(2)能源气象,各个任务。

一旦贰个职分急需施行半小时,Job在施行到半小时的时候Resource
Manager出错,配置的RM HA应该能够一贯切换来Standby
RM,并且那些职分应该继续试行后半钟头内容,不该重新实行,那样会很耗费时间。

RM的情事是记录在Zookeeper中的。

  1. Zookeeper作用

(1)监控ResourceManager ;

(2)切换active/standy状态;

(3)保存情况:

              a) Job职责的情景

              b) 财富的气象

8. ResourceManager HA 搭建配置和测量试验:

1. 能源主机规划:

上边是能源主机规划设置列表:

RM HA 能源布置列表

修改mapred-site.xml来修改jobhisotry的安插节点(原来在senior03,现在切回到senior01)。

停掉jobhistoryserver:

$ sbin/mr-jobhistory-daemon.sh stop historyserver

2. RM HA配置:

亟待修改配置文件yarn-site.xml:

能够依照官方网址的sample configuration
来进展布署,官方网址地址: ResourceManagerHA

兑现RM HA须求确认保障Resource Manager的自发性重启,所以还扩张Resource Manager
Restart的陈设。在保存RM状态时,有三种办法,二个是保留在Zookeeper中(架构图中状态),一种是保存在HDFS中。
关于RM
Restart的参阅,官方网址地址:ResourceManagerRestart

保存到Zookeeper和hdfs的图景的三个类分别是:

org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore

3. 配置同步,rm运营

(1)同步布署:

手拉手布置到其余两台服务器,作者修改了yarn-site.xml和mapred-site.xml:

$ scp etc/hadoop/yarn-site.xml etc/hadoop/mapred-site.xml
natty@hadoop-senior02.pmpa.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

$ scp etc/hadoop/yarn-site.xml etc/hadoop/mapred-site.xml
natty@hadoop-senior03.pmpa.com:/opt/modules/hadoop-2.5.0/etc/hadoop/

(2)启动rm1 和 rm2:

a) 在senior02上启动 yarn:

$ sbin/start-yarn.sh

上边操作会运营senior02的resource manager和三台服务器的node manager。

b) 在senior03上启动resource manager:

$ sbin/yarn-daemon.sh start resourcemanager

c) 查看七个Resource Manager 的图景:

查看rm1的状态(active状态):

$ bin/yarn rmadmin -getServiceState rm1

查看rm2的状态(standby状态):

$ bin/yarn rmadmin -getServiceState rm2

d) 启动 jobhistoryserver:

$ sbin/mr-jobhistory-daemon.sh  start historyserver

4. 测量检验RM HA ,通过调整职务来测量检验:

调治三个wordcount职务:

$ bin/yarn jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount
/words.txt /output20

职责符合规律实行完,今后rm1(Senior02)是active  rm2(Senior03)是standby。

上边在职分实践进度中(到map阶段),笔者把senior02的resource
manager进度kill掉,根据剖析rm2应该自行切换为active,并且继续施行任务。

在senior01上调整义务,试行日志如下:

RM HA 测量试验日志

通过日记,能够见到,在rm1的resourcemanager进度杀掉后,自动切换成rm2,作业继续实践,最终实行成功。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图