Hadoop教程連載之二:Zookeeper分散式安裝

來源:互聯網
上載者:User

1 概述

Zookeeper分散式服務框架是 HTTP://www.aliyun.com/zixun/aggregation/14417.html">Apache Hadoop 的一個子專案, 它主要是用來解決分散式應用中經常遇到的一些資料管理問題,如:統一命名服務、狀態同步服務、集群管理、分散式應用配置項的管理等。 ZooKeeper本身可以以Standalone模式安裝運行,不過它的長處在於通過分散式ZooKeeper集群(一個Leader,多個 Follower),基於一定的策略來保證ZooKeeper集群的穩定性和可用性, 從而實現分散式應用的可靠性。 Zookeeper 會維護一個具有層次關係的資料結構,它非常類似于一個標準的檔案系統,如下圖所示

Zookeeper 這種資料結構有如下這些特點:

每個子目錄項如 NameService 都被稱作為 znode,這個 znode 是被它所在的路徑唯一標識,如 Server1 這個 znode 的標識為 /NameService/Server1

znode 可以有子節點目錄,並且每個 znode 可以存儲資料,注意 EPHEMERAL 類型的目錄節點不能有子節點目錄

znode 是有版本的,每個 znode 中存儲的資料可以有多個版本,也就是一個訪問路徑中可以存儲多份資料

znode 可以是臨時節點,一旦創建這個 znode 的用戶端與伺服器失去聯繫,這個 znode 也將自動刪除,Zookeeper 的用戶端和伺服器通信採用長連接方式,每個用戶端和伺服器通過心跳來保持連接,這個連接狀態稱為 session,如果 znode 是臨時節點,這個 session 失效,znode 也就刪除了

znode 的目錄名可以自動編號,如 App1 已經存在,再創建的話,將會自動命名為 App2

znode 可以被監控,包括這個目錄節點中存儲的資料的修改,子節點目錄的變化等,一旦變化可以通知設置監控的用戶端,這個是 Zookeeper 的核心特性,Zookeeper 的很多功能都是基於這個特性實現的, 後面在典型的應用場景中會有實例介紹

2 環境部署

此次Zookeeper集群的部署基於前一篇文章所部署的Hadoop集群,集群配置如下:

zookeeper1 rango 192.168.56.1

zookeeper2 vm2 192.168.56.102

zookeeper3 vm3 192.168.56.103

zookeeper4 vm4 192.168.56.104

zookeeper5 vm1 192.168.56.101

3 安裝和配置

3.1 下載安裝Zookeeper

從Apache官網下載最新的Zookeeper版本,解壓到/usr目錄,並重命名為zookeeper:

tar zxvf zookeeper-3.4.5.tar.gz ;mv zookeeper-3.4.5 /usr/zookeeper

設置zookeeper目錄的擁有者為hadoop:hadoop:

chown -R hadoop:hadoop /usr/zookeeper

ps:可先在master機器上進行安裝和配置,然後通過scp命令複製到集群其他節點上:

scp -R /usr/zookeeper 節點ip:/usr

3.2 配置Zookeeper

3.2.1 創建資料目錄

在集群所有機器上執行:

mkdir /var/lib/zookeeper

3.2.2 配置環境變數

vim /etc/profile:

# set zookeeper path

export ZOOKEEPER_HOME=/usr/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

3.2.3 配置Zookeeper集群

cp /usr/zookeeper/conf/zoo_sample.cfg zoo.cfg

vim 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=/var/lib/zookeeper

# the port at which the clients will connect

clientPort=2181

#

# 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=3

# Purge task interval in hours

# Set to "0" to disable auto purge feature

#autopurge.purgeInterval=1

server.1=192.168.56.1:2888:3888

server.2=192.168.56.102:2888:3888

server.3=192.168.56.103:2888:3888

server.4=192.168.56.104:2888:3888

server.5=192.168.56.101:2888:3888

注解:

tickTime:發送心跳時間間隔,單位毫秒

initlimit 和sysncLimit:兩者都是以ticktime的總數進行度量(上面的時間為10*2000=20s)。 initLimit參數設定了允許所有跟隨者與領導者進行連接並同步的時間,如果在設定的時間內內,半數以上的跟隨者未能完成同步,領導者便會宣佈放棄領導地位,然後進行另外一次領導 者選舉。 如果這種情況經常發生,通過查看日誌中的記錄發現,則表明設定的值太小。

syscLimit參數設定了允許一個跟隨者與領導者進行同步的時間。 如果在設定的時間內,一個跟隨者未能完成同步,它將會自己重啟,所有關聯到這個跟隨者的用戶端將連接到另外一個跟隨者。

dataDir:保存的zookeeperk中持久化的資料,zk中存在兩種資料,一種用完即消失,一種需要持久存在,zk的日誌也保存在這。

server. A=B:C:D:其中 A 是一個數位,表示這個是第幾號伺服器; B 是這個伺服器的 ip 位址; C 表示的是這個伺服器與集群中的 Leader 伺服器交換資訊的埠;D 表示的是萬一集群中的 Leader 伺服器掛了,需要一個埠來重新進行選舉,選出一個新的 Leader,而這個埠就是用來執行選舉時伺服器相互通信的埠。 如果是偽集群的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 實例通訊連接埠號不能一樣,所以要給它們分配不同的埠號。

在每個伺服器的資料目錄中創建myid檔,檔的內容為以上對應的server.id中的id:

echo id >> /var/lib/zookeeper/myid

3.3 啟動和停止Zookeeper服務

在集群所有節點上啟動Zookeeper:zkServer.sh start

[root@rango ~]# zkServer.sh start

JMX enabled by default

Using config: /usr/zookeeper/bin/.. /conf/zoo.cfg

Starting zookeeper ... STARTED

查看:zkserver.sh starus:

[root@rango ~]# zkServer.sh status

JMX enabled by default

Using config: /usr/zookeeper/bin/.. /conf/zoo.cfg

Mode: follower

ps:啟動之前需關閉iptables(內網)

ZooKeeper 的詳細介紹:請點這裡


ZooKeeper 的下載位址:請點這裡

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.