為什么說建立統(tǒng)一數(shù)據(jù)平臺是重要的
原創(chuàng)本文是WOT2016互聯(lián)網(wǎng)運(yùn)維與開發(fā)者大會的現(xiàn)場干貨, 新一屆主題為WOT2016企業(yè)安全技術(shù)峰會將在2016年6月24日-25日于北京珠三角JW萬豪酒店隆重召開!
楊大海表示,對于一個外行人或剛?cè)腴T的人來說,建立一個數(shù)據(jù)平臺就是搭一個Hadoop集群而已。但基于這個集群,想要把它很好的用起來會暴露很多的問題。那么針對這些問題就需要研發(fā)很多系統(tǒng)來應(yīng)對,所以建立統(tǒng)一數(shù)據(jù)平臺是非常重要的。
為什么說建立統(tǒng)一數(shù)據(jù)平臺是重要的
門檻,這里楊大海表示,并不是現(xiàn)在做大數(shù)據(jù)的門檻有多高,因為整個大數(shù)據(jù)領(lǐng)域的技術(shù)非常成熟,人員也很多,很多公司都自己的團(tuán)隊做大數(shù)據(jù)。這里所說的門檻是指非大數(shù)據(jù)領(lǐng)域的一些人,如分析師可能只會寫一些SQL語句或只能看懂一些數(shù)據(jù),出一些報表,如果讓這類人寫Mapreduce或數(shù)據(jù)收集研發(fā)東西,就會覺得非常難,如果建立一個完善的數(shù)據(jù)平臺,可有效幫助他們。
共享, 假設(shè)某公司有很多技術(shù)團(tuán)隊、不同部門、不同業(yè)務(wù)團(tuán)隊。如每個團(tuán)隊都搭一套Hadoop群,中間的數(shù)據(jù)共享就成了問題。還就是資源浪費(fèi),像人力資源浪費(fèi)和服務(wù)器資源浪費(fèi)等。
規(guī)范,基于大數(shù)據(jù)系統(tǒng)做一個數(shù)據(jù)產(chǎn)品,需要數(shù)據(jù)采集、收集、存儲和計算等多個步驟,這樣整個流程是非常長,花30%時間做業(yè)務(wù)系統(tǒng)開發(fā),70%時間用于平臺搭建或一些開源的完善,是非常不劃算的。設(shè)想做數(shù)據(jù)產(chǎn)品之前就已經(jīng)有系統(tǒng)供選擇,有數(shù)據(jù)需要采集,有新計算模型需要誕生時候只需要接入,不需要再花時間調(diào)研。制定規(guī)范之后,日志放在哪,通過標(biāo)準(zhǔn)配置,就可以把日志采上來供使用。這樣一來,就保證盡可能縮短數(shù)據(jù)采集整個的流程。
成本,這里指人力成本和服務(wù)器,就是硬件資源的成本。有統(tǒng)一數(shù)據(jù)平臺,就可以做很多優(yōu)化。面對一千臺規(guī)模的服務(wù)器,可通過一些修改原碼、參數(shù)優(yōu)化等提升10%,就可節(jié)省約64G或者128G、4核服務(wù)器一百臺。
時間,開發(fā)一套業(yè)務(wù)系統(tǒng),大可不必花一個月的時間調(diào)研Hadoop,花一個月時間的調(diào)研Kafka,因為這些不在業(yè)務(wù)團(tuán)隊的競爭范圍之內(nèi)。更多的精力應(yīng)放在產(chǎn)品或系統(tǒng),如何把系統(tǒng)做得更***,而不是怎么把Hadoop打好。
Hadoop集群的發(fā)展進(jìn)程
Hadoop發(fā)展規(guī)模
如上圖,楊大海表示,從2012年到2016年,Hadoop集群在不斷進(jìn)化發(fā)展中。集群最初起點(diǎn)比較低,只是為了滿足數(shù)據(jù)分析團(tuán)隊和推薦團(tuán)隊使用,只有三四十臺的規(guī)模。在2012年到2013年的時間,集群擴(kuò)張的非??臁5?013年接入很多用戶,公司其他團(tuán)隊如廣告、分成等團(tuán)隊接進(jìn)。集群膨脹厲害,半年時間翻了四五倍,到200臺左右的規(guī)模。到2016年時間,整個集群將近一千臺規(guī)模,中間做了一次升級,就是1.3升級2.3,當(dāng)時升級是為了滿足周邊的一些生態(tài)圈。
Hadoop集群發(fā)展過程中遇到的問題
hadoop問題演變
如上圖,楊大海表示,整個集群發(fā)展過程中遇到的問題是隨著階段的推移不斷地變化的,也就是說不同階段遇到的不同的問題各不一樣。
50臺規(guī)模時,整個生態(tài)圈不完善,像Hive等本身還有很多Bug,但因為剛開始,應(yīng)用簡單所以并沒有發(fā)現(xiàn)。此時團(tuán)隊技術(shù)功底非常差,集群管理基本上沒做,直接搭了一條集群,裸奔的集群。
200百臺規(guī)模時,遇到的問題相對多一些,楊大海在這里介紹了權(quán)限問題、用戶管理、資源調(diào)度、調(diào)度系統(tǒng)、數(shù)據(jù)安全、目錄規(guī)范、參數(shù)規(guī)范、本地化八大問題。
- 權(quán)限問題, 用戶增多,十個上百個,那權(quán)限就成了問題。
- 用戶管理,如何把用戶管理好,保證用戶的作業(yè)及時提交,而不是因為某個用戶提交一個大作業(yè),把整個集群資源占完,其他的腳本沒法跑。如何保證這個用戶存儲不會***擴(kuò)張。如何給用戶規(guī)劃存儲。
- 資源調(diào)度,保證用戶一定獨(dú)立空間,控制占有的資源數(shù)目,不至于把整個集群的資源給占完。
- 調(diào)度系統(tǒng),一臺服務(wù)器,一臺客戶端,可能會給三個團(tuán)隊用,每天晚上會有上萬個,甚至幾千個、幾百個作業(yè)來提交,通過這臺機(jī)器來提交。調(diào)度系統(tǒng)是為了解決客戶端單節(jié)點(diǎn)的問題,單點(diǎn)故障的問題。
- 數(shù)據(jù)安全,公司內(nèi)部雖是同一個集團(tuán)公司,但分為不同的BU,這些BU之間的數(shù)據(jù)是需要共享、也需隔離。
- 目錄規(guī)范,日志如何存儲,用戶目錄如何規(guī)劃,目錄需要多大的空間,如果超過空間我如何提醒刪除。
- 參數(shù)規(guī)范,Hadoop有很多參數(shù),需要增加,也需要優(yōu)化。
- 本地化 ,有時需對Mapreduce本地化,因為突然間上了兩百臺機(jī)器,Mapreduce從中取數(shù)據(jù),但本地沒有需遠(yuǎn)程,這還需要對本地化參數(shù)做優(yōu)化。
1000臺左右高可用多計算模型共存時,問題就更多,更加繁瑣。如用戶水平、高可用、小文件、數(shù)據(jù)遷移、任務(wù)問題、存儲計劃、機(jī)房瓶頸、歸檔、資源爭強(qiáng)分類、資源隔離、任務(wù)監(jiān)控、列隊監(jiān)控等。
- 用戶水平,用戶水平有低有高,這就需要有一個人專門解答每天用戶的問題。
- 高可用,這里需要做HHA,因為宕機(jī)后影響太大,所有團(tuán)隊的任務(wù)都需要重跑,所有團(tuán)隊的數(shù)據(jù)都需要重鋪。
- 小文件,集群有一千臺服務(wù)器,小文件數(shù)是非常多。內(nèi)目錄內(nèi)存現(xiàn)在已經(jīng)用到150G左右,這就需要對文件數(shù)進(jìn)行控制,對近兩年文件做歸檔。
- 任務(wù),需要看許多指標(biāo)找出問題,這更強(qiáng)大的監(jiān)控系統(tǒng)來支持。
- 存儲計劃,同運(yùn)維報一個存儲計劃,如集群打算一個月擴(kuò)多少臺服務(wù)器、如根據(jù)流量、數(shù)據(jù)量、任務(wù)量去申報。因為不可能現(xiàn)在突然間擴(kuò)一百個機(jī)器,運(yùn)維也不一定有兩百臺的機(jī)器提供。
- 資源爭搶,是比較嚴(yán)重的問題,集群升級變快,但突然間可能提交不上去。
- 因為當(dāng)時的調(diào)度策略,在做版本迭代升級時,有一些新功能剛推出,很多特徑還不支持。
- 資源隔離,這個是之后需要做的事情。如一個任務(wù)死循環(huán)把整個服務(wù)器跑掛問題的解決。
Hadoop數(shù)據(jù)平臺的發(fā)展現(xiàn)狀
數(shù)據(jù)平臺現(xiàn)狀
楊大海表示,上圖是現(xiàn)在數(shù)據(jù)平臺的發(fā)展現(xiàn)狀。最上層系統(tǒng)如團(tuán)隊、廣告、推薦、分析、云娛樂、直播、搜索、分成、移動等,這些系統(tǒng)最原始的它們需要數(shù)據(jù),所以有一套日志系統(tǒng),把數(shù)據(jù)采集并存儲。日志系統(tǒng)是研發(fā)的,因為需要解決跨機(jī)房的問題。日志收集需要遍布在全國很多個機(jī)房,機(jī)房日志收集是需要聚合,最終的數(shù)據(jù)都要聚合到一個點(diǎn)。左邊是數(shù)據(jù)的計算部分,可直接讀取日志系統(tǒng)的數(shù)據(jù)。右邊用戶管理系統(tǒng)是為了滿足用戶申請賬號、放文件、需要?dú)w屬一個團(tuán)隊、訪問團(tuán)隊資源。監(jiān)控報警系統(tǒng),來做統(tǒng)一的監(jiān)控報警。
Hadoop數(shù)據(jù)平臺的未來
hadoop平臺未來
楊大海表示,上圖是集群的未來的樣子,現(xiàn)在我們已經(jīng)做到90%,但還沒有完全解決。未來整個存儲分為實時和離線兩部分。HDFS存儲可能會遍布到大數(shù)據(jù)所有服務(wù)器,很多團(tuán)隊是不做存儲的,所以可以把存儲遍布到所有的服務(wù)器,給你團(tuán)隊的賬號?;赮arn話會做虛擬化,完全把解決資源,資源無法隔離的痛點(diǎn)。基于Yarn開發(fā)更多的計算模型出來,如自定義的一些計算模型。
Hadoop平臺將要面臨的挑戰(zhàn)
Hadoop平臺將要面臨的挑戰(zhàn)
如上圖,楊大海表示,Hadoop平臺將要面臨的挑戰(zhàn)分為三部分HDFS、Yarn、Client。針對HDFS面臨的挑戰(zhàn)有Namenode性能瓶頸、日志大小的控制、節(jié)點(diǎn)操作的API、多機(jī)房方案、集群規(guī)模太大Namenode性能瓶頸等。針對Yarn面對的挑戰(zhàn)有調(diào)度個性化分類、資源隔離、數(shù)據(jù)倉庫的必要性、基于標(biāo)簽調(diào)度完善、更強(qiáng)大的監(jiān)控平臺等。針對Client面對的挑戰(zhàn)有Docker統(tǒng)一管理、配置問題、業(yè)務(wù)依賴升級問題等。
Hadoop數(shù)據(jù)平臺的運(yùn)營問題
關(guān)于Hadoop數(shù)據(jù)平臺的運(yùn)營問題 ,楊大海這樣說,對內(nèi)部運(yùn)營是非常有必要的,綜上那么多問題,就因為初期運(yùn)營預(yù)料到這些問題,但沒有做好,導(dǎo)致后期花非常大的代價去挽回。他還從規(guī)范、計劃、流程和策略四方面針對運(yùn)營問題,做了講解。
- 規(guī)范,就是目錄怎么存,可以放多大文件,放多少文件,占用多少資源。讓用戶一開始就了解這個事情,以免一起限制導(dǎo)致客戶煩感。
- 計劃,集群要做一下計劃,不同的時間做不同的事情,滿足用戶更個性化的需求,如何時完善更多的計算模型。
- 流程,用戶在使用平臺期間詳細(xì)的知道整套的流程,如用戶賬號申請,如用HDFS的話做那些事,用Kafka的話做哪些事等等。所有系統(tǒng)之間的賬號全部打通,一個賬號全部搞定。
- 策略,很多時間需要制定策略來限制用戶,這里說的限制并不是讓用戶用的不爽,是讓它更健康的發(fā)展下去。
在演講***,楊大海提到了兩個問題數(shù)據(jù)倉庫和數(shù)據(jù)服務(wù)。建立一個數(shù)據(jù)倉庫,對數(shù)據(jù)平臺來說表面上看起來是兩件毫不相關(guān)的事情,一個是做數(shù)據(jù)底層,一個是做數(shù)據(jù)服務(wù)。其實兩邊關(guān)系非常大,如果沒有一個數(shù)據(jù)倉庫,做底層的會非常痛苦。這里的痛苦并不是技術(shù)滿足不了,而是要不斷的擴(kuò)容。數(shù)據(jù)服務(wù)更大的意義是保證數(shù)據(jù)的一致性,如廣告團(tuán)隊算了一個視頻的VV量和播放量和分析團(tuán)隊算的一個視頻的播放量不一致,這個數(shù)據(jù)是沒法解釋的。其實大家原數(shù)據(jù)都一樣,統(tǒng)計口徑不一樣,才造成這個問題。所以數(shù)據(jù)服務(wù)是把一部分可以公開的數(shù)據(jù)算好,通過接口去公開,部分不可以公開數(shù)據(jù),做成帶有偷窺認(rèn)證,帶有用戶認(rèn)證數(shù)據(jù)結(jié)構(gòu)提供出去。盡可能做到的把公司的業(yè)務(wù)前面的幾個主題做倉庫。
演講視頻:
http://edu.51cto.com/lesson/id-100760.html
http://edu.51cto.com/lesson/id-101082.html
【講師簡介】
楊大海,前優(yōu)酷土豆大數(shù)據(jù)平臺高級架構(gòu)師,優(yōu)酷土豆的大數(shù)據(jù)開放平臺研發(fā)負(fù)責(zé)人,主要負(fù)責(zé)優(yōu)酷土豆開放大數(shù)據(jù)平臺的研發(fā)和運(yùn)營。曾就職于亞信聯(lián)創(chuàng)負(fù)責(zé)bi商業(yè)智能產(chǎn)品的研發(fā)。