hadoop裏面有:1)hdfs分佈式存儲 2)yarn資源調度框架;3)hive數據倉庫技術,在線事物分析,延遲性很高,最終用的仍是mr技術,可是再也不使用mr技術了
4)hbase:創建在hadoop上面的數據庫技術,隨機定位+實時讀寫,業務是分佈式的,可是最終仍是存儲在hasoop上面的
要實現自動容災,就須要引進zookeeperhtml
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 //節點宕機數據也是可用的
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 //遞歸輸出節點
1.Client 從server獲取信息,週期性發送給server,表示本身還活着 當client鏈接時,server回傳ack信息,若是客戶端沒有收到響應,就會重定向到另外一個server 2.Server. zk集羣的一員,向client提供全部service,向客戶端發送確認信息表示服務器還活着 3.ensemble 一組服務器,最小的節點數是3 4.leader.若是任何被鏈接的節點發生故障,自定恢復,zk服務啓動時,完成leader的選舉 5.Follower.遵循leader管理的的服務節點
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中,會話的請求是按照先進先出的順序執行的,一旦client鏈接到server,那麼這個session就創建了,那麼sessionId就分配給客戶端了 client以固定間隔向server發送心跳,表示session是valid的, zk集羣若是在超時的時候,沒有收到心跳,就斷定爲client掛了 與此同時,臨時節點就被刪除了
觀察者模式 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.序列節點 數據狀態:版本。
讀: 寫:
1.全部節點在同一目錄下面建立臨時序列節點 2.zk會添加10位的序列號到路徑後面,而且znode會是xxx/xxx00000000001 3.對於給定的例子,在全部znode節點中,建立最小號的節點會成爲leader,全部其餘節點會成爲follower 4.每一個節點會觀察小於本身節點的主機(註冊觀察者) 5.若是leader掛了,對應的znode就會被刪除了 6.觀察者就會收到通知
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目錄