安裝高可用Hadoop生態 (二) 安裝Zookeeper

2.    安裝Zookeeper

2.1. 解壓程序

※ 3臺服務器分別執行

tar -xf ~/install/zookeeper-3.4.9.tar.gz -C/opt/cloud/packages

ln -s /opt/cloud/packages/zookeeper-3.4.9 /opt/cloud/bin/zookeeper
ln -s /opt/cloud/packages/zookeeper-3.4.9/conf /opt/cloud/etc/zookeeper

mkdir -p /opt/cloud/data/zookeeper/dat
mkdir -p /opt/cloud/data/zookeeper/logdat
mkdir -p /opt/cloud/logs/zookeeper

2.2. 修改配置文件

2.2.1.    修改zoo.cfg

mv /opt/cloud/etc/zookeeper/zoo_sample.cfg  /opt/cloud/etc/zookeeper/zoo.cfg
vi /opt/cloud/etc/zookeeper/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000

# The number of ticks that the initial
# synchronization phase can take
initLimit=10

# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/cloud/data/zookeeper/dat
dataLogDir=/opt/cloud/data/zookeeper/logdat[1]

# the port at which the clients will connect
clientPort=2181

# the maximum number of client connections.
# increase this if you need to handle more clients
maxClientCnxns=100

#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
autopurge.snapRetainCount=5[2]

# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=6

# server.A=B:C:D
server.1=hadoop1:2888:3888[3]
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888

 

2.2.2.    修改log配置文件

vi /opt/cloud/etc/zookeeper/log4j.properties

修改配置項

zookeeper.root.logger=INFO, DRFA
zookeeper.log.dir=/opt/cloud/logs/zookeeper 

增加DRFA日誌定義

log4j.appender.DRFA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DRFA.Append=true
log4j.appender.DRFA.DatePattern='.'yyyy-MM-dd
log4j.appender.DRFA.File=${zookeeper.log.dir}/${zookeeper.log.file}
log4j.appender.DRFA.Threshold=${zookeeper.log.threshold}
log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
log4j.appender.DRFA.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n
log4j.appender.DRFA.Encoding=UTF-8
#log4j.appender.DRFA.MaxFileSize=20MB

2.2.3.    複製到另外2臺服務器

scp /opt/cloud/etc/zookeeper/zoo.cfg hadoop2:/opt/cloud/etc/zookeeper
scp /opt/cloud/etc/zookeeper/log4j.properties hadoop2:/opt/cloud/etc/zookeeper
scp /opt/cloud/etc/zookeeper/zoo.cfg hadoop3:/opt/cloud/etc/zookeeper
scp /opt/cloud/etc/zookeeper/log4j.properties hadoop3:/opt/cloud/etc/zookeeper

2.3. 生成myid

       在dataDir目錄下創建一個myid文件,然後分別在myid文件中按照zoo.cfg文件的server.A中A的數值,在不同機器上的該文件中填寫相應的值。

ssh hadoop1 'echo 1 >/opt/cloud/data/zookeeper/dat/myid'
ssh hadoop2 'echo 2 >/opt/cloud/data/zookeeper/dat/myid'
ssh hadoop3 'echo 3 >/opt/cloud/data/zookeeper/dat/myid'

2.4. 設置環境變量

vi ~/.bashrc

增加

export ZOO_HOME=/opt/cloud/bin/zookeeper
export ZOOCFGDIR=${ZOO_HOME}/conf
export ZOO_LOG_DIR=/opt/cloud/logs/zookeeper
export PATH=$ZOO_HOME/bin:$PATH

即刻生效

    source ~/.bashrc

複製到另外兩臺服務器

scp ~/.bashrc hadoop2:/home/hadoop
scp ~/.bashrc hadoop3:/home/hadoop

2.5. 手工執行

1.啓動

zkServer.sh start

2.輸入jps命令查看進程

QuorumPeerMain
Jps

其中,QuorumPeerMain是zookeeper進程,啓動正常。

3、停止zookeeper進程

zkServer.sh stop

4、啓動zookeeper集羣

[hadoop@hadoop1 ~]$ cexec 'zkServer.sh start'

************************* cloud *************************
--------- hadoop1---------
ZooKeeper JMX enabled by default
Using config: /opt/cloud/bin/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

--------- hadoop2---------
ZooKeeper JMX enabled by default
Using config: /opt/cloud/bin/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

--------- hadoop3---------
ZooKeeper JMX enabled by default
Using config: /opt/cloud/bin/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

5、查看zookeeper集羣狀態

 

[hadoop@hadoop1 ~]$ cexec 'zkServer.sh status'

************************* cloud *************************

--------- hadoop1---------
ZooKeeper JMX enabled by default
Using config: /opt/cloud/bin/zookeeper/bin/../conf/zoo.cfg
Mode: follower

--------- hadoop2---------
ZooKeeper JMX enabled by default
Using config: /opt/cloud/bin/zookeeper/bin/../conf/zoo.cfg
Mode: follower

--------- hadoop3---------
ZooKeeper JMX enabled by default
Using config: /opt/cloud/bin/zookeeper/bin/../conf/zoo.cfg
Mode: leader

6、啓動客戶端腳本

zkCli.sh
ls /zookeeper
ls /zookeeper/quota

2.6. 系統啓動時自動運行

vi /opt/cloud/bin/zookeeper/bin/zkServer.sh
找到
nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
替換爲
nohup "$JAVA" "-Dlog4j.configuration=file:${ZOOCFGDIR}/log4j.properties" \

複製到另外兩臺服務器

scp /opt/cloud/bin/zookeeper/bin/zkEnv.sh hadoop2:/opt/cloud/bin/zookeeper/bin/
scp /opt/cloud/bin/zookeeper/bin/zkServer.sh hadoop2:/opt/cloud/bin/zookeeper/bin/
scp /opt/cloud/bin/zookeeper/bin/zkEnv.sh hadoop3:/opt/cloud/bin/zookeeper/bin/
scp /opt/cloud/bin/zookeeper/bin/zkServer.sh hadoop3:/opt/cloud/bin/zookeeper/bin/

vi /etc/systemd/system/zookeeper.service

[Unit]
Description=Zookeeper service
After=network.target

[Service]
User=hadoop
Group=hadoop
Type=forking
 
Environment = ZOO_HOME=/opt/cloud/bin/zookeeper
Environment = ZOOCFGDIR=/opt/cloud/bin/zookeeper/conf
Environment = ZOO_LOG_DIR=/opt/cloud/logs/zookeeper

ExecStart=/usr/bin/sh -c '/opt/cloud/bin/zookeeper/bin/zkServer.sh start'
ExecStop =/usr/bin/sh -c '/opt/cloud/bin/zookeeper/bin/zkServer.sh stop'

[Install]
WantedBy=multi-user.target

複製到另外兩臺服務器

scp /etc/systemd/system/zookeeper.service hadoop2:/etc/systemd/system/
scp /etc/systemd/system/zookeeper.service hadoop3:/etc/systemd/system/

重新加載配置信息:systemctl daemon-reload

啓動zookeeper:systemctl start zookeeper

停止zookeeper:systemctl stop zookeeper

查看進程狀態及日誌(重要):systemctl status zookeeper

開機自啓動:systemctl enable zookeeper

關閉自啓動:systemctl disable zookeeper

啓動服務設置爲自動啓動

systemctl daemon-reload
systemctl start zookeeper
systemctl status zookeeper
systemctl enable zookeeper

2.7. 卸載

       root用戶操作

  •  停止並卸載zookeeper服務
   systemctl stop zookeeper
   systemctl disable zookeeper
   rm /etc/systemd/system/zookeeper.service -f
  • 復原環境變量

         vi ~/.bashrc

         刪除zookeeper相關行

  • 刪除其他文件
   rm /opt/cloud/bin/zookeeper/ -rf
   rm /opt/cloud/data/zookeeper/ -rf
   rm /opt/cloud/logs/zookeeper/ -rf
   rm /opt/cloud/packages/zookeeper-3.4.9/ -rf


[1] #如果有高速設備,dateLogDir可以設置在高速設備上以大幅提高效率

[2] 設置數據定時清理機制

[3] # server.A=B:C:D:

  # A 是一個數字,表示這個是第幾號服務器

  # B 是這個服務器的 ip 地址;

  # C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口;

  # D 表示用來執行選舉時服務器相互通信的端口。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章