實(shí)訓(xùn)總結(jié)20171006

Zookeeper

是一個(gè)分布式應(yīng)用程序提供高性能協(xié)調(diào)服務(wù)的工具集合脏榆。

ZooKeeper本質(zhì)上是一個(gè)分布式的小文件存儲(chǔ)系統(tǒng)。原本是Apache Hadoop的一個(gè)組件铭拧,現(xiàn)在被拆分為一個(gè)Hadoop的獨(dú)立子項(xiàng)目,在HBase(Hadoop的另外一個(gè)被拆分出來(lái)的子項(xiàng)目,用于分布式環(huán)境下的超大數(shù)據(jù)量的DBMS)中也用到了ZooKeeper集群嫉父。

Hadoop,使用Zookeeper的事件處理確保整個(gè)集群只有一個(gè)NameNode眼刃,存儲(chǔ)配置信息等.

HBase绕辖,使用Zookeeper的事件處理確保整個(gè)集群只有一個(gè)HMaster,察覺(jué)HRegionServer聯(lián)機(jī)和宕(dàng)機(jī)擂红,存儲(chǔ)訪(fǎng)問(wèn)控制列表等仪际。

ZooKeeper節(jié)點(diǎn)Znode

ZooKeeper目錄樹(shù)中每一個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)Znode。每個(gè)Znode維護(hù)著一個(gè)屬性結(jié)構(gòu),它包含著版本號(hào)(dataVersion)树碱,時(shí)間戳(ctime,mtime)等狀態(tài)信息肯适。ZooKeeper正是使用節(jié)點(diǎn)的這些特性來(lái)實(shí)現(xiàn)它的某些特定功能。每當(dāng)Znode的數(shù)據(jù)改變時(shí)成榜,他相應(yīng)的版本號(hào)將會(huì)增加框舔。每當(dāng)客戶(hù)端檢索數(shù)據(jù)時(shí),它將同時(shí)檢索數(shù)據(jù)的版本號(hào)赎婚。并且如果一個(gè)客戶(hù)端執(zhí)行了某個(gè)節(jié)點(diǎn)的更新或刪除操作刘绣,他也必須提供要被操作的數(shù)據(jù)版本號(hào)。如果所提供的數(shù)據(jù)版本號(hào)與實(shí)際不匹配挣输,那么這個(gè)操作將會(huì)失敗纬凤。

Znode是客戶(hù)端訪(fǎng)問(wèn)ZooKeeper的主要實(shí)體,它包含以下幾個(gè)特征:

(1)Watches

客戶(hù)端可以在節(jié)點(diǎn)上設(shè)置watch(我們稱(chēng)之為監(jiān)視器)撩嚼。當(dāng)節(jié)點(diǎn)狀態(tài)發(fā)生改變時(shí)(數(shù)據(jù)的增移斩、刪、改)將會(huì)觸發(fā)watch所對(duì)應(yīng)的操作绢馍。當(dāng)watch被觸發(fā)時(shí)向瓷,ZooKeeper將會(huì)向客戶(hù)端發(fā)送且僅發(fā)送一條通知,因?yàn)閣atch只能被觸發(fā)一次舰涌。

(2)數(shù)據(jù)訪(fǎng)問(wèn)

ZooKeeper中的每個(gè)節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)要被原子性的操作猖任。也就是說(shuō)讀操作將獲取與節(jié)點(diǎn)相關(guān)的所有數(shù)據(jù),寫(xiě)操作也將替換掉節(jié)點(diǎn)的所有數(shù)據(jù)瓷耙。另外朱躺,每一個(gè)節(jié)點(diǎn)都擁有自己的ACL(訪(fǎng)問(wèn)控制列表),這個(gè)列表規(guī)定了用戶(hù)的權(quán)限搁痛,即限定了特定用戶(hù)對(duì)目標(biāo)節(jié)點(diǎn)可以執(zhí)行的操作长搀。

(3)節(jié)點(diǎn)類(lèi)型

ZooKeeper中的節(jié)點(diǎn)有兩種,分別為臨時(shí)節(jié)點(diǎn)和永久節(jié)點(diǎn)鸡典。節(jié)點(diǎn)的類(lèi)型在創(chuàng)建時(shí)即被確定源请,并且不能改變。

ZooKeeper的臨時(shí)節(jié)點(diǎn):該節(jié)點(diǎn)的生命周期依賴(lài)于創(chuàng)建它們的會(huì)話(huà)彻况。一旦會(huì)話(huà)結(jié)束谁尸,臨時(shí)節(jié)點(diǎn)將被自動(dòng)刪除,當(dāng)然可以也可以手動(dòng)刪除纽甘。另外良蛮,需要注意是,ZooKeeper的臨時(shí)節(jié)點(diǎn)不允許擁有子節(jié)點(diǎn)悍赢。

ZooKeeper的永久節(jié)點(diǎn):該節(jié)點(diǎn)的生命周期不依賴(lài)于會(huì)話(huà)决瞳,并且只有在客戶(hù)端顯示執(zhí)行刪除操作的時(shí)候货徙,他們才能被刪除。

(4)順序節(jié)點(diǎn)(唯一性的保證)

當(dāng)創(chuàng)建Znode的時(shí)候皮胡,用戶(hù)可以請(qǐng)求在ZooKeeper的路徑結(jié)尾添加一個(gè)遞增的計(jì)數(shù)痴颊。這個(gè)計(jì)數(shù)對(duì)于此節(jié)點(diǎn)的父節(jié)點(diǎn)來(lái)說(shuō)是唯一的,它的格式為“%10d”(10位數(shù)字胸囱,沒(méi)有數(shù)值的數(shù)位用0補(bǔ)充祷舀,例如“0000000001”)瀑梗。當(dāng)計(jì)數(shù)值大于232-1時(shí)烹笔,計(jì)數(shù)器將溢出。

org.apache.zookeeper.CreateMode中定義了四種節(jié)點(diǎn)類(lèi)型抛丽,分別對(duì)應(yīng):

PERSISTENT:永久節(jié)點(diǎn)

EPHEMERAL:臨時(shí)節(jié)點(diǎn)

PERSISTENT_SEQUENTIAL:永久節(jié)點(diǎn)谤职、序列化

EPHEMERAL_SEQUENTIAL:臨時(shí)節(jié)點(diǎn)、序列化

ZooKeeper數(shù)據(jù)模型

ZooKeeper擁有一個(gè)層次的命名空間亿鲜,這個(gè)和分布式的文件系統(tǒng)非常相似允蜈。不同的是ZooKeeper命名空間中的Znode,兼具文件和目錄兩種特點(diǎn)蒿柳。既像文件一樣維護(hù)著數(shù)據(jù)饶套、元信息、ACL垒探、時(shí)間戳等數(shù)據(jù)結(jié)構(gòu)妓蛮,又像目錄一樣可以作為路徑標(biāo)識(shí)的一部分,并可以具有子znode圾叼。用戶(hù)對(duì)znode具有增蛤克、刪、改夷蚊、查等操作(權(quán)限允許的情況下)构挤。

znode具有原子性操作,每個(gè)znode的數(shù)據(jù)將被原子性地讀寫(xiě)惕鼓,讀操作會(huì)讀取與znode相關(guān)的所有數(shù)據(jù)筋现,寫(xiě)操作會(huì)一次性替換所有數(shù)據(jù)。zookeeper并沒(méi)有被設(shè)計(jì)為常規(guī)的數(shù)據(jù)庫(kù)或者大數(shù)據(jù)存儲(chǔ)箱歧,相反的是夫否,它用來(lái)管理調(diào)度數(shù)據(jù),比如分布式應(yīng)用中的配置文件信息叫胁、狀態(tài)信息凰慈、匯集位置等等。這些數(shù)據(jù)的共同特性就是它們都是很小的數(shù)據(jù)驼鹅,通常以KB為大小單位微谓。zooKeeper的服務(wù)器和客戶(hù)端都被設(shè)計(jì)為嚴(yán)格檢查并限制每個(gè)znode的數(shù)據(jù)大小至多1M森篷,當(dāng)時(shí)常規(guī)使用中應(yīng)該遠(yuǎn)小于此值。

Zonde由路徑標(biāo)注豺型,ZooKeeper中被表示成有反斜杠分割的Unicode字符串仲智,如同Unix中的文件路徑。路徑必須是絕對(duì)的姻氨,因此他們必須由反斜杠來(lái)字符開(kāi)頭钓辆。除此以外,他們必須是唯一的肴焊,也就是說(shuō)每一個(gè)路徑只有一個(gè)表示前联,因此這些路徑不能改變。ZooKeeper的數(shù)據(jù)結(jié)構(gòu),與普通的文件系統(tǒng)極為類(lèi)似.


圖中的每個(gè)節(jié)點(diǎn)稱(chēng)為一個(gè)znode.每個(gè)znode由3部分組成:

1.stat:此為狀態(tài)信息,描述該znode的版本,權(quán)限等信息.

2.data:與該znode關(guān)聯(lián)的數(shù)據(jù).

3.children:該znode下的子節(jié)點(diǎn).


ZooKeeper部署-單機(jī)模式

zoo.cfg配置


重要命令

[hadoop@centos-1 zookeeper-3.4.5-cdh4.3.0]$bin/./zkServer.sh start

JMX enabled by default

Using config:/export/home/tools/zookeeper-3.4.5-cdh4.3.0/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

[hadoop@centos-2 zookeeper-3.4.5-cdh4.3.0]$bin/./zkServer.sh status

JMX enabled by default

Using config: /export/home/tools/zookeeper-3.4.5-cdh4.3.0/bin/../conf/zoo.cfg

Mode: standalone

[hadoop@centos-1 zookeeper-3.4.5-cdh4.3.0]$bin/./zkServer.sh start

JMX enabled by default

Using config:/export/home/tools/zookeeper-3.4.5-cdh4.3.0/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

[hadoop@centos-2 zookeeper-3.4.5-cdh4.3.0]$bin/./zkServer.sh status

JMX enabled by default

Using config:/export/home/tools/zookeeper-3.4.5-cdh4.3.0/bin/../conf/zoo.cfg

Mode: leader

[hadoop@centos-2 zookeeper-3.4.5-cdh4.3.0]$bin/./zkServer.sh status

JMX enabled by default

Using config:/export/home/tools/zookeeper-3.4.5-cdh4.3.0/bin/../conf/zoo.cfg

Mode: follower

Zookeeper使用場(chǎng)景

分布式獨(dú)占鎖


分布式讀寫(xiě)鎖


分布式隊(duì)列-FIFO


分布式隊(duì)列-SyncQueue


默認(rèn)值遞增


安裝mvn

1娶眷、獲取代碼

#git?clonehttps://github.com/DeemOpen/zkui.git

2似嗤、構(gòu)建并安裝程序

#cd?zkui/

#yum?install?-y?maven

#mvn?clean?install

3、修改配置文件

#cp?config.cfg?target/

#cd?target/

#vim?config.cfg

serverPort=9090?????#指定端口

zkServer=xxxx:2181,xxxx:2181

userSet?=?{"users":?[{?"username":"admin"?,?"password":"admin","role":?"ADMIN"?},{?"username":"appconfig"?,?"password":"appconfig","role":?"USER"?}]}

4届宠、啟動(dòng)程序至后臺(tái)

#nohup?java?-jar?zkui-2.0-SNAPSHOT-jar-with-dependencies.jar?&

5烁落、用瀏覽器訪(fǎng)問(wèn)

http://xxxx:9090

6、Kafka

kafka是由LinkedIn開(kāi)發(fā)豌注,主要是用來(lái)處理Linkedin的大面積活躍數(shù)據(jù)流處理(activitystream).此類(lèi)的數(shù)據(jù)經(jīng)常用來(lái)反映網(wǎng)站的一些有用的信息伤塌,比如PV,頁(yè)面展示給哪些用戶(hù)訪(fǎng)問(wèn),用戶(hù)搜索什么關(guān)鍵字最多轧铁,這類(lèi)信息經(jīng)常被log到文件里每聪,然后線(xiàn)下且周期性的去分析這些數(shù)據(jù)。現(xiàn)在這種用戶(hù)活躍數(shù)據(jù)已經(jīng)成為互聯(lián)網(wǎng)公司重要的一部分属桦,所以必須構(gòu)建一個(gè)更輕量且更精煉的基礎(chǔ)架構(gòu)熊痴。

√活躍數(shù)據(jù)使用案列

分析一下用戶(hù)行為(pageviews),以便我能設(shè)計(jì)出更好的廣告位聂宾。

快速的統(tǒng)計(jì)用戶(hù)投票果善,點(diǎn)擊。

對(duì)用戶(hù)的搜索關(guān)鍵詞進(jìn)行統(tǒng)計(jì)系谐,分析出當(dāng)前的流行趨勢(shì)巾陕。

防止用戶(hù)對(duì)網(wǎng)站進(jìn)行無(wú)限制的抓取數(shù)據(jù),以及超限制的使用API,辨別垃圾纪他。

對(duì)網(wǎng)站進(jìn)行全方位的實(shí)時(shí)監(jiān)控鄙煤,從而得到實(shí)時(shí)有效的性能數(shù)據(jù),并且及時(shí)的發(fā)成警告茶袒。

批量的導(dǎo)入數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù)梯刚,對(duì)數(shù)據(jù)進(jìn)行離線(xiàn)分析,從而得到有價(jià)值的商業(yè)信息薪寓。(0.6可以直接將數(shù)據(jù)導(dǎo)入Hadoop)

√活躍數(shù)據(jù)的特點(diǎn)

高流量的活躍數(shù)據(jù)是無(wú)法確定其大小的亡资,因?yàn)樗赡茈S時(shí)的變化澜共,比如商家可能促銷(xiāo),節(jié)假日打折锥腻,突然又冒出一個(gè)跳樓價(jià)等等嗦董。所有的數(shù)據(jù)可能是數(shù)量級(jí)的往上遞增。傳統(tǒng)日志分析方式都是需要離線(xiàn)瘦黑,而且操作起來(lái)比較復(fù)雜京革,根本無(wú)法滿(mǎn)足實(shí)時(shí)的分析。另一方面幸斥,現(xiàn)有的消息隊(duì)列系統(tǒng)只能達(dá)到近似實(shí)時(shí)的分析匹摇,因?yàn)闊o(wú)法消費(fèi)大量的持久化在隊(duì)列系統(tǒng)上的信息。Kafka的目標(biāo)就是能夠成為一個(gè)高效的隊(duì)列平臺(tái)睡毒,無(wú)論是處理離線(xiàn)的信息還是在線(xiàn)的信息来惧。

Kafka集群


消息存儲(chǔ)設(shè)計(jì)


設(shè)計(jì)特點(diǎn)

消息保存在磁盤(pán)冗栗,O(1)時(shí)間復(fù)雜度

不使用內(nèi)存演顾?使用磁盤(pán)緩存

消費(fèi)狀態(tài)保存在消費(fèi)客戶(hù)端

可以保存足夠大的未處理消息


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市隅居,隨后出現(xiàn)的幾起案子钠至,更是在濱河造成了極大的恐慌,老刑警劉巖胎源,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棉钧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡涕蚤,警方通過(guò)查閱死者的電腦和手機(jī)宪卿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)万栅,“玉大人佑钾,你說(shuō)我怎么就攤上這事》沉#” “怎么了休溶?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)扰她。 經(jīng)常有香客問(wèn)我兽掰,道長(zhǎng),這世上最難降的妖魔是什么徒役? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任孽尽,我火速辦了婚禮,結(jié)果婚禮上忧勿,老公的妹妹穿的比我還像新娘杉女。我一直安慰自己艇拍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布宠纯。 她就那樣靜靜地躺著卸夕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪婆瓜。 梳的紋絲不亂的頭發(fā)上快集,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音廉白,去河邊找鬼个初。 笑死,一個(gè)胖子當(dāng)著我的面吹牛猴蹂,可吹牛的內(nèi)容都是我干的院溺。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼磅轻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼珍逸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起聋溜,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谆膳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后撮躁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體漱病,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年把曼,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了杨帽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嗤军,死狀恐怖注盈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情型雳,我是刑警寧澤当凡,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站纠俭,受9級(jí)特大地震影響沿量,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冤荆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一朴则、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钓简,春花似錦乌妒、人聲如沸汹想。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)古掏。三九已至,卻和暖如春侦啸,著一層夾襖步出監(jiān)牢的瞬間槽唾,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工光涂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庞萍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓忘闻,卻偏偏與公主長(zhǎng)得像钝计,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子齐佳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容