最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

文章大數(shù)據(jù)離線(xiàn)階段01-課程導(dǎo)論,Apache ZooKeeper

2023-08-07 10:57 作者:程序員四次元ポケット  | 我要投稿

一、大數(shù)據(jù)課程導(dǎo)論

1.數(shù)據(jù)與數(shù)據(jù)分析

數(shù)據(jù)分析離不開(kāi)數(shù)據(jù)。百科對(duì)數(shù)據(jù)(data)的定義:是事實(shí)或觀察的結(jié)果,是對(duì)客觀事物的邏輯歸納,是用于表示客觀事物的未經(jīng)加工的原始素材。數(shù)據(jù)可以是連續(xù)的值,比如聲音、圖像,稱(chēng)為模擬數(shù)據(jù);也可以是離散的,如符號(hào)、文字,稱(chēng)為數(shù)字?jǐn)?shù)據(jù)。

數(shù)據(jù)分析是指用適當(dāng)?shù)慕y(tǒng)計(jì)分析方法對(duì)收集來(lái)的數(shù)據(jù)進(jìn)行分析,將它們加以匯總和理解并消化,以求最大化地開(kāi)發(fā)數(shù)據(jù)的功能,發(fā)揮數(shù)據(jù)的作用。

商業(yè)領(lǐng)域中,數(shù)據(jù)分析能夠給幫助企業(yè)進(jìn)行判斷和決策,以便采取相應(yīng)的策略與行動(dòng)。例如,企業(yè)高層希望通過(guò)市場(chǎng)分析和研究,把握當(dāng)前產(chǎn)品的市場(chǎng)動(dòng)向,從而指定合理的產(chǎn)品研發(fā)和銷(xiāo)售計(jì)劃,這就必須依賴(lài)數(shù)據(jù)分析才能完成。生活中最著名的例子便是天氣專(zhuān)家通過(guò)對(duì)氣象數(shù)據(jù)進(jìn)行分析,并且制作出天氣預(yù)報(bào),根據(jù)預(yù)報(bào),我們會(huì)做出相應(yīng)的策略,是帶傘還是加件毛衣。

2. 數(shù)據(jù)分析作用

數(shù)據(jù)分析的目的是把隱藏在數(shù)據(jù)背后的信息集中和提煉出來(lái),總結(jié)出所研究對(duì)象的內(nèi)在規(guī)律,幫助管理者進(jìn)行有效的判斷和決策。

數(shù)據(jù)分析在企業(yè)日常經(jīng)營(yíng)分析中主要有三大作用:


現(xiàn)狀分析(分析當(dāng)下的數(shù)據(jù))

簡(jiǎn)單來(lái)說(shuō)就是告訴你當(dāng)前的狀況,具體體現(xiàn)在:

第一,告訴你企業(yè)現(xiàn)階段的整體運(yùn)營(yíng)情況,通過(guò)各個(gè)指標(biāo)的完成情況來(lái)衡量企業(yè)的運(yùn)營(yíng)狀態(tài),以說(shuō)明企業(yè)整天運(yùn)營(yíng)是好了還是壞了,好的程度如何,壞的程度又到哪里。

第二,告訴你企業(yè)各項(xiàng)業(yè)務(wù)的構(gòu)成,讓你了解企業(yè)各項(xiàng)業(yè)務(wù)的發(fā)展以及變動(dòng)情況,對(duì)企業(yè)運(yùn)營(yíng)狀況有更深入的了解。

原因分析(分析過(guò)去的數(shù)據(jù))

簡(jiǎn)單來(lái)說(shuō)就是告訴你某一現(xiàn)狀為什么發(fā)生。

經(jīng)過(guò)現(xiàn)狀分析,我們對(duì)企業(yè)的運(yùn)營(yíng)情況有了基本了解,但不知道運(yùn)營(yíng)情況具體好在哪里,差在哪里,是什么原因引起的。這時(shí)就需要開(kāi)展原因分析,以進(jìn)一步確定業(yè)務(wù)變動(dòng)的具體原因。

例如2020年2月運(yùn)營(yíng)收入下降50%,是什么原因?qū)е碌哪?,是各?xiàng)業(yè)務(wù)收入都出現(xiàn)下降,還是個(gè)別業(yè)務(wù)收入下降引起的,是各個(gè)地區(qū)業(yè)務(wù)收入都出現(xiàn)下降,還是個(gè)別地區(qū)業(yè)務(wù)收入下降引起的。這就需要我們開(kāi)展原因分析,進(jìn)一步確定收入下降的具體原因,對(duì)運(yùn)營(yíng)策略做出調(diào)整與優(yōu)化。

預(yù)測(cè)分析(結(jié)合數(shù)據(jù)預(yù)測(cè)未來(lái))

簡(jiǎn)單來(lái)說(shuō)就是告訴你將來(lái)會(huì)發(fā)生什么。

在了解企業(yè)運(yùn)營(yíng)現(xiàn)狀后,有時(shí)還需要對(duì)企業(yè)未來(lái)發(fā)展趨勢(shì)做出預(yù)測(cè),為制訂企業(yè)運(yùn)營(yíng)目標(biāo)及策略提供有效的參考與決策依據(jù),以保證企業(yè)的可持續(xù)健康發(fā)展。預(yù)測(cè)分析一般通過(guò)專(zhuān)題分析來(lái)完成,通常在制訂企業(yè)季度、年度等計(jì)劃時(shí)進(jìn)行,其開(kāi)展的頻率沒(méi)有現(xiàn)狀分析及原因分析高。

3.數(shù)據(jù)分析基本步驟

張文霖在《數(shù)據(jù)分析六步曲》說(shuō),典型的數(shù)據(jù)分析應(yīng)該包含以下幾個(gè)步驟:


明確分析目的和思路

首先明白本次的目的,梳理分析思路,并搭建整體分析框架,把分析目的分解,化為若干的點(diǎn),清晰明了,即分析的目的,用戶(hù)什么樣的,如何具體開(kāi)展數(shù)據(jù)分析,需要從哪幾個(gè)角度進(jìn)行分析,采用哪些分析指標(biāo)(各類(lèi)分析指標(biāo)需合理搭配使用)。

同時(shí),確保分析框架的體系化和邏輯性,簡(jiǎn)單來(lái)說(shuō)就是先分析什么,后分析什么,使得各個(gè)分析點(diǎn)之間具有邏輯聯(lián)系。避免不知從哪方面入手以及分析的內(nèi)容和指標(biāo)被質(zhì)疑是否合理、完整。所以體系化就是為了讓你的分析框架具有說(shuō)服力。

要想使分析框架體系化,就需要一些營(yíng)銷(xiāo)、管理等理論為指導(dǎo),結(jié)合著實(shí)際的業(yè)務(wù)情況進(jìn)行構(gòu)建,這樣才能保證分析維度的完整性,分析結(jié)果的有效性以及正確性。比如以用戶(hù)行為理論為指導(dǎo),搭建的互聯(lián)網(wǎng)網(wǎng)站分析指標(biāo)框架如下:

把跟數(shù)據(jù)分析相關(guān)的營(yíng)銷(xiāo)、管理等理論統(tǒng)稱(chēng)為數(shù)據(jù)分析方法論。比如用戶(hù)行為理論、PEST分析法、5W2H分析法等等。

數(shù)據(jù)收集

一般數(shù)據(jù)來(lái)源主要有以下幾種方式:

數(shù)據(jù)庫(kù):每個(gè)公司都有自己的業(yè)務(wù)數(shù)據(jù)庫(kù),存放從公司成立以來(lái)產(chǎn)生的相關(guān)業(yè)務(wù)數(shù)據(jù)。這個(gè)業(yè)務(wù)數(shù)據(jù)庫(kù)就是一個(gè)龐大的數(shù)據(jù)資源,需要有效地利用起來(lái)。

公開(kāi)出版物:可以用于收集數(shù)據(jù)的公開(kāi)出版物包括《中國(guó)統(tǒng)計(jì)年鑒》《中國(guó)社會(huì)統(tǒng)計(jì)年鑒》《中國(guó)人口統(tǒng)計(jì)年鑒》《世界經(jīng)濟(jì)年鑒》《世界發(fā)展報(bào)告》等統(tǒng)計(jì)年鑒或報(bào)告。

互聯(lián)網(wǎng):隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)上發(fā)布的數(shù)據(jù)越來(lái)越多,特別是搜索引擎可以幫助我們快速找到所需要的數(shù)據(jù),例如國(guó)家及地方統(tǒng)計(jì)局網(wǎng)站、行業(yè)組織網(wǎng)站、政府機(jī)構(gòu)網(wǎng)站、傳播媒體網(wǎng)站、大型綜合門(mén)戶(hù)網(wǎng)站等上面都可能有我們需要的數(shù)據(jù)。

市場(chǎng)調(diào)查:進(jìn)行數(shù)據(jù)分析時(shí),需要了解用戶(hù)的想法與需求,但是通過(guò)以上三種方式獲得此類(lèi)數(shù)據(jù)會(huì)比較困難,因此可以嘗試使用市場(chǎng)調(diào)查的方法收集用戶(hù)的想法和需求數(shù)據(jù)。


數(shù)據(jù)處理

數(shù)據(jù)處理是指對(duì)收集到的數(shù)據(jù)進(jìn)行加工整理,形成適合數(shù)據(jù)分析的樣式,它是數(shù)據(jù)分析前必不可少的階段。數(shù)據(jù)處理的基本目的是從大量的、雜亂無(wú)章、難以理解的數(shù)據(jù)中,抽取并推導(dǎo)出對(duì)解決問(wèn)題有價(jià)值、有意義的數(shù)據(jù)。

數(shù)據(jù)處理主要包括數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)化、數(shù)據(jù)提取、數(shù)據(jù)計(jì)算等處理方法。一般拿到手的數(shù)據(jù)都需要進(jìn)行一定的處理才能用于后續(xù)的數(shù)據(jù)分析工作,即使再“干凈”’的原始數(shù)據(jù)也需要先進(jìn)行一定的處理才能使用。

數(shù)據(jù)處理是數(shù)據(jù)分析的基礎(chǔ)。通過(guò)數(shù)據(jù)處理,將收集到的原始數(shù)據(jù)轉(zhuǎn)換為可以分析的形式,并且保證數(shù)據(jù)的一致性和有效性。


數(shù)據(jù)分析

數(shù)據(jù)分析是指用適當(dāng)?shù)姆治龇椒肮ぞ?,?duì)處理過(guò)的數(shù)據(jù)進(jìn)行分析,提取有價(jià)值的信息,形成有效結(jié)論的過(guò)程。由于數(shù)據(jù)分析多是通過(guò)軟件來(lái)完成的,這就要求數(shù)據(jù)分析師不僅要掌握各種數(shù)據(jù)分析方法,還要熟悉數(shù)據(jù)分析軟件的操作。

數(shù)據(jù)挖掘其實(shí)是一種高級(jí)的數(shù)據(jù)分析方法,就是從大量的數(shù)據(jù)中挖掘出有用的信息,它是根據(jù)用戶(hù)的特定要求,從浩如煙海的數(shù)據(jù)中找出所需的信息,以滿(mǎn)足用戶(hù)的特定需求。數(shù)據(jù)挖掘技術(shù)是人們長(zhǎng)期對(duì)數(shù)據(jù)庫(kù)技術(shù)進(jìn)行研究和開(kāi)發(fā)的結(jié)果。一般來(lái)說(shuō),數(shù)據(jù)挖掘側(cè)重解決四類(lèi)數(shù)據(jù)分析問(wèn)題:分類(lèi)、聚類(lèi)、關(guān)聯(lián)和預(yù)測(cè),重點(diǎn)在尋找模式和規(guī)律。數(shù)據(jù)分析與數(shù)據(jù)挖掘的本質(zhì)是一樣的,都是從數(shù)據(jù)里面發(fā)現(xiàn)關(guān)于業(yè)務(wù)的知識(shí)。


數(shù)據(jù)展現(xiàn)

一般情況下,數(shù)據(jù)是通過(guò)表格和圖形的方式來(lái)呈現(xiàn)的,我們常說(shuō)用圖表說(shuō)話(huà)就是這個(gè)意思。常用的數(shù)據(jù)圖表包括餅圖、柱形圖、條形圖、折線(xiàn)圖、散點(diǎn)圖、雷達(dá)圖等,當(dāng)然可以對(duì)這些圖表進(jìn)一步整理加工,使之變?yōu)槲覀兯枰膱D形,例如金字塔圖、矩陣圖、漏斗圖等。

大多數(shù)情況下,人們更愿意接受圖形這種數(shù)據(jù)展現(xiàn)方式,因?yàn)樗芨佑行?、直觀地傳遞出分析所要表達(dá)的觀點(diǎn)。記位,一般情況不,能用圖說(shuō)明問(wèn)題的就不用表格,能用表格說(shuō)明問(wèn)題的就不要用文字。


報(bào)告撰寫(xiě)

數(shù)據(jù)分析報(bào)告其實(shí)是對(duì)整個(gè)數(shù)據(jù)分析過(guò)程的一個(gè)總結(jié)與呈現(xiàn)。通過(guò)報(bào)告,把數(shù)據(jù)分析的起因、過(guò)程、結(jié)果及建議完整地呈現(xiàn)出來(lái),供決策者參考。

一份好的數(shù)據(jù)分析報(bào)告,首先需要有一個(gè)好的分析框架,并且圖文并茂,層次明晰,能夠讓閱讀者一目了然。結(jié)構(gòu)清晰、主次分明可以使閱讀者正確理解報(bào)告內(nèi)容;圖文并茂,可以令數(shù)據(jù)更加生動(dòng)活潑 ,提供視覺(jué)沖擊力,有助于閱讀者更形象、直觀地看清楚問(wèn)題和結(jié)論,從而產(chǎn)生思考。

另外,數(shù)據(jù)分析報(bào)告需要有明確的結(jié)論,沒(méi)有明確結(jié)論的分析稱(chēng)不上分析,同時(shí)也失去了報(bào)告的意義,因?yàn)槲覀冏畛蹙褪菫閷ふ一蛘咔笞C一個(gè)結(jié)論才進(jìn)行分析的,所以千萬(wàn)不要舍本求末。

最后,好的分析報(bào)告一定要有建議或解決方案。作為決策者,需要的不僅僅是找出問(wèn)題,更重要的是建議或解決方案,以便他們做決策時(shí)作參考。所以,數(shù)據(jù)分析師不僅需要掌握數(shù)據(jù)分析方法,而且還要了解和熟悉業(yè)務(wù),這樣才能根據(jù)發(fā)現(xiàn)的業(yè)務(wù)問(wèn)題,提出具有可行性的建議或解決方案。


4.大數(shù)據(jù)時(shí)代

概述

最早提出“大數(shù)據(jù)”時(shí)代到來(lái)的是全球知名咨詢(xún)公司麥肯錫,麥肯錫稱(chēng):“數(shù)據(jù),已經(jīng)滲透到當(dāng)今每一個(gè)行業(yè)和業(yè)務(wù)職能領(lǐng)域,成為重要的生產(chǎn)因素。人們對(duì)于海量數(shù)據(jù)的挖掘和運(yùn)用,預(yù)示著新一波生產(chǎn)率增長(zhǎng)和消費(fèi)者盈余浪潮的到來(lái)?!?/p>

進(jìn)入2012年,大數(shù)據(jù)(big data)一詞越來(lái)越多地被提及,人們用它來(lái)描述和定義信息爆炸時(shí)代產(chǎn)生的海量數(shù)據(jù),并命名與之相關(guān)的技術(shù)發(fā)展與創(chuàng)新。

CCTV紀(jì)錄片《大數(shù)據(jù)時(shí)代》,是國(guó)內(nèi)首部大數(shù)據(jù)產(chǎn)業(yè)題材紀(jì)錄片,節(jié)目細(xì)致而生動(dòng)地講述了大數(shù)據(jù)技術(shù)在政府治理、民生服務(wù)、數(shù)據(jù)安全、工業(yè)轉(zhuǎn)型、未來(lái)生活等方面給我們帶來(lái)的改變和影響。


海量數(shù)據(jù)的挑戰(zhàn)

公開(kāi)數(shù)據(jù)顯示,互聯(lián)網(wǎng)搜索巨頭百度2013年擁有數(shù)據(jù)量接近EB級(jí)別。阿里、騰訊都聲明自己存儲(chǔ)的數(shù)據(jù)總量都達(dá)到了百PB以上。此外,電信、醫(yī)療、金融、公共安全、交通、氣象等各個(gè)方面保存的數(shù)據(jù)量也都達(dá)到數(shù)十或者上百PB級(jí)別。全球數(shù)據(jù)量以每?jī)赡攴兜乃俣仍鲩L(zhǎng),在2010年已經(jīng)正式進(jìn)入ZB時(shí)代,2020年全球數(shù)據(jù)總量達(dá)到44ZB。

究竟怎么去存儲(chǔ)龐大的數(shù)據(jù),是企業(yè)面臨的首要問(wèn)題。傳統(tǒng)的數(shù)據(jù)存儲(chǔ)模式存儲(chǔ)容量是有大小限制或者空間限制的,怎么去設(shè)計(jì)出一個(gè)可以支撐大量數(shù)據(jù)的存儲(chǔ)方案是開(kāi)展數(shù)據(jù)分析的首要前提。

解決了海量數(shù)據(jù)的存儲(chǔ)問(wèn)題,接下來(lái)面臨的海量數(shù)據(jù)的計(jì)算問(wèn)題也是比較讓人頭疼,因?yàn)槠髽I(yè)不僅追求可以計(jì)算,還會(huì)追求計(jì)算的速度、效率。

以目前互聯(lián)網(wǎng)行業(yè)產(chǎn)生的數(shù)據(jù)量級(jí)別,要處理這些數(shù)據(jù),就需要一個(gè)更好、更便捷的分析計(jì)算方式了。傳統(tǒng)的數(shù)據(jù)處理方式顯然力不從心,而且效率也會(huì)非常低下。這正是傳統(tǒng)數(shù)據(jù)分析領(lǐng)域面臨的另一個(gè)挑戰(zhàn),如何去分析、計(jì)算海量數(shù)據(jù)。

大數(shù)據(jù)的特點(diǎn)(5V特征)

Volume:數(shù)據(jù)量大,包括采集、存儲(chǔ)和計(jì)算的量都非常大;

Variety:種類(lèi)和來(lái)源多樣化。包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù);

Value:數(shù)據(jù)價(jià)值密度相對(duì)較低,或者說(shuō)是浪里淘沙卻又彌足珍貴;

Velocity:數(shù)據(jù)增長(zhǎng)速度快,處理速度也快,時(shí)效性要求高;

Veracity:數(shù)據(jù)的準(zhǔn)確性和可信賴(lài)度,即數(shù)據(jù)的質(zhì)量。

大數(shù)據(jù)的應(yīng)用場(chǎng)景

電商方面:精準(zhǔn)廣告位,通過(guò)對(duì)用戶(hù)的瀏覽行為,點(diǎn)擊行為等進(jìn)行大數(shù)據(jù)采集,分析,挖掘用戶(hù)的二層三層喜歡,擴(kuò)大產(chǎn)出。

傳媒方面:猜你喜歡,通過(guò)對(duì)受眾人群機(jī)型大數(shù)據(jù)分析,結(jié)合對(duì)應(yīng)算法,對(duì)受眾喜歡的進(jìn)行交互推薦。

金融方面:理財(cái)投資,通過(guò)對(duì)個(gè)人的信用評(píng)估,風(fēng)險(xiǎn)承擔(dān)能力評(píng)估,集合眾多理財(cái)產(chǎn)品、推薦響應(yīng)的投資理財(cái)產(chǎn)品。

交通方面:目前,交通的大數(shù)據(jù)應(yīng)用主要在兩個(gè)方面:一方面通過(guò)對(duì)車(chē)流量等海量數(shù)據(jù)的收集,估算,預(yù)測(cè)該路段一定時(shí)間內(nèi)的車(chē)流量情況,給用戶(hù)提供便利,合理進(jìn)行道路規(guī)劃;另一方面可以利用大數(shù)據(jù)來(lái)實(shí)現(xiàn)即時(shí)信號(hào)燈調(diào)度,提高已有線(xiàn)路通行能力。

電信方面:智慧營(yíng)業(yè)廳,通過(guò)對(duì)用戶(hù)當(dāng)前的行為習(xí)慣、偏好,節(jié)假日的相應(yīng)數(shù)據(jù)變化,調(diào)節(jié)自身業(yè)務(wù)結(jié)構(gòu),做到按需分配。

安防方面:人臉識(shí)別,通過(guò)人臉識(shí)別,匹配,存儲(chǔ)用戶(hù)數(shù)據(jù),結(jié)合人工智能,分析及甄別用戶(hù)行為,預(yù)防犯罪行為發(fā)生。

醫(yī)療方面:智慧醫(yī)療,通過(guò)對(duì)海量病例大數(shù)據(jù)的存儲(chǔ),匹配、檢索、結(jié)合用戶(hù)的飲食、行為等習(xí)慣,搭建智慧醫(yī)療體系。


5.分布式技術(shù)

什么是分布式

分布式系統(tǒng)是指:一個(gè)硬件或軟件,其組件會(huì)分布在不同的計(jì)算機(jī)上,彼此之間僅僅通過(guò)網(wǎng)絡(luò)消息傳遞進(jìn)行通信和協(xié)調(diào)的系統(tǒng)。

簡(jiǎn)單來(lái)說(shuō)就是一群獨(dú)立計(jì)算機(jī)集合起來(lái)共同對(duì)外提供服務(wù),但是對(duì)于系統(tǒng)的用戶(hù)來(lái)說(shuō),就像是一臺(tái)計(jì)算機(jī)在提供服務(wù)一樣。

分布式意味著可以采用更多的普通計(jì)算機(jī)(相對(duì)于昂貴的大型機(jī))組成分布式集群對(duì)外提供服務(wù)。計(jì)算機(jī)越多,CPU、內(nèi)存、存儲(chǔ)資源等也就越多,能夠處理的并發(fā)訪(fǎng)問(wèn)量也就越大。

下面以網(wǎng)站架構(gòu)變遷來(lái)舉例說(shuō)明。

初代的web服務(wù)網(wǎng)站架構(gòu)往往比較簡(jiǎn)單,應(yīng)用程序、數(shù)據(jù)庫(kù)、文件等所有的資源都在一臺(tái)服務(wù)器上。

從分布式系統(tǒng)的概念中我們知道,各個(gè)主機(jī)之間通信和協(xié)調(diào)主要通過(guò)網(wǎng)絡(luò)進(jìn)行,所以,分布式系統(tǒng)中的計(jì)算機(jī)在空間上幾乎沒(méi)有任何限制,這些計(jì)算機(jī)可能被放在不同的機(jī)柜上,也可能被部署在不同的機(jī)房中,還可能在不同的城市中,對(duì)于大型的網(wǎng)站甚至可能分布在不同的國(guó)家和地區(qū)。

常用分布式方案

分布式應(yīng)用和服務(wù)

將應(yīng)用和服務(wù)進(jìn)行分層和分割,然后將應(yīng)用和服務(wù)模塊進(jìn)行分布式部署。這樣做不僅可以提高并發(fā)訪(fǎng)問(wèn)能力、減少數(shù)據(jù)庫(kù)連接和資源消耗,還能使不同應(yīng)用復(fù)用共同的服務(wù),使業(yè)務(wù)易于擴(kuò)展。比如:分布式服務(wù)框架Dubbo。

分布式數(shù)據(jù)存儲(chǔ)

大型網(wǎng)站常常需要處理海量數(shù)據(jù),單臺(tái)計(jì)算機(jī)往往無(wú)法提供足夠的內(nèi)存空間,可以對(duì)這些數(shù)據(jù)進(jìn)行分布式存儲(chǔ)。比如Apache Hadoop HDFS。

分布式計(jì)算

隨著計(jì)算技術(shù)的發(fā)展,有些應(yīng)用需要非常巨大的計(jì)算能力才能完成,如果采用集中式計(jì)算,需要耗費(fèi)相當(dāng)長(zhǎng)的時(shí)間來(lái)完成。分布式計(jì)算將該應(yīng)用分解成許多小的部分,分配給多臺(tái)計(jì)算機(jī)進(jìn)行處理。這樣可以節(jié)約整體計(jì)算時(shí)間,大大提高計(jì)算效率。比如Apache Hadoop MapReduce。


分布式、集群

分布式(distributed)是指在多臺(tái)不同的服務(wù)器中部署不同的服務(wù)模塊,通過(guò)遠(yuǎn)程調(diào)用協(xié)同工作,對(duì)外提供服務(wù)。

集群(cluster)是指在多臺(tái)不同的服務(wù)器中部署相同應(yīng)用或服務(wù)模塊,構(gòu)成一個(gè)集群,通過(guò)負(fù)載均衡設(shè)備對(duì)外提供服務(wù)。


二、Apache ZooKeeper

1.Zookeeper基本知識(shí)

ZooKeeper概述

Zookeeper是一個(gè)分布式協(xié)調(diào)服務(wù)的開(kāi)源框架。主要用來(lái)解決分布式集群中應(yīng)用系統(tǒng)的一致性問(wèn)題。

ZooKeeper本質(zhì)上是一個(gè)分布式的小文件存儲(chǔ)系統(tǒng)。提供基于類(lèi)似于文件系統(tǒng)的目錄樹(shù)方式的數(shù)據(jù)存儲(chǔ),并且可以對(duì)樹(shù)中的節(jié)點(diǎn)進(jìn)行有效管理。從而用來(lái)維護(hù)和監(jiān)控你存儲(chǔ)的數(shù)據(jù)的狀態(tài)變化。通過(guò)監(jiān)控這些數(shù)據(jù)狀態(tài)的變化,從而可以達(dá)到基于數(shù)據(jù)的集群管理。


ZooKeeper特性

  1. 全局?jǐn)?shù)據(jù)一致:集群中每個(gè)服務(wù)器保存一份相同的數(shù)據(jù)副本,client無(wú)論連接到哪個(gè)服務(wù)器,展示的數(shù)據(jù)都是一致的,這是最重要的特征;

  2. 可靠性:如果消息被其中一臺(tái)服務(wù)器接受,那么將被所有的服務(wù)器接受。

  3. 順序性:包括全局有序和偏序兩種:全局有序是指如果在一臺(tái)服務(wù)器上消息a在消息b前發(fā)布,則在所有Server上消息a都將在消息b前被發(fā)布;偏序是指如果一個(gè)消息b在消息a后被同一個(gè)發(fā)送者發(fā)布,a必將排在b前面。

  4. 數(shù)據(jù)更新原子性:一次數(shù)據(jù)更新要么成功(半數(shù)以上節(jié)點(diǎn)成功),要么失敗,不存在中間狀態(tài);

  5. 實(shí)時(shí)性:Zookeeper保證客戶(hù)端將在一個(gè)時(shí)間間隔范圍內(nèi)獲得服務(wù)器的更新信息,或者服務(wù)器失效的信息。

ZooKeeper集群角色

Leader:

Zookeeper集群工作的核心

事務(wù)請(qǐng)求(寫(xiě)操作)的唯一調(diào)度和處理者,保證集群事務(wù)處理的順序性;

集群內(nèi)部各個(gè)服務(wù)器的調(diào)度者。

對(duì)于create,setData,delete等有寫(xiě)操作的請(qǐng)求,則需要統(tǒng)一轉(zhuǎn)發(fā)給leader處理,leader需要決定編號(hào)、執(zhí)行操作,這個(gè)過(guò)程稱(chēng)為一個(gè)事務(wù)。

Follower:

處理客戶(hù)端非事務(wù)(讀操作)請(qǐng)求,轉(zhuǎn)發(fā)事務(wù)請(qǐng)求給Leader;

參與集群Leader選舉投票。

此外,針對(duì)訪(fǎng)問(wèn)量比較大的zookeeper集群,還可新增觀察者角色。

Observer:

觀察者角色,觀察Zookeeper集群的最新?tīng)顟B(tài)變化并將這些狀態(tài)同步過(guò)來(lái),其對(duì)于非事務(wù)請(qǐng)求可以進(jìn)行獨(dú)立處理,對(duì)于事務(wù)請(qǐng)求,則會(huì)轉(zhuǎn)發(fā)給Leader服務(wù)器進(jìn)行處理。

不會(huì)參與任何形式的投票只提供非事務(wù)服務(wù),通常用于在不影響集群事務(wù)處理能力的前提下提升集群的非事務(wù)處理能力。

ZooKeeper集群搭建

Zookeeper集群搭建指的是ZooKeeper分布式模式安裝。通常由2n+1臺(tái)servers組成。這是因?yàn)闉榱吮WCLeader選舉(基于Paxos算法的實(shí)現(xiàn))能過(guò)得到多數(shù)的支持,所以ZooKeeper集群的數(shù)量一般為奇數(shù)。

Zookeeper運(yùn)行需要java環(huán)境,所以需要提前安裝jdk。對(duì)于安裝leader+follower模式的集群,大致過(guò)程如下:

  • 配置主機(jī)名稱(chēng)到IP地址映射配置

  • 修改ZooKeeper配置文件

  • 遠(yuǎn)程復(fù)制分發(fā)安裝文件

  • 設(shè)置myid

  • 啟動(dòng)ZooKeeper集群

如果要想使用Observer模式,可在對(duì)應(yīng)節(jié)點(diǎn)的配置文件添加如下配置:

peerType=observer ?

其次,必須在配置文件指定哪些節(jié)點(diǎn)被指定為Observer,如:

server.1:node1:2181:3181:observer ?

詳細(xì)步驟請(qǐng)參考附件安裝資料。

2. ZooKeeper shell

客戶(hù)端連接

運(yùn)行 zkCli.sh –server ip ? 進(jìn)入命令行工具。

輸入help,輸出zk shell提示:


shell基本操作

創(chuàng)建節(jié)點(diǎn)

create [-s] [-e] path data acl

其中,-s或-e分別指定節(jié)點(diǎn)特性,順序或臨時(shí)節(jié)點(diǎn),若不指定,則表示持久節(jié)點(diǎn);acl用來(lái)進(jìn)行權(quán)限控制。

創(chuàng)建順序節(jié)點(diǎn):

創(chuàng)建臨時(shí)節(jié)點(diǎn):

創(chuàng)建永久節(jié)點(diǎn):

讀取節(jié)點(diǎn)

與讀取相關(guān)的命令有l(wèi)s 命令和get 命令,ls命令可以列出Zookeeper指定節(jié)點(diǎn)下的所有子節(jié)點(diǎn),只能查看指定節(jié)點(diǎn)下的第一級(jí)的所有子節(jié)點(diǎn);get命令可以獲取Zookeeper指定節(jié)點(diǎn)的數(shù)據(jù)內(nèi)容和屬性信息。

  ls path [watch]

  get path [watch]

  ls2 path [watch]

更新節(jié)點(diǎn)

set path data [version]

data就是要更新的新內(nèi)容,version表示數(shù)據(jù)版本。


編輯

現(xiàn)在dataVersion已經(jīng)變?yōu)?了,表示進(jìn)行了更新。

刪除節(jié)點(diǎn)

delete path [version]

若刪除節(jié)點(diǎn)存在子節(jié)點(diǎn),那么無(wú)法刪除該節(jié)點(diǎn),必須先刪除子節(jié)點(diǎn),再刪除父節(jié)點(diǎn)。

Rmr path

可以遞歸刪除節(jié)點(diǎn)。

quota

setquota -n|-b val path ?對(duì)節(jié)點(diǎn)增加限制。

n:表示子節(jié)點(diǎn)的最大個(gè)數(shù)

b:表示數(shù)據(jù)值的最大長(zhǎng)度

val:子節(jié)點(diǎn)最大個(gè)數(shù)或數(shù)據(jù)值的最大長(zhǎng)度

path:節(jié)點(diǎn)路徑

listquota path ?列出指定節(jié)點(diǎn)的quota

子節(jié)點(diǎn)個(gè)數(shù)為2,數(shù)據(jù)長(zhǎng)度-1表示沒(méi)限制

delquota [-n|-b] path ?刪除quota

其他命令

history : 列出命令歷史

redo:該命令可以重新執(zhí)行指定命令編號(hào)的歷史命令,命令編號(hào)可以通過(guò)history查看

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

ZooKeeper的數(shù)據(jù)模型,在結(jié)構(gòu)上和標(biāo)準(zhǔn)文件系統(tǒng)的非常相似,擁有一個(gè)層次的命名空間,都是采用樹(shù)形層次結(jié)構(gòu),ZooKeeper樹(shù)中的每個(gè)節(jié)點(diǎn)被稱(chēng)為—Znode。和文件系統(tǒng)的目錄樹(shù)一樣,ZooKeeper樹(shù)中的每個(gè)節(jié)點(diǎn)可以擁有子節(jié)點(diǎn)。但也有不同之處:

  1. Znode兼具文件和目錄兩種特點(diǎn)。既像文件一樣維護(hù)著數(shù)據(jù)、元信息、ACL、時(shí)間戳等數(shù)據(jù)結(jié)構(gòu),又像目錄一樣可以作為路徑標(biāo)識(shí)的一部分,并可以具有子Znode。用戶(hù)對(duì)Znode具有增、刪、改、查等操作(權(quán)限允許的情況下)。

  2. Znode具有原子性操作,讀操作將獲取與節(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. Znode存儲(chǔ)數(shù)據(jù)大小有限制。ZooKeeper雖然可以關(guān)聯(lián)一些數(shù)據(jù),但并沒(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)小于此值。

  4. Znode通過(guò)路徑引用,如同Unix中的文件路徑。路徑必須是絕對(duì)的,因此他們必須由斜杠字符來(lái)開(kāi)頭。除此以外,他們必須是唯一的,也就是說(shuō)每一個(gè)路徑只有一個(gè)表示,因此這些路徑不能改變。在ZooKeeper中,路徑由Unicode字符串組成,并且有一些限制。字符串"/zookeeper"用以保存管理信息,比如關(guān)鍵配額信息。

數(shù)據(jù)結(jié)構(gòu)圖

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

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

② data:與該Znode關(guān)聯(lián)的數(shù)據(jù)

③ children:該Znode下的子節(jié)點(diǎn)

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

Znode有兩種,分別為臨時(shí)節(jié)點(diǎn)和永久節(jié)點(diǎn)。

節(jié)點(diǎn)的類(lèi)型在創(chuàng)建時(shí)即被確定,并且不能改變。

臨時(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)刪除。臨時(shí)節(jié)點(diǎn)不允許擁有子節(jié)點(diǎn)。   永久節(jié)點(diǎn):該節(jié)點(diǎn)的生命周期不依賴(lài)于會(huì)話(huà),并且只有在客戶(hù)端顯示執(zhí)行刪除操作的時(shí)候,他們才能被刪除。

Znode還有一個(gè)序列化的特性,如果創(chuàng)建的時(shí)候指定的話(huà),該Znode的名字后面會(huì)自動(dòng)追加一個(gè)不斷增加的序列號(hào)。序列號(hào)對(duì)于此節(jié)點(diǎn)的父節(jié)點(diǎn)來(lái)說(shuō)是唯一的,這樣便會(huì)記錄每個(gè)子節(jié)點(diǎn)創(chuàng)建的先后順序。它的格式為“%10d”(10位數(shù)字,沒(méi)有數(shù)值的數(shù)位用0補(bǔ)充,例如“0000000001”)。

這樣便會(huì)存在四種類(lèi)型的Znode節(jié)點(diǎn),分別對(duì)應(yīng):

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

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

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

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

節(jié)點(diǎn)屬性

每個(gè)znode都包含了一系列的屬性,通過(guò)命令get,可以獲得節(jié)點(diǎn)的屬性。

dataVersion:數(shù)據(jù)版本號(hào),每次對(duì)節(jié)點(diǎn)進(jìn)行set操作,dataVersion的值都會(huì)增加1(即使設(shè)置的是相同的數(shù)據(jù)),可有效避免了數(shù)據(jù)更新時(shí)出現(xiàn)的先后順序問(wèn)題。

cversion :子節(jié)點(diǎn)的版本號(hào)。當(dāng)znode的子節(jié)點(diǎn)有變化時(shí),cversion 的值就會(huì)增加1。

cZxid :Znode創(chuàng)建的事務(wù)id。

mZxid :Znode被修改的事務(wù)id,即每次對(duì)znode的修改都會(huì)更新mZxid。

對(duì)于zk來(lái)說(shuō),每次的變化都會(huì)產(chǎn)生一個(gè)唯一的事務(wù)id,zxid(ZooKeeper Transaction Id)。通過(guò)zxid,可以確定更新操作的先后順序。例如,如果zxid1小于zxid2,說(shuō)明zxid1操作先于zxid2發(fā)生,zxid對(duì)于整個(gè)zk都是唯一的,即使操作的是不同的znode。

ctime:節(jié)點(diǎn)創(chuàng)建時(shí)的時(shí)間戳.

mtime:節(jié)點(diǎn)最新一次更新發(fā)生時(shí)的時(shí)間戳.

ephemeralOwner:如果該節(jié)點(diǎn)為臨時(shí)節(jié)點(diǎn), ephemeralOwner值表示與該節(jié)點(diǎn)綁定的session id. 如果不是, ephemeralOwner值為0.

在client和server通信之前,首先需要建立連接,該連接稱(chēng)為session。連接建立后,如果發(fā)生連接超時(shí)、授權(quán)失敗,或者顯式關(guān)閉連接,連接便處于CLOSED狀態(tài), 此時(shí)session結(jié)束。

4. ZooKeeper Watcher(監(jiān)聽(tīng)機(jī)制)

ZooKeeper提供了分布式數(shù)據(jù)發(fā)布/訂閱功能,一個(gè)典型的發(fā)布/訂閱模型系統(tǒng)定義了一種一對(duì)多的訂閱關(guān)系,能讓多個(gè)訂閱者同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,當(dāng)這個(gè)主題對(duì)象自身狀態(tài)變化時(shí),會(huì)通知所有訂閱者,使他們能夠做出相應(yīng)的處理。

ZooKeeper中,引入了Watcher機(jī)制來(lái)實(shí)現(xiàn)這種分布式的通知功能。ZooKeeper允許客戶(hù)端向服務(wù)端注冊(cè)一個(gè)Watcher監(jiān)聽(tīng),當(dāng)服務(wù)端的一些事件觸發(fā)了這個(gè)Watcher,那么就會(huì)向指定客戶(hù)端發(fā)送一個(gè)事件通知來(lái)實(shí)現(xiàn)分布式的通知功能。

觸發(fā)事件種類(lèi)很多,如:節(jié)點(diǎn)創(chuàng)建,節(jié)點(diǎn)刪除,節(jié)點(diǎn)改變,子節(jié)點(diǎn)改變等。

總的來(lái)說(shuō)可以概括Watcher為以下三個(gè)過(guò)程:客戶(hù)端向服務(wù)端注冊(cè)Watcher、服務(wù)端事件發(fā)生觸發(fā)Watcher、客戶(hù)端回調(diào)Watcher得到觸發(fā)事件情況

Watch機(jī)制特點(diǎn)

一次性觸發(fā)

事件發(fā)生觸發(fā)監(jiān)聽(tīng),一個(gè)watcher event就會(huì)被發(fā)送到設(shè)置監(jiān)聽(tīng)的客戶(hù)端,這種效果是一次性的,后續(xù)再次發(fā)生同樣的事件,不會(huì)再次觸發(fā)。

事件封裝

ZooKeeper使用WatchedEvent對(duì)象來(lái)封裝服務(wù)端事件并傳遞。

WatchedEvent包含了每一個(gè)事件的三個(gè)基本屬性:

通知狀態(tài)(keeperState),事件類(lèi)型(EventType)和節(jié)點(diǎn)路徑(path)

event異步發(fā)送

watcher的通知事件從服務(wù)端發(fā)送到客戶(hù)端是異步的。

先注冊(cè)再觸發(fā)

Zookeeper中的watch機(jī)制,必須客戶(hù)端先去服務(wù)端注冊(cè)監(jiān)聽(tīng),這樣事件發(fā)送才會(huì)觸發(fā)監(jiān)聽(tīng),通知給客戶(hù)端。

通知狀態(tài)和事件類(lèi)型

同一個(gè)事件類(lèi)型在不同的通知狀態(tài)中代表的含義有所不同,下表列舉了常見(jiàn)的通知狀態(tài)和事件類(lèi)型。

其中連接狀態(tài)事件(type=None, path=null)不需要客戶(hù)端注冊(cè),客戶(hù)端只要有需要直接處理就行了。

Shell 客戶(hù)端設(shè)置watcher

設(shè)置節(jié)點(diǎn)數(shù)據(jù)變動(dòng)監(jiān)聽(tīng):

通過(guò)另一個(gè)客戶(hù)端更改節(jié)點(diǎn)數(shù)據(jù):

此時(shí)設(shè)置監(jiān)聽(tīng)的節(jié)點(diǎn)收到通知:


5. Zookeeper典型應(yīng)用

數(shù)據(jù)發(fā)布/訂閱

數(shù)據(jù)發(fā)布/訂閱系統(tǒng)即所謂的配置中心,也就是發(fā)布者將數(shù)據(jù)發(fā)布到ZooKeeper的一個(gè)節(jié)點(diǎn)上,提供訂閱者進(jìn)行數(shù)據(jù)訂閱,從而實(shí)現(xiàn)動(dòng)態(tài)更新數(shù)據(jù)的目的,實(shí)現(xiàn)配置信息的集中式管理和數(shù)據(jù)的動(dòng)態(tài)更新。

ZooKeeper采用的是推拉相結(jié)合的方式:客戶(hù)端向服務(wù)器注冊(cè)自己需要關(guān)注的節(jié)點(diǎn),一旦該節(jié)點(diǎn)的數(shù)據(jù)發(fā)生改變,那么服務(wù)端就會(huì)向相應(yīng)的客戶(hù)端發(fā)送Watcher事件通知,客戶(hù)端接收到消息通知后,需要主動(dòng)到服務(wù)端獲取最新的數(shù)據(jù)。

主要用到了:監(jiān)聽(tīng)機(jī)制。


提供集群選舉

在分布式環(huán)境下,不管是主從架構(gòu)集群,還是主備架構(gòu)集群,要求在服務(wù)的時(shí)候有且有一個(gè)正常的對(duì)外提供服務(wù),我們稱(chēng)之為master。

當(dāng)master出現(xiàn)故障之后,需要重新選舉出的新的master。保證服務(wù)的連續(xù)可用性。zookeeper可以提供這樣的功能服務(wù)。

主要用到了:znode唯一性、臨時(shí)節(jié)點(diǎn)短暫性、監(jiān)聽(tīng)機(jī)制。


分布式鎖

ZooKeeper通過(guò)數(shù)據(jù)節(jié)點(diǎn)表示一個(gè)鎖,例如/itcast/lock節(jié)點(diǎn)就可以定義一個(gè)鎖,所有客戶(hù)端都會(huì)調(diào)用create()接口,試圖在/itcast下創(chuàng)建lock子節(jié)點(diǎn),但是ZooKeeper的強(qiáng)一致性會(huì)保證所有客戶(hù)端最終只有一個(gè)客戶(hù)創(chuàng)建成功。也就可以認(rèn)為獲得了鎖,其它線(xiàn)程Watcher監(jiān)聽(tīng)子節(jié)點(diǎn)變化(等待釋放鎖,競(jìng)爭(zhēng)獲取資源)。

此外也可以通過(guò)znode的序列化特性,給創(chuàng)建znode的客戶(hù)端自動(dòng)編號(hào),從而實(shí)現(xiàn)所謂的順序鎖的功能。

文章大數(shù)據(jù)離線(xiàn)階段01-課程導(dǎo)論,Apache ZooKeeper的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
桃源县| 米林县| 呼伦贝尔市| 库伦旗| 古浪县| 敖汉旗| 板桥市| 甘德县| 金门县| 绥宁县| 阜康市| 赫章县| 襄樊市| 珠海市| 甘谷县| 桦甸市| 利津县| 理塘县| 巩义市| 岳阳县| 万盛区| 崇阳县| 乳山市| 阿巴嘎旗| 黄浦区| 龙山县| 濉溪县| 德化县| 潍坊市| 佛学| 东城区| 昌平区| 望城县| 巴彦县| 佛教| 明星| 丘北县| 吉隆县| 曲周县| 沙河市| 喀什市|