歐陽(yáng)辰,超過(guò)15年的軟件開(kāi)發(fā)和設(shè)計(jì)經(jīng)驗(yàn),目前就職于小米公司,負(fù)責(zé)小米廣告平臺(tái)的架構(gòu)研發(fā)。
曾為微軟公司工作10年,擔(dān)任高級(jí)軟件開(kāi)發(fā)主管,領(lǐng)導(dǎo)團(tuán)隊(duì)參與微軟搜索索引和搜索廣告平臺(tái)的研發(fā)工作。曾在甲骨文公司從事數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)器的研發(fā)工作。熱愛(ài)架構(gòu)設(shè)計(jì)和高可用性系統(tǒng),特別對(duì)于大規(guī)模互聯(lián)網(wǎng)軟件的開(kāi)發(fā),具有豐富的理論知識(shí)和實(shí)踐經(jīng)驗(yàn)。
大家好,很高興能跟大家分享一些關(guān)于實(shí)時(shí)數(shù)據(jù)分析的話題。
剛畢業(yè)時(shí)我有幸去了Oracle公司做企業(yè)軟件數(shù)據(jù)庫(kù),成為Oracle中國(guó)第一批研發(fā)員工。后來(lái)做了幾年,覺(jué)得還是想做互聯(lián)網(wǎng)軟件,就去了微軟,工作了十年左右。在那做兩個(gè)項(xiàng)目,一個(gè)是搜索,一個(gè)是廣告平臺(tái)。去年一月份加入小米公司,現(xiàn)在主要負(fù)責(zé)搭建廣告平臺(tái)和大數(shù)據(jù)平臺(tái)。
所以今天我會(huì)結(jié)合我在小米、微軟的一些大數(shù)據(jù)實(shí)踐,給大家談?wù)勎覍?duì)大數(shù)據(jù)的理解,并介紹一些好用的工具。
本次演講的內(nèi)容大致分為以下部分:
大數(shù)據(jù)和價(jià)值
大數(shù)據(jù)分析工具分類
HBase的應(yīng)用和改進(jìn)
Druid的實(shí)時(shí)分析實(shí)踐
其它工具的探索
一、大數(shù)據(jù)和價(jià)值
什么是大數(shù)據(jù)?眾說(shuō)紛紜。大家似乎覺(jué)得具備快、多、變化大、種類多四個(gè)特征的數(shù)據(jù)就是大數(shù)據(jù),我個(gè)人更愿意從另一個(gè)角度來(lái)定義:只有當(dāng)你擁有全量的數(shù)據(jù),并通過(guò)非常多的數(shù)據(jù)把問(wèn)題解決得比較完美時(shí),這時(shí)候的問(wèn)題才是叫做大數(shù)據(jù)問(wèn)題。
給大家舉個(gè)例子:比如說(shuō)計(jì)算中國(guó)的人口,我們可以通過(guò)每省、每市、每區(qū)的抽樣、采樣等方法來(lái)獲取非常接近真實(shí)的數(shù)據(jù),很快就能完成這個(gè)任務(wù)。但是這個(gè)通過(guò)采樣解決人口統(tǒng)計(jì)問(wèn)題的場(chǎng)景是否就是大數(shù)據(jù)問(wèn)題呢?再給大家舉一個(gè)我自己在做的大數(shù)據(jù)問(wèn)題——廣告系統(tǒng)的推薦。由于每個(gè)人看的廣告內(nèi)容、類型都是不一樣的,你需要對(duì)每個(gè)人去做算法,通過(guò)數(shù)據(jù)分析挖掘每個(gè)人的數(shù)據(jù)潛力。假設(shè)現(xiàn)在你想通過(guò)一些算法找到一些用戶喜歡的廣告或者內(nèi)容,而這時(shí)你要找到的內(nèi)容少了一半,你就沒(méi)法推算出一半用戶的數(shù)據(jù),這時(shí)候你的效果也差了一半。也就是說(shuō)你的數(shù)據(jù)量越多,覆蓋越多用戶,效果越好時(shí),這時(shí)候我們可以認(rèn)為它是一個(gè)真正的大數(shù)據(jù)問(wèn)題。
圖1 大數(shù)據(jù)的故事:價(jià)值為美
大數(shù)據(jù)外表光鮮亮麗,就像紅樓夢(mèng)里的大觀園,但里面其實(shí)是很無(wú)奈的。做大數(shù)據(jù)技術(shù)的同學(xué)都知道,這里面涉及到數(shù)據(jù)的清洗、整理、存儲(chǔ)等很多很多枯燥的事情。此外,大數(shù)據(jù)還有一個(gè)特點(diǎn),就是當(dāng)你有了大數(shù)據(jù),還得想如何去變現(xiàn)。在我看來(lái),大數(shù)據(jù)實(shí)際上很難找到一個(gè)直接的途徑來(lái)變現(xiàn),它的確可以去推動(dòng)業(yè)務(wù)的智能化,做內(nèi)容推薦讓用戶的體驗(yàn)更好,但這些都是一些間接的變現(xiàn)場(chǎng)景,真正大數(shù)據(jù)能夠變現(xiàn)的場(chǎng)景,我自己總結(jié)了一下,大概有兩個(gè)方向:一個(gè)是廣告,二是銀行的征信系統(tǒng),除了這兩個(gè)領(lǐng)域之外,很少有公司愿意為數(shù)據(jù)買單。
下面簡(jiǎn)單介紹小米的大數(shù)據(jù)技術(shù)框架。
圖2 小米的大數(shù)據(jù)技術(shù)框架
和很多公司類似,小米的大數(shù)據(jù)框架也包括數(shù)據(jù)采集、存儲(chǔ)、管理、分析、算法和可視化。大部分組件都是開(kāi)源的,另外我們會(huì)對(duì)一些核心的組件做一些深加工或者優(yōu)化、自定義。其中,在數(shù)據(jù)采集部分就是Scribe,存儲(chǔ)用得較多的還是HBase,后面我會(huì)介紹小米在這一塊的優(yōu)化。管理上我們用了Kerberos去做認(rèn)證,在上面還有一些Spark、Storm、Hive、Impala和Druid。
說(shuō)到大數(shù)據(jù)應(yīng)用,種類非常多,我簡(jiǎn)單講一下小米在大數(shù)據(jù)上的一些應(yīng)用。
圖3 小米大數(shù)據(jù)應(yīng)用
首先是精準(zhǔn)營(yíng)銷,我們可以對(duì)每個(gè)用戶做一些畫像。用在搜索和推薦上,讓它變得更加精準(zhǔn);還有互聯(lián)網(wǎng)金融,有一些征信體系可以用到;精細(xì)化運(yùn)營(yíng);還有防黃牛,因?yàn)樾∶资謾C(jī)的性價(jià)比較高,很多時(shí)候新品出來(lái)時(shí)黃牛們會(huì)去搶,另一方面,現(xiàn)在的黃牛手段越來(lái)越高明了,他們會(huì)模擬很多IP、新的賬號(hào)或者老的賬號(hào)等一些復(fù)雜的購(gòu)買行為,所以就很需要采取一些手段去防黃牛。還有圖片、圖像的分析和處理,像小米手機(jī)新推出的寶寶相冊(cè)等。
圖4 小米大數(shù)據(jù)實(shí)時(shí)分析場(chǎng)景案例
剛剛說(shuō)的是一些業(yè)務(wù)的場(chǎng)景,還有一些給開(kāi)發(fā)者用的場(chǎng)景。
比如說(shuō)小米推出的一個(gè)數(shù)據(jù)統(tǒng)計(jì)分析平臺(tái),它提供一些API讓你嵌進(jìn)去,可以用數(shù)據(jù)分析你的應(yīng)用使用情況。然后結(jié)合小米的用戶畫像,為開(kāi)發(fā)者提供更好的數(shù)據(jù)分析服務(wù)。
目前小米日活超過(guò)千萬(wàn)的APP大概有二十幾家,包括瀏覽器、應(yīng)用商店、視頻等,這些應(yīng)用實(shí)時(shí)分析的需求非常旺盛,他們都是用這一套系統(tǒng)去做數(shù)據(jù)打點(diǎn)、AB測(cè)試、畫像、分組等,所以在后面我們需要一個(gè)吞吐量大的實(shí)時(shí)數(shù)據(jù)分析處理系統(tǒng)來(lái)承擔(dān)這部分計(jì)算的任務(wù)。
圖5 數(shù)據(jù)分析的幾個(gè)步驟
說(shuō)到數(shù)據(jù)分析的步驟,最開(kāi)始是數(shù)據(jù)收集,然后處理,清洗,建模,分析,最后可視化。這是大概的基本步驟。
從數(shù)據(jù)分析的類型來(lái)看,也可以分為四個(gè)層次:最下面是一個(gè)比較基礎(chǔ)的層次,叫響應(yīng)型分析,基本上是按照商業(yè)需求出商業(yè)報(bào)表。第二個(gè)層次叫診斷型分析,就是說(shuō)當(dāng)你有了很多數(shù)據(jù)以后,從數(shù)據(jù)里面挖掘出一些問(wèn)題,或者通過(guò)數(shù)據(jù)去解釋這些問(wèn)題,像一些競(jìng)品分析、趨勢(shì)分析。第三個(gè)層次叫戰(zhàn)略分析,這個(gè)層次相對(duì)前面兩個(gè)層次來(lái)說(shuō)比較難了,即在做很多公司的分析時(shí),你需要建個(gè)模型,然后用數(shù)據(jù)去得出一些結(jié)論,很多咨詢公司就提供這種戰(zhàn)略分析,像麥肯錫、貝恩等公司很多時(shí)候就是在這一層次做事情。最后一個(gè)層次也難,叫預(yù)測(cè)型分析。你不光要建好模,還要想到底怎么做,采用什么樣的行動(dòng),給出真正的建議。
二、大數(shù)據(jù)分析工具
小米統(tǒng)計(jì)平臺(tái)承接的數(shù)據(jù)量非常大,而且對(duì)實(shí)時(shí)的要求非常高,所以在工具的選取上也花了很多時(shí)間。下面給大家介紹一下小米在大數(shù)據(jù)實(shí)時(shí)處理時(shí)一些工具選型的思路。
圖6 大數(shù)據(jù)分析工具
實(shí)時(shí)分析不是一個(gè)新問(wèn)題,但如果上到億萬(wàn)級(jí)的數(shù)據(jù)量時(shí),這個(gè)問(wèn)題也顯得非常重要。在數(shù)據(jù)分析尤其是多維分析這塊,有幾個(gè)流派,一個(gè)流派是開(kāi)源的工具,還有一個(gè)流派是商業(yè)的工具。商業(yè)的工具中有幾家比較有名,一個(gè)是惠普的Vertica,一個(gè)是Oracle,Oracle的不足之處就是太貴了,成本較高,還有就是Teradata,美國(guó)加州一個(gè)老牌的多維數(shù)據(jù)分析公司。在另一邊的開(kāi)源軟件,也可大概分為兩個(gè)流派,一個(gè)叫做MOLAP ,它在設(shè)計(jì)之初就是想把數(shù)據(jù)結(jié)構(gòu)變成一個(gè)多維數(shù)據(jù)庫(kù),這樣查詢起來(lái)既快又方便;另一個(gè)叫ROLAP,企圖用傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)去構(gòu)建多維數(shù)據(jù)庫(kù),因?yàn)橄馦ySQL、Hive這種傳統(tǒng)數(shù)據(jù)庫(kù)是非常方便的。總的來(lái)說(shuō),開(kāi)源的大概有兩條路,一條就是原生的支持多維的,另一條就是通過(guò)關(guān)系型數(shù)據(jù)庫(kù)去模擬這種多維查詢。原生多維這邊工具的話,小米用的比較多的就是Druid,Pinot,Kylin和ElasticSearch。
圖7 如何選擇數(shù)據(jù)分析工具
在選數(shù)據(jù)分析工具的時(shí)候需要考慮很多事情,像一些很重要的數(shù)據(jù)量,還有就是你需要分析這些數(shù)據(jù)的維度有多少,你的用戶并發(fā)度,這些都是實(shí)際過(guò)程中需要考慮的重要因素。特別是維度,維度越多,系統(tǒng)會(huì)越復(fù)雜。
剛剛前面講到小米的統(tǒng)計(jì)工具,這里再放一張小米統(tǒng)計(jì)后臺(tái)的架構(gòu)圖,我把它稍微簡(jiǎn)化了一下:
圖8 小米數(shù)據(jù)統(tǒng)計(jì)分析平臺(tái)-架構(gòu)
首先是手機(jī)、電視、電腦把事件通過(guò)網(wǎng)絡(luò)打開(kāi)小米分析服務(wù)器,這時(shí)服務(wù)器有兩條路,一條路是把Log存在 Scirbe里面,然后通過(guò)MapReduce和HDFS去做計(jì)算和存儲(chǔ),結(jié)果會(huì)放到MySQL數(shù)據(jù)庫(kù)和HBase中,另外一條路則是所有事件來(lái)了以后,經(jīng)過(guò)Kafka以及Storm的計(jì)算集群把預(yù)計(jì)算算好,最后存到HBase中。所以在小米統(tǒng)計(jì)平臺(tái)上像分鐘級(jí)的數(shù)據(jù)都是從上面這條路來(lái)的,按天的數(shù)據(jù)則是從下面這條路來(lái)的,我們每天會(huì)用完整跑的Log去取代實(shí)時(shí)的數(shù)據(jù),大概是這樣一個(gè)過(guò)程。
三、HBase的應(yīng)用和改進(jìn)
圖9 為什么青睞HBase?
小米用HBase還是蠻多的,HBase是一個(gè)比較有名的列式存儲(chǔ),我們公司也有三個(gè)HBase Committer,對(duì)HBase做了很多改進(jìn)。比如對(duì)源代碼的改進(jìn),改完以后我們又會(huì)把這些改進(jìn)返回到開(kāi)源社區(qū)。再如名字服務(wù),以前的話,HBase訪問(wèn)要填很多Server名、端口名,現(xiàn)在用一個(gè)名字就可以訪問(wèn),包括HBase是不支持二級(jí)索引的,我們往里面增加了索引功能。
圖10 HBase在小米的改進(jìn)
圖11 HBase在小米
在服務(wù)器端改進(jìn)的過(guò)程中,我們發(fā)現(xiàn)有些改進(jìn)可以反饋到社區(qū),但有些反饋回去時(shí)整個(gè)審核流程特別慢,以至于后來(lái)小米內(nèi)部慢慢、逐步地就演變成了一個(gè)官方的版本,長(zhǎng)期來(lái)看,這兩個(gè)版本的融合值得深思熟慮。
圖12 如何從MySQL平滑遷移到HBASE?
小米在初期時(shí)很多業(yè)務(wù)是使用MySQL的,因?yàn)橄鄬?duì)來(lái)說(shuō)簡(jiǎn)單粗暴,但它的容量有限。業(yè)務(wù)容量擴(kuò)張以后,小米大概有兩億個(gè)用戶,1.5億個(gè)月活用戶,日活也超過(guò)一億多,MySQL一般來(lái)說(shuō)是撐不住的,這個(gè)時(shí)候很多業(yè)務(wù)就需要遷移到HBase上。
因此,最后小米提出一個(gè)很Common的HBase遷移方法,在最開(kāi)始寫數(shù)據(jù)的時(shí)候雙寫,既寫HBase又寫MySQL的,保證新的數(shù)據(jù)會(huì)同時(shí)存在于HBase和MySQL里,第二個(gè)就是把MySQL中的歷史數(shù)據(jù)遷移到HBase,這樣從理論上兩個(gè)數(shù)據(jù)庫(kù)就能擁有同樣的內(nèi)容了。第三個(gè)是雙讀HBase和MySQL,校驗(yàn)數(shù)據(jù)是不是都一致,一般達(dá)到99.9%的結(jié)果時(shí),我們就認(rèn)為遷移是比較成功的。最后灰度返回到HBase結(jié)果。
圖13 實(shí)時(shí)數(shù)據(jù)分析之旅
四、Druid的實(shí)時(shí)分析實(shí)踐
一開(kāi)始做小米統(tǒng)計(jì)平臺(tái)時(shí),數(shù)據(jù)其實(shí)也沒(méi)有做到實(shí)時(shí)的,都是走上面的一條路,第二個(gè)階段通過(guò)MapReduce處理以后,把數(shù)據(jù)放到關(guān)系型數(shù)據(jù)里面,比如像MySQL這樣的數(shù)據(jù)庫(kù)。再后來(lái),業(yè)務(wù)慢慢擴(kuò)展,RDBMS的容量有限,出現(xiàn)很多問(wèn)題,所以到第三個(gè)階段我們把RDBMS變成HBase,這個(gè)階段也持續(xù)了很久,再后來(lái)我們想得到實(shí)時(shí)的數(shù)據(jù),來(lái)到第四步,通過(guò)Kafka、Storm再到RDBMS或者NoSQL,最后一步我們直接是把數(shù)據(jù)從Kafka轉(zhuǎn)到Druid。
圖14 幾種開(kāi)源MOLAP分析工具的比較
Druid由一家叫MetaMarkets的公司開(kāi)發(fā),目前像Yahoo、小米、阿里、百度等公司都在用它大量地做一些數(shù)據(jù)的實(shí)時(shí)分析,包括一些廣告、搜索、用戶的行為統(tǒng)計(jì)。它的特點(diǎn)包括:
為分析而設(shè)計(jì)
為OLAP而生,它支持各種filter、aggregator和查詢類型。
交互式查詢
低延遲數(shù)據(jù),內(nèi)部查詢?yōu)楹撩爰?jí)。
高可用性
集群設(shè)計(jì),去中性化規(guī)模的擴(kuò)大和縮小不會(huì)造成數(shù)據(jù)丟失。
可伸縮
現(xiàn)有的Druid部署每天處理數(shù)十億事件和TB級(jí)數(shù)據(jù)。Druid被設(shè)計(jì)成PB級(jí)別。
與Druid相類似的實(shí)時(shí)數(shù)據(jù)分析工具,還有Linkedln的Pinot和eBay的Kylin,它們都是基于Java開(kāi)發(fā)的。Druid相對(duì)比較輕量級(jí),用的人也多,畢竟開(kāi)發(fā)時(shí)間久一些,問(wèn)題也少一些。
圖15 DRUID使用場(chǎng)景:廣告實(shí)時(shí)統(tǒng)計(jì)分析架構(gòu)圖(非計(jì)費(fèi)部分)
Druid在小米內(nèi)部除了應(yīng)用于小米統(tǒng)計(jì)之外,還應(yīng)用于廣告系統(tǒng)。小米的廣告系統(tǒng)主要是對(duì)每個(gè)廣告的請(qǐng)求、點(diǎn)擊、展現(xiàn)做一些分析,一條線是通過(guò)Kafka→Druid→數(shù)據(jù)可視化顯示,另外一條路就是完整數(shù)據(jù)落盤到HDFS,每天晚上通過(guò)數(shù)據(jù)重放去糾正Druid里的一些數(shù)據(jù),覆蓋Druid的準(zhǔn)確數(shù)據(jù),最后做可視化。
五、其它工具的探索
圖16 什么是Pinot
Pinot,Linkedln開(kāi)發(fā)的類似于Druid的多維數(shù)據(jù)分析平臺(tái),它的功能實(shí)際上要比Druid強(qiáng)大一些,但因?yàn)槿ツ瓴艅倓傞_(kāi)始開(kāi)源,用的人比較少。大家有興趣的可以去試試。它的整個(gè)代碼量也比較大,架構(gòu)與Druid也非常相似,但它引入了更好的一種協(xié)調(diào)管理器,更多的是一種企業(yè)級(jí)別的設(shè)計(jì),更加完整、規(guī)范。
圖17 Apache KYLIN
Kylin是eBay的開(kāi)源分析工具,它的優(yōu)點(diǎn)就是很快,特別適合每天定時(shí)報(bào)表,缺點(diǎn)也很明顯,就是隨機(jī)查詢很慢。它還有一個(gè)好處就是支持標(biāo)準(zhǔn)的SQL,與Tableau等BI工具集成,可以直接連到eBay的這個(gè)Kylin工具。而且,Kylin在Fast Cubing上做了一些預(yù)處理,反應(yīng)較快。
圖18 Apache KUDU
KUDU是去年十月份Apache開(kāi)源的一個(gè)工具,與小米聯(lián)合發(fā)布。它的定位是什么呢?大家都知道Druid是一個(gè)批處理、高容量的查詢系統(tǒng),響應(yīng)時(shí)間很慢,而HBase可以支持快速的響應(yīng)時(shí)間,但它主要是一個(gè)寫少讀多的情況。
圖19 小米KUDU的實(shí)踐
KUDU,走在這兩個(gè)極端的中間,它既能夠保證大吞吐,又可以保證低延時(shí)。小米從去年十月份開(kāi)始使用KUDU,主要用于一些服務(wù)質(zhì)量監(jiān)控、問(wèn)題排查,總體感覺(jué)還不錯(cuò)。小米也是KUDU現(xiàn)在最大的一個(gè)用戶,因?yàn)槲覀兒芏鄷r(shí)候需要考慮HBase和Druid綜合的一些優(yōu)點(diǎn),所以KUDU也是小米目前實(shí)驗(yàn)的一個(gè)工具。
圖20 ElasticSearch
ElasticSearch可能很多公司都有實(shí)踐,同樣可以對(duì)LOG和信息做一些倒排表,核心是用Lucene去做索引。
最后,小米雖然每天都在處理大數(shù)據(jù)、各種用戶的數(shù)據(jù),但我自己的信念就是“我們需要像保護(hù)自己的眼睛一樣保護(hù)用戶的隱私”,小米在用戶隱私這方面投資了很多,并做出了明確的規(guī)定。
圖21 用戶隱私保護(hù)
在歐洲,很多公司內(nèi)部會(huì)把數(shù)據(jù)分成很嚴(yán)格的等級(jí),像個(gè)人信息,所有可以關(guān)聯(lián)到個(gè)人的信息都是存在一個(gè)獨(dú)立的庫(kù),任何人都沒(méi)有權(quán)限去訪問(wèn)。還有一些普通信息,大家是可以用的,還有比如說(shuō)超過(guò)一萬(wàn)人的一些聚合信息,可以拿去做一些算法。但個(gè)人信息是堅(jiān)決不可以訪問(wèn)的。而在2006年4月14日,歐洲當(dāng)時(shí)還推出了一個(gè)非常酷的隱私權(quán)保護(hù)條例,它定義了每個(gè)公司要設(shè)立首席數(shù)據(jù)官,來(lái)保護(hù)數(shù)據(jù)隱私,并且要求每個(gè)公司數(shù)據(jù)都是可遷移的,也就是說(shuō),你的公司雖然擁有數(shù)據(jù),但數(shù)據(jù)有權(quán)利把屬于他的個(gè)人信息從一個(gè)服務(wù)商轉(zhuǎn)移到另外一個(gè)服務(wù)商。
分享的最后,總結(jié)一下我做數(shù)據(jù)分析多年來(lái)的心得:
1、沒(méi)有業(yè)務(wù)應(yīng)用的大數(shù)據(jù)都是耍流氓,不要純粹去找工具,一定要結(jié)合業(yè)務(wù)去選擇。
2、技術(shù)選型沒(méi)有想象中那么重要,實(shí)用和精通為妙。
3、維度不夠是一個(gè)永遠(yuǎn)的痛,無(wú)盡的傷。在數(shù)據(jù)分析的過(guò)程中,維度是不斷增加的。所以在未來(lái)選擇工具的同時(shí),一定要考慮維度的增加。
4、像保護(hù)你的眼睛一樣去保護(hù)用戶的權(quán)利和隱私。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://m.kaqidy.com/
本文標(biāo)題:你所不知的小米大數(shù)據(jù)技術(shù)
本文網(wǎng)址:http://m.kaqidy.com/html/consultation/10839719834.html