zookeeper動物園管理員學習筆記

hbase

hadoop裏面有:1)hdfs分佈式存儲 2)yarn資源調度框架;3)hive數據倉庫技術,在線事物分析,延遲性很高,最終用的仍是mr技術,可是再也不使用mr技術了
4)hbase:創建在hadoop上面的數據庫技術,隨機定位+實時讀寫,業務是分佈式的,可是最終仍是存儲在hasoop上面的
要實現自動容災,就須要引進zookeeperhtml

zookeeper

1.管理大量主機的協同服務,輕量級的
2.分佈式應用,實現了分佈式讀寫技術
3.zk提供的服務有哪些?
    1):名稱服務Naming service,按照名稱來區分集羣中的主機
    2):配置管理Configuration management //針對新加入節點的最新化處理
    3):集羣管理Cluster management   //實時感知集羣中節點的增減
    4):Leader election      //leader follower
    5):Locking and synchronization service //修改時來 鎖定數據,實現容災
    6):Highly reliable data registry        //節點宕機數據也是可用的

zk的安裝(單機版,裝在s200上面)

1.jdk
2.下載zookeeper-3.4.10。tar.gz,下載地址:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/
3.tar開
4.符號鏈接,環境變量
    $>ln -s zookeeper-3.4.10 zk
5.配置zk,複製zoo.cfg.sample-->zoo.cfg
    [zk/conf/zoo.conf]
    # 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=/home/centos/zookeeper
    # 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=60
    #
    # 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
6.啓動zk服務器
    $>bin/zkServer.sh start
7.驗證zk
    $>netstat -anop|grep 2181
8.啓動客戶端鏈接到服務器
    $>zkCli.sh -server s200:2181    //就直接進入到zk的命令行下面
    $zk]help        //查看幫助
    $zk]quit        //退出
    $zk]create /a tom   //建立過程,每次建立都要寫數據
    $zk]ls /        //獲得[a,zookeeper]
    $zk]get /a              //查看數據
    create /a/a1 jerry;
    get /a/a1       //查看數據
    set /a tomas ;//修改節點數據
    delete /a/a1;       //刪除一個節點
     rmr /a         //遞歸輸出節點

zk架構

1.Client
從server獲取信息,週期性發送給server,表示本身還活着
當client鏈接時,server回傳ack信息,若是客戶端沒有收到響應,就會重定向到另外一個server
2.Server.
    zk集羣的一員,向client提供全部service,向客戶端發送確認信息表示服務器還活着
3.ensemble
    一組服務器,最小的節點數是3
4.leader.若是任何被鏈接的節點發生故障,自定恢復,zk服務啓動時,完成leader的選舉
5.Follower.遵循leader管理的的服務節點

znode

zk中的節點,維護了stat的狀態。
由version number,Action Control List,Timestamp,Data length組成
version number:數據寫入過程的變化

ACL     //action control list,訪問控制列表

節點類型

1.持久節點:永久性節點,client退出還存在
2.臨時節點:在客戶端活躍時有效,斷開後自動刪除。臨時節點不能有子節點,在leader推選的時候扮演重要角色
    create -e /b/e1 tom0;//創建一個臨時節點 
3.序列節點:在節點名以後副駕10個數字,主要用於同步和鎖

Session

Session中,會話的請求是按照先進先出的順序執行的,一旦client鏈接到server,那麼這個session就創建了,那麼sessionId就分配給客戶端了

client以固定間隔向server發送心跳,表示session是valid的,
zk集羣若是在超時的時候,沒有收到心跳,就斷定爲client掛了
與此同時,臨時節點就被刪除了

Watch

觀察者模式
Client可以經過watch機制在數據發生變化時收到通知
client可以在read節點的時候設置觀察者。watch機制針對節點的變化會發送通知給註冊的客戶端程序
觀察模式只觸發一次。若是session過時,那麼觀察者就會被刪除

zk工做流程
-----------------------、
zk集羣啓動後,客戶端鏈接到其中的一個節點,這個節點能夠是leader,也能夠是follower
連通以後,node會分配一個id給client,發送ack信息給客戶端,若是客戶端沒有收到ack確認,
若是客戶端沒有收到ack,鏈接到另一個節點
客戶端週期性發送心跳信息給節點保證鏈接不會丟失node

若是客戶端讀取數據,發送請求給節點node,node讀取本身的數據庫,返回節點數據給client
 若是client存儲數據,將路徑和數據發送給server,server轉發給leader,leader將會補發全部的請求給follower,只有大多數的節點成功響應,則寫操做就成功

單機版

文件系統層級結構存儲
path:/home/centos/xxx=znode.節點上能夠關聯數據,數據能夠是任何數據,可是數據大小不能超過1m
節點的類型
    1.永久節點
    2.臨時節點
    3.序列節點

數據狀態:版本。

leader+flower.

讀:
寫:

leader推選過程(最小號選舉法)

1.全部節點在同一目錄下面建立臨時序列節點
2.zk會添加10位的序列號到路徑後面,而且znode會是xxx/xxx00000000001
3.對於給定的例子,在全部znode節點中,建立最小號的節點會成爲leader,全部其餘節點會成爲follower
4.每一個節點會觀察小於本身節點的主機(註冊觀察者)
5.若是leader掛了,對應的znode就會被刪除了
6.觀察者就會收到通知

配置徹底分佈式zk集羣

1.挑選3臺主機
s200-s202
2.每臺機器都安裝zk
3.配置zk配置文件
    s200-s202
    [/soft/zk/conf/zoo.cfg]
    autopurge.purgeInterval=1
    dataDir=/home/centos/zookeeper
     
4.在每臺主機的/home/centos/zookeeper中添加myid,內容分別是1,2,3
[s200]
$>echo 1 >/home/centos/zookeeper/myid
[s201]
$>echo 2 >/home/centos/zookeeper/myid
[s202]
$>echo 3 >/home/centos/zookeeper/myid

5.啓動服務器集羣
在每臺主機上執行:$>zkServer.sh start
6.查看每臺服務器的狀態
    $>zkServer.sh status
7.修改zk的log目錄
相關文章
相關標籤/搜索