1. 程式人生 > >ZooKeeper系列之三:ZooKeeper的安裝

ZooKeeper系列之三:ZooKeeper的安裝

ZooKeeper的安裝模式分為三種,分別為:單機模式(stand-alone)、叢集模式和叢集偽分佈模式。ZooKeeper 單機模式的安裝相對比較簡單,如果第一次接觸ZooKeeper的話,建議安裝ZooKeeper單機模式或者叢集偽分佈模式。

1)單機模式

首先,從Apache官方網站下載一個ZooKeeper 的最近穩定版本。

http://hadoop.apache.org/zookeeper/releases.html

作為國內使用者來說,選擇最近的的原始檔伺服器所在地,能夠節省不少的時間。

http://labs.renren.com/apache-mirror//hadoop/zookeeper/

ZooKeeper 要求 JAVA 的環境才能執行,並且需要 JAVA6 以上的版本,可以從 SUN 官網上下載,並對 JAVA 環境變數進行設定。除此之外,為了今後操作的方便,我們需要對 ZooKeeper 的環境變數進行配置,方法如下,在 /etc/profile 檔案中加入如下的內容:

#Set ZooKeeper Enviroment

export ZOOKEEPER_HOME=/root/hadoop-0.20.2/zookeeper-3.3.1

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

ZooKeeper 伺服器包含在單個 JAR 檔案中,安裝此服務需要使用者建立一個配置文件,並對其進行設定。我們在 ZooKeeper-*.*.* 目錄(我們以當前 ZooKeeper 的最新版 3.3.1 為例,故此下面的“ ZooKeeper-*.*.* ”都將寫為“ ZooKeeper-3.3.1 )的 conf 資料夾下建立一個 zoo.cfg 檔案,它包含如下的內容:

tickTime=2000

dataDir=/var/zookeeper

clientPort=2181

在這個檔案中,我們需要指定 dataDir 的值,它指向了一個目錄,這個目錄在開始的時候需要為空。下面是每個引數的含義:

tickTime :基本事件單元,以毫秒為單位。它用來指示心跳,最小的 session 過期時間為兩倍的 tickTime.

dataDir :儲存記憶體中資料庫快照的位置,如果不設定引數,更新事務日誌將被儲存到預設位置。

clientPort :監聽客戶端連線的埠

使用單機模式時使用者需要注意:這種配置方式下沒有 ZooKeeper 副本,所以如果 ZooKeeper 伺服器出現故障, ZooKeeper 服務將會停止。

以下程式碼清單 A 是我們的根據自身情況所設定的 zookeeper 配置文件: zoo.cfg

程式碼清單 A zoo.cfg

# The number of milliseconds of each tick

tickTime=2000

# the directory where the snapshot is stored.

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/snapshot/data

# the port at which the clients will connect

clientPort=2181

2)叢集模式

為了獲得可靠的 ZooKeeper 服務,使用者應該在一個叢集上部署 ZooKeeper 。只要叢集上大多數的 ZooKeeper 服務啟動了,那麼總的 ZooKeeper 服務將是可用的。另外,最好使用奇數臺機器。 如果 zookeeper 擁有 5 臺機器,那麼它就能處理 2 臺機器的故障了。

之後的操作和單機模式的安裝類似,我們同樣需要對 JAVA 環境進行設定,下載最新的 ZooKeeper 穩定版本並配置相應的環境變數。不同之處在於每臺機器上 conf/zoo.cfg 配置檔案的引數設定,參考下面的配置:

tickTime=2000

dataDir=/var/zookeeper/

clientPort=2181

initLimit=5

syncLimit=2

server.1=zoo1:2888:3888

server.2=zoo2:2888:3888

server.3=zoo3:2888:3888

server.id=host:port:port. ”指示了不同的 ZooKeeper 伺服器的自身標識,作為叢集的一部分的機器應該知道 ensemble 中的其它機器。使用者可以從“ server.id=host:port:port. ”中讀取相關的資訊。 在伺服器的 data dataDir 引數所指定的目錄)目錄下建立一個檔名為 myid 的檔案,這個檔案中僅含有一行的內容,指定的是自身的 id 值。比如,伺服器“ 1 ”應該在 myid 檔案中寫入“ 1 ”。這個 id 值必須是 ensemble 中唯一的,且大小在 1 255 之間。這一行配置中,第一個埠( port )是從( follower )機器連線到主( leader )機器的埠,第二個埠是用來進行 leader 選舉的埠。在這個例子中,每臺機器使用三個埠,分別是: clientPort 2181 port 2888 port 3888

我們在擁有三臺機器的 Hadoop 叢集上測試使用 ZooKeeper 服務,下面程式碼清單 B 是我們根據自身情況所設定的 ZooKeeper 配置文件:

程式碼清單 B 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.

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/snapshot/d1

# the port at which the clients will connect

clientPort=2181

server.1=IP1:2887:3887

server.2=IP2:2888:3888

server.3=IP3:2889:3889

清單中的 IP 分別對應的配置分散式 ZooKeeper IP 地址。當然,也可以通過機器名訪問 zookeeper ,但是需要在 ubuntu hosts 環境中進行設定。讀者可以查閱 Ubuntu 以及 Linux 的相關資料進行設定。

3)叢集偽分佈

簡單來說,叢集偽分佈模式就是在單機下模擬叢集的ZooKeeper服務。

那麼,如何對配置 ZooKeeper 的叢集偽分佈模式呢?其實很簡單,在 zookeeper 配置文件中, clientPort 引數用來設定客戶端連線 zookeeper 的埠。 server.1=IP1:2887:3887 中, IP1 指示的是組成 ZooKeeper 服務的機器 IP 地址, 2887 為用來進行 leader 選舉的埠, 3887 為組成 ZooKeeper 服務的機器之間通訊的埠。叢集偽分佈模式我們使用每個配置文件模擬一臺機器,也就是說,需要在單臺機器上執行多個 zookeeper 例項。但是,我們必須要保證各個配置文件的 clientPort 不能衝突。

下面是我們所配置的叢集偽分佈模式,通過 zoo1.cfg zoo2.cfg zoo3.cfg 模擬了三臺機器的 ZooKeeper 叢集。詳見程式碼清單 C

程式碼清單C zoo1.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.

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/d_1

# the port at which the clients will connect

clientPort=2181

server.1=localhost:2887:3887

server.2=localhost:2888:3888

server.3=localhost:2889:3889

zoo2.cfg

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.

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/d_2

# the port at which the clients will connect

clientPort=2182

#the location of the log file

dataLogDir=/root/hadoop-0.20.2/zookeeper-3.3.1/logs

server.1=localhost:2887:3887

server.2=localhost:2888:3888

server.3=localhost:2889:3889

zoo3.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.

dataDir=/root/hadoop-0.20.2/zookeeper-3.3.1/d_2

# the port at which the clients will connect

clientPort=2183

#the location of the log file

dataLogDir=/root/hadoop-0.20.2/zookeeper-3.3.1/logs

server.1=localhost:2887:3887

server.2=localhost:2888:3888

server.3=localhost:2889:3889

從上述三個程式碼清單中可以看到,除了 clientPort 不同之外, dataDir 也不同。另外,不要忘記在 dataDir 所對應的目錄中建立 myid 檔案來指定對應的 zookeeper 伺服器例項。

這裡ZooKeeper的安裝已經說完了,下一節我們來談一談對ZooKeeper的引數配置 的理解。

-----

如有疑問請發Email至[email protected],謝謝!

相關推薦

ZooKeeper系列ZooKeeper安裝

ZooKeeper的安裝模式分為三種,分別為:單機模式(stand-alone)、叢集模式和叢集偽分佈模式。ZooKeeper 單機模式的安裝相對比較簡單,如果第一次接觸ZooKeeper的話,建議安裝ZooKeeper單機模式或者叢集偽分佈模式。 1)單機模式 首先,

緩存系列redis安裝及基本數據類型命令使用

pytho children tile 指令 sed eject 檢測 install 文件的 一:Redis是一個開源的key-value存儲系統。與Memcached類似,Redis將大部分數據存儲在內存中,支持的數據類型包括:字符串、哈希表、鏈表、集合、有序集合以及基

ZooKeeper系列ZooKeeper的配置

ZooKeeper 的功能特性通過 ZooKeeper 配置檔案來進行控制管理( zoo.cfg 配置檔案)。 ZooKeeper 這樣的設計其實是有它自身的原因的。通過前面對 ZooKeeper 的配置可以看出,對 ZooKeeper 叢集進行配置的時候,它的配置文件是完

ZooKeeper系列ZooKeeper命令列工具

當啟動 ZooKeeper 服務成功之後,輸入下述命令,連線到 ZooKeeper 服務: zkCli.sh –server 10.77.20.23:2181 連線成功後,系統會輸出 ZooKeeper 的相關環境以及配置資訊,並在螢幕輸出“ Welcome to

ZooKeeper系列ZooKeeper的一致性保證及Leader選舉

1)一致性保證 Zookeeper 是一種高效能、可擴充套件的服務。 Zookeeper 的讀寫速度非常快,並且讀的速度要比寫的速度更快。另外,在進行讀操作的時候, ZooKeeper 依然能夠為舊的資料提供服務。這些都是由於 ZooKeepe 所提供的一致性保證,它具有如下特點: 順序一致性

ZooKeeper系列ZooKeeper四字命令

ZooKeeper 支援某些特定的四字命令字母與其的互動。它們大多是查詢命令,用來獲取 ZooKeeper 服務的當前狀態及相關資訊。使用者在客戶端可以通過 telnet 或 nc 向 ZooKeeper 提交相應的命令。 ZooKeeper 常用四字命令見下表 1 所示:

ZooKeeper系列ZooKeeper資料模型、名稱空間以及節點的概念

ZooKeeper資料模型和層次名稱空間 提供的名稱空間與標準的檔案系統非常相似。一個名稱是由通過斜線分隔開的路徑名序列所組成的。ZooKeeper中的每一個節點是都通過路徑來識別。  下圖是Zookeeper中節點的資料模型,這種樹形結構的名稱空間操作方便且易於理解。

初識Redis系列Redis支持的數據類型及使用

ted print 數據類型 eight 排序 sorted ring hang 無序 支持的數據類型有五種: string(字符串)、hash(哈希)、list(列表)、set(集合)及zset(sorted set:有序集合); 下面分別對這幾種類型進行簡單的Redis

Dapper系列Dapper的修改與刪除

幫助 一個 。。 講解 復制 upd font 希望 update Dapepr的Update和Delete 上兩篇文章我們介紹Dapper中添加和查詢。本篇文章我們繼續講解修改和刪除。。。。。如果本篇文章看不懂,請看閱讀上兩篇Dapper系列相關文章Update

Https系列讓服務器同時支持http、https,基於spring boot

signed 默認 gfs proc idl clas 兩種方法 .... gpg Https系列會在下面幾篇文章中分別作介紹: 一:https的簡單介紹及SSL證書的生成二:https的SSL證書在服務器端的部署,基於tomcat,spring boot三:讓服務器同時

Office 365 系列Office 365 初體驗

office365 註冊office 365 試用office 365 在上一章節中我們已經成功申請註冊全球版微軟 Office 365 E5版本了,試用期為 30 天。接下來跟大家一起檢查下具備哪些服務和訂閱,怎麽去查看並確保各種服務是正常的。登陸 Office 365 管理中心,如下

Exchange 2013系列網絡及先決條件準備

Windows Exchange AD 這裏僅以ExchCas01服務器舉例。打開網絡和管理中心,右鍵Manage網卡,選擇屬性;選擇IPV4,點擊屬性;輸入IP地址、子網掩碼及網關,DNS指向域控服務器,點擊確定;右鍵Heart網卡,點擊屬性;選擇IPV4,點擊屬性;因為心跳網絡只用於虛擬機之間

spring boot 系列spring boot 整合JdbcTemplate

closed com context boot pin pan url wired ace 前面兩篇文章我們講了兩件事情: 通過一個簡單實例進行spring boot 入門 修改spring boot 默認的服務端口號和默認context path 這篇文章我們來看下怎

Java分析系列jstat命令的使用及VM Thread分析

前面提到了一個使用jstack的shell指令碼,通過命令可以很快地定位到指定執行緒對應的堆疊資訊。 目錄 [隱藏] 1 使用jstat命令 2 JVM記憶體模型 3 JVM記憶體引數設定 3.1 堆記憶體設定 3.2 非堆記憶體設定

Kubernetes系列部署你的第一個應用程式到k8s叢集

部署你的第一個應用程式到k8s叢集 看到這裡,求知慾飢渴難耐的你一定在想,怎麼部署的我們應用程式到叢集裡面去呢?來個簡單的,只需要兩步:(這裡本文使用nginx映象當我們的應用程式,因為nginx 簡單,執行起來後直接可以用瀏覽器訪問網頁了。) 第一步:在master 節點上建立一個

Docker入門系列如何將dockerfile製作好的映象釋出到Docker hub上

這個系列的前兩篇文章,我們已經把我們的應用成功地在Docker裡通過nginx運行了起來,並且用dockerfile裡製作好了一個映象。 Docker入門系列之一:在一個Docker容器裡執行指定的web應用 Docker入門系列之二:使用dockerfile製作包含指定web應用的映象 本

JVM系列型別的生命週期

  此篇文章主要介紹從一個Java型別(類或者介面)的生命週期(從它進入虛擬機器到退出)開始階段的裝載、連線與初始化,以及佔Java型別宣告週期絕大部分時間的物件例項化、垃圾收集和物件終結,然後是Java型別生命週期的結束,也就是從虛擬機器中解除安裝。 型別裝載、連線與初始化   Java虛擬機器通過裝載、連

skyfans每天一個Liunx命令系列hostname

今天我們繼續來學習SYSTEM INFORMATION(系統資訊命令),今天學習的是什麼命令呢,那就是hostname。 針對於初學linux者來說,我們可多在伺服器上面輸入 --help命令檢視此命令的用法及內容。廢話不多說,繼續。 Ready Go!!!

敏捷開發日常跟進系列故事板,看板

這是敏捷開發日常跟進系列的第三篇。 (欄目目錄)故事板和看板其實不是一個東西,前者是最初的敏捷開發裡邊的東西,受到了後者的啟發產生的;而後者是製造業的東西,具體內容請參考末尾的百度百科。但是在敏捷開發裡邊提到這兩樣東西,可以認為大致相同。故事板簡單說,故事板是展示迭代中的使用

docker系列 建立自己的image並上傳到docker hub

執行docker run docker/whalesay 會提示沒有映象,然後自動下載映象 建立一個cokerfile mkdir mydockerbuild cd mydockerbuild vi Dockerfile 在docker file 下