1. 程式人生 > >Zookeeper偽分散式叢集環境搭建過程

Zookeeper偽分散式叢集環境搭建過程

前言

  • ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,目前很多架構都基於它來實現配置維護、域名服務、分散式同步、組服務等等。

  • ZooKeeper的基本運轉流程:
    1.選舉Leader
    2.同步資料
    3.選舉Leader過程中演算法有很多,但要達到的選舉標準是一致的
    4.Leader要具有最高的zxid
    5.叢集中大多數的機器得到響應並follow選出的Leader

環境說明

Zookeeper的部署主要是三種方式:單機模式、叢集模式、偽叢集模式,本文主要是偽叢集模式的搭建過程(叢集模式也類似)。

  • 系統環境:Ubuntu 14.04、JDK1.8
  • 所需工具:Zookeeper-3.4.9

下載zookeeper包

$ curl -O https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

新建5個空目錄

$ mkdir -pv /zookeeper/server001
$ mkdir -pv /zookeeper/server002
$ mkdir -pv /zookeeper/server003
$ mkdir -pv /zookeeper/server004
$ mkdir -pv /zookeeper/server005

在每個目錄中分別建立data和logs資料夾

解壓下載的zookeeper包

$ tar zxvf zookeeper-3.4.9.tar.gz

修改配置檔案

Zookeeper 的配置檔案主要在conf目錄,包括zoo.cfg (zoo_sample.cfg)log4j.properties,修改 zoo_sample.cfg,重新命名為zoo.cfg,開啟zoo.cfg,將內容修改為如下:

tickTime=2000
initLimit=10
syncLimit=5

dataDir=/zookeeper/server001/data
dataLogDir=/zookeeper/server001/logs

clientPort=2181

server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
server.4=127.0.0.1:8884:7774
server.5=127.0.0.1:8885:7775

引數說明:

tickTime:心跳時間,為了確保連線存在的,以毫秒為單位,最小超時時間為兩個心跳時間
initLimit:多少個心跳時間內,允許其他server連線並初始化資料,如果ZooKeeper管理的資料較大,則應相應增大這個值
clientPort:服務的監聽埠
dataDir:用於存放記憶體資料庫快照的資料夾,同時用於叢集的myid檔案也存在這個資料夾裡(注意:一個配置檔案只能包含一個dataDir字樣,即使它被註釋掉了。)
dataLogDir:用於單獨設定transaction log的目錄,transaction log分離可以避免和普通log還有快照的競爭
syncLimit:多少個tickTime內,允許follower同步,如果follower落後太多,則會被丟棄。

server.A=B:C:D
A是一個數字,表示這個是第幾號伺服器
B是這個伺服器的ip地址
C第一個埠用來叢集成員的資訊交換,表示的是這個伺服器與叢集中的Leader伺服器交換資訊的埠
D是在Leader掛掉時專門用來進行選舉Leader所用

將zookeeper資料夾拷貝到/zookeeper/server001/下,並在 /zookeeper/server001/data/下建立一個myid檔案,內容為1

$ echo 1 | sudo dd of=/zookeeper/server001/data/myid

配置偽叢集中的另外幾臺Zookeeper

繼續修改~/zookeeper/目錄中的zookeeper配置檔案檔案中的dataDir、dataLogDir、clientPort配置(server002的配置檔案,注意clientPort=2182,與 server001 中的clientPort=2181不同,後續修改配置均需設定不同的 clientPort),修改後內容如下:

tickTime=2000
initLimit=10
syncLimit=5

dataDir=/zookeeper/server002/data
dataLogDir=/zookeeper/server002/logs

clientPort=2182

server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
server.4=127.0.0.1:8884:7774
server.5=127.0.0.1:8885:7775

然後將此 zookeeper 包拷貝至/tmp/zookeeper/server002/目錄下,並在/tmp/zookeeper/server002/data/下建立一個myid檔案,檔案內容為 2,

$ echo 2 | sudo dd of=/zookeeper/server002/data/myid

依次修改配置檔案,建立server003server004server005節點資料夾,完成上述步驟後/zookeeper目錄結構如下:

root@mesos-2:/zookeeper# tree -d -L 2
.
├── server001
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.9
├── server002
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.9
├── server003
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.9
├── server004
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.9
└── server005
    ├── data
    ├── logs
    └── zookeeper-3.4.9

啟動zookeeper服務

依次進入每個資料夾節點的zookeeper目錄中,執行命令

$ /zookeeper/server001/zookeeper-3.4.9/bin/zkServer.sh start
$ /zookeeper/server002/zookeeper-3.4.9/bin/zkServer.sh start
$ /zookeeper/server003/zookeeper-3.4.9/bin/zkServer.sh start
$ /zookeeper/server004/zookeeper-3.4.9/bin/zkServer.sh start
$ /zookeeper/server005/zookeeper-3.4.9/bin/zkServer.sh start

如果一切順利,Zookeeper 偽分散式模式安裝成功,下面驗證 Zookeeper 安裝的正確性。
進入任意一個資料夾節點的zookeeper包所在的目錄,執行一下命令:

$ bin/zkCli.sh  -server 127.0.0.1:2181

執行成功後:

Connecting to 127.0.0.1:2181
2016-12-28 10:51:43,473 [myid:] - INFO  [main:[email protected]100] - Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT
2016-12-28 10:51:43,476 [myid:] - INFO  [main:[email protected]100] - Client environment:host.name=mesos-2
2016-12-28 10:51:43,476 [myid:] - INFO  [main:[email protected]100] - Client environment:java.version=1.7.0_121
2016-12-28 10:51:43,479 [myid:] - INFO  [main:[email protected]100] - Client environment:java.vendor=Oracle Corporation
2016-12-28 10:51:43,479 [myid:] - INFO  [main:[email protected]100] - Client environment:java.home=/usr/lib/jvm/java-7-openjdk-amd64/jre
2016-12-28 10:51:43,479 [myid:] - INFO  [main:[email protected]100] - Client environment:java.class.path=/zookeeper/server002/zookeeper-3.4.9/bin/../build/classes:/zookeeper/server002/zookeeper-3.4.9/bin/../build/lib/*.jar:/zookeeper/server002/zookeeper-3.4.9/bin/../lib/slf4j-log4j12-1.6.1.jar:/zookeeper/server002/zookeeper-3.4.9/bin/../lib/slf4j-api-1.6.1.jar:/zookeeper/server002/zookeeper-3.4.9/bin/../lib/netty-3.10.5.Final.jar:/zookeeper/server002/zookeeper-3.4.9/bin/../lib/log4j-1.2.16.jar:/zookeeper/server002/zookeeper-3.4.9/bin/../lib/jline-0.9.94.jar:/zookeeper/server002/zookeeper-3.4.9/bin/../zookeeper-3.4.9.jar:/zookeeper/server002/zookeeper-3.4.9/bin/../src/java/lib/*.jar:/zookeeper/server002/zookeeper-3.4.9/bin/../conf:
2016-12-28 10:51:43,480 [myid:] - INFO  [main:[email protected]100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
2016-12-28 10:51:43,480 [myid:] - INFO  [main:[email protected]100] - Client environment:java.io.tmpdir=/tmp
2016-12-28 10:51:43,480 [myid:] - INFO  [main:[email protected]100] - Client environment:java.compiler=<NA>
2016-12-28 10:51:43,480 [myid:] - INFO  [main:[email protected]100] - Client environment:os.name=Linux
2016-12-28 10:51:43,480 [myid:] - INFO  [main:[email protected]100] - Client environment:os.arch=amd64
2016-12-28 10:51:43,480 [myid:] - INFO  [main:[email protected]100] - Client environment:os.version=4.4.0-31-generic
2016-12-28 10:51:43,480 [myid:] - INFO  [main:[email protected]100] - Client environment:user.name=root
2016-12-28 10:51:43,481 [myid:] - INFO  [main:[email protected]100] - Client environment:user.home=/root
2016-12-28 10:51:43,481 [myid:] - INFO  [main:[email protected]100] - Client environment:user.dir=/zookeeper/server002/zookeeper-3.4.9
2016-12-28 10:51:43,482 [myid:] - INFO  [main:[email protected]438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 [email protected]3eda834c
2016-12-28 10:51:43,513 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):[email protected]1032] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2016-12-28 10:51:43,541 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):[email protected]876] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
[zk: 127.0.0.1:2181(CONNECTING) 0] 2016-12-28 10:51:43,702 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):[email protected]1299] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x159435690070000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null

help 幫助:

[zk: 127.0.0.1:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
    connect host:port
    get path [watch]
    ls path [watch]
    set path data [version]
    rmr path
    delquota [-n|-b] path
    quit
    printwatches on|off
    create [-s] [-e] path data acl
    stat path [watch]
    close
    ls2 path [watch]
    history
    listquota path
    setAcl path acl
    getAcl path
    sync path
    redo cmdno
    addauth scheme auth
    delete path [version]
    setquota -n|-b val path

也可在任意一個zookeeper目錄中執行如下命令檢視節點狀態:

$ bin/zkServer.sh status

輸出如下:

ZooKeeper JMX enabled by default
Using config: /zookeeper/server003/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader

掃一掃,長按識別二維碼關注我
不定期分享技術架構、運維、技術管理等內容文章
這裡寫圖片描述

相關推薦

Zookeeper分散式叢集環境搭建過程

前言 ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,目前很多架構都基於它來實現配置維護、域名服務、分散式同步、組服務等等。 ZooKeeper的基本運轉流程: 1.選舉Leader 2.同步資料 3.選舉Leader過程中演算法

hadoop叢集環境搭建分散式叢集環境搭建

搭建叢集的模式有三種 1.偽分散式:在一臺伺服器上,啟動多個執行緒分別代表多個角色(因為角色在叢集中使用程序表現的) 2.完全分散式:在多臺伺服器上,每臺伺服器啟動不同角色的程序,多臺伺服器構成叢集 node01:NameNode node02:

HBase完全分散式叢集環境搭建過程總結

一、前言      暑期實驗室實習學姐告知學習HBase,便利用複習之餘的時間搭建HBase環境,先前不瞭解搞了個單機版的,學姐說實驗室開發不用單機2333[尷尬],於是又開始建立虛擬機器開始完全分散式叢集環境的搭建。搭建主要是各種百度,也遇到了一些bug,也來來回回刪增了

搭建hadoop分散式叢集環境過程中遇見的問題總結

1、網路配置問題: 在centos7中配置網路環境後,本機(win10系統)與虛擬機器centos7網路不通(本機可以ping通虛擬機器,但是虛擬機器ping不通本機); 解決方式: 方式1:檢視本機win10系統的防火牆是否關閉,若沒有,直接關閉win10系統的防火牆即可; 方式2

zookeeper-3.4.10分散式叢集環境搭建

初始叢集狀態 機器名 IP 作用 linux系統 master 192.168.218.133   CentOS-6.9-x86_64-bin-D

centos7.3中搭建hadoop分散式叢集環境詳細過程

一、準備工作 1、準備3臺物理機或者虛擬機器; 2、安裝centos7系統; 3、準備好相關軟體包並拷貝相關軟體到目標伺服器上 hadoop-2.9.0.tar.gz jdk-8u131-linux-x64.tar.gz 二、配置網路 1、設定靜態網路ip 1)設定靜

搭建真正的zookeeper叢集 搭建zookeeper分散式叢集

  搭建zookeeper偽分散式叢集 zookeeper是Hadop Ecosystem中非常重要的元件,它的主要功能是為分散式系統提供一致性協調服務, 提供的功能包括配置維護,域名服務,分散式同步和組服務。 zookeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高

Centos7搭建redis4.0.9分散式叢集環境

使用系統是Centos7 redis版本:4.0.9 gem版本:4.0.0 ruby版本:2.5.1 1.下載redis 上圖是從redis官網扒下來的,不過單機版安裝使用也沒啥難度,就不談了,make的時候要有C++編譯器,可以get set啥的就算是裝好了 yum

zookeeper分散式叢集搭建(centOS7)

zookeeper版本:zookeeper-3.4.10.tar.gz 下載好zookeeper之後,放到/usr/local目錄下 1.建立zookeeper目錄,並在zookeeper目錄下,建立三個資料夾,分別為server1,server2,serv

搭建zookeeper分散式叢集

偽分散式叢集的意思就是在同一臺機子上部署多個zookeeoer,但是他們的埠不一樣。 1.安裝zookeeper 到/usr/local 2.cd /usr/local/zookeeper 3.cd conf 4.vim zoo.cfg 在最下面新增如下內容 server.1=192.168.

Hadoop+HBase+ZooKeeper分散式叢集環境搭建

一、環境說明 叢集環境至少需要3個節點(也就是3臺伺服器裝置):1個Master,2個Slave,節點之間區域網連線,可以相互ping通,下面舉例說明,配置節點IP分配如下: Hostname IP User Password

ZooKeeper集群環境搭建

val exp war spa statistic style cal post server 1.從官網下載程序包。 2.解壓。 [dev@localhost

MongoDB分散式叢集環境搭建

第一節分片的概念   分片(sharding)是指根據片鍵,將資料進行拆分,使其落在不同的機器上的過程。如此一來,不需要功能,配置等強大的機器,也能儲存大資料量,處理更高的負載。   第二節分片的原理和思想   MongoDB分片的基本思想就是將集合切分成小塊。這些塊分散到

hadoop分散式叢集搭建

叢集配置: jdk1.8.0_161 hadoop-2.6.1 linux系統環境:Centos6.5 建立普通使用者  dummy  Hadoop偽分散式叢集搭建: 為普通使用者新增sudo許可權: 設定之前必須得安裝sudo,先su  輸入密碼進入root使用者

Hadoop最完整分散式叢集環境搭建

分散式環境搭建之環境介紹 之前我們已經介紹瞭如何在單機上搭建偽分散式的Hadoop環境,而在實際情況中,肯定都是多機器多節點的分散式叢集環境,所以本文將簡單介紹一下如何在多臺機器上搭建Hadoop的分散式環境。 我這裡準備了三臺機器,IP地址如下: 192.16

hadoop分散式叢集環境搭建

參考 http://www.cnblogs.com/zhijianliutang/p/5736103.html   1 wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2

linux redis-3.0.0 分散式叢集搭建

首先需要redis-3.0.0的安裝 安裝步驟如下: 先將編譯環境搭建好:yum install gcc-c++ 將redis原始碼包上傳至linux 解壓縮redis-3.0.0 編譯。進入redis-3.0.0目錄。 make 安裝。make ins

大資料平臺Hadoop的分散式叢集環境搭建,官網推薦

1 概述 本文章介紹大資料平臺Hadoop的分散式環境搭建、以下為Hadoop節點的部署圖,將NameNode部署在master1,SecondaryNameNode部署在master2,slave1、slave2、slave3中分別部署一個DataNode節點 NN

Hadoop分散式叢集環境搭建(三節點)

一、安裝準備 建立hadoop賬號 更改ip 安裝Java 更改/etc/profile 配置環境變數 export $JAVA_HOME=/usr/java/jdk1.7.0_71 修改host檔案域名 172.16.133.149 hadoop101

Spark 2.0分散式叢集環境搭建

Apache Spark 是一個新興的大資料處理通用引擎,提供了分散式的記憶體抽象。Spark 最大的特點就是快,可比 Hadoop MapReduce 的處理速度快 100 倍。本文沒有使用一臺電腦上構建多個虛擬機器的方法來模擬叢集,而是使用三臺電腦來搭建一個小型分散式叢