數(shù)據(jù)平臺(tái)一二三

記得一個(gè)笑話, 說(shuō)北大的保安見(jiàn)到陌生人會(huì)問(wèn)三個(gè)極富人生哲學(xué)的問(wèn)題:

  • 你從哪里來(lái)
  • 你來(lái)干什么
  • 你到哪里去

對(duì)應(yīng)數(shù)據(jù)平臺(tái)來(lái)說(shuō), 也可以問(wèn)三個(gè)類似的問(wèn)題:

  • 數(shù)據(jù)從哪里來(lái)
  • 數(shù)據(jù)如何處理
  • 數(shù)據(jù)到哪里去

1.數(shù)據(jù)來(lái)源

數(shù)據(jù)平臺(tái)是數(shù)據(jù)的消費(fèi)端. 作為數(shù)據(jù)鏈條的最底層, 數(shù)據(jù)的來(lái)源通常有一下幾種:

1.1 業(yè)務(wù)數(shù)據(jù)庫(kù)數(shù)據(jù)

業(yè)務(wù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)是數(shù)據(jù)平臺(tái)的重要數(shù)據(jù)來(lái)源, 基本上在不引入開(kāi)發(fā)額外工作的情況下, 將業(yè)務(wù)數(shù)據(jù)庫(kù)導(dǎo)入到數(shù)據(jù)倉(cāng)庫(kù)便可以獲得業(yè)務(wù)的最新?tīng)顟B(tài), 性價(jià)比絕佳.

  • 從數(shù)據(jù)庫(kù)的類型來(lái)說(shuō), 常用的有MySQL/Redis/MongoDB
  • 從數(shù)據(jù)獲取的方式來(lái)說(shuō), 分為全量和增量?jī)煞N:
    • 全量就是每次把業(yè)務(wù)數(shù)據(jù)庫(kù)中所有數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉(cāng)庫(kù), 這種方式簡(jiǎn)單粗暴, 方案成熟, 可以用 Sqoop , 嚴(yán)重推薦阿里巴巴的開(kāi)源項(xiàng)目 DataX
    • 增量就是僅僅獲取更改的數(shù)據(jù). 比如 MySQL binlog format設(shè)置成 ROW 格式, 就可以近實(shí)時(shí)獲取到更新的數(shù)據(jù)

1.2 用戶行為打點(diǎn)/埋點(diǎn)

大多數(shù)產(chǎn)品都會(huì)使用打點(diǎn)的方式, 在用戶發(fā)生某些行為的時(shí)候記錄日志, 上傳到服務(wù)端供后續(xù)用戶行為分析.
有人會(huì)問(wèn)既然有了業(yè)務(wù)的數(shù)據(jù)庫(kù)數(shù)據(jù), 為何還要引入耗時(shí)費(fèi)力的打點(diǎn)方式收集用戶行為? 因?yàn)闃I(yè)務(wù)數(shù)據(jù)庫(kù)僅僅存儲(chǔ)用戶的寫操作的狀態(tài), 無(wú)法獲知用戶讀操作行為. 例如, 查看商品詳情這一動(dòng)作不涉及到任何數(shù)據(jù)的變化(Counter類型除外), 從業(yè)務(wù)數(shù)據(jù)庫(kù)無(wú)法獲知用戶瀏覽了哪些商品, 哪類商品.
做用戶行為采集, 最大的挑戰(zhàn)是如何保證數(shù)據(jù)質(zhì)量.

  • 數(shù)據(jù)采集 SDK 要考慮到各個(gè)平臺(tái)的各種 Corner Case, 保證數(shù)據(jù)能夠上傳到服務(wù)器.
  • 每次打點(diǎn)需求如何管理, 如何做數(shù)據(jù)驗(yàn)證. 移動(dòng)產(chǎn)品最大的問(wèn)題是無(wú)法像 Web 一樣隨時(shí)發(fā)布, 因此一旦等分析數(shù)據(jù)時(shí)發(fā)現(xiàn)打點(diǎn)是錯(cuò)誤的, 心中定會(huì)萬(wàn)馬奔騰. 要修復(fù)也只能等下次產(chǎn)品發(fā)布.
    我的感受是:

    數(shù)據(jù)質(zhì)量就好比鍛煉身體, 一定要持之以恒的堅(jiān)持才行.
    這次版本發(fā)布數(shù)據(jù)打點(diǎn)沒(méi)有 bug, 不保證下次不會(huì)有 bug

1.3 用戶訪問(wèn)日志

通俗來(lái)講就是應(yīng)用系統(tǒng)前端 Web 服務(wù)器的 Access Log. 通過(guò)收集 Access Log 就可以減少很多打點(diǎn)的操作.
那打點(diǎn)和Access Log的區(qū)別是什么? 一個(gè)簡(jiǎn)單的比喻, 比如一個(gè)人在走路

  • 打點(diǎn)就是時(shí)不時(shí)的問(wèn)他: 你過(guò)去的1分鐘里走了多少步? 因此他要自己邊走邊數(shù)數(shù), 一旦數(shù)錯(cuò)了, 你獲得的結(jié)果也必然是錯(cuò)誤的.
  • Access Log 就是他盡管走他的路, 你在后面數(shù)他的腳印. 隨便按照你的規(guī)則數(shù), 基本不會(huì)錯(cuò). 而走路的人全然不管這個(gè)事兒.

還有一個(gè)問(wèn)題是: 既然已經(jīng)有了Access Log, 為何還要耗時(shí)費(fèi)力的打點(diǎn)? 因?yàn)楝F(xiàn)在基本上都是移動(dòng)端 App, 為了優(yōu)化性能, 經(jīng)常會(huì)客戶端拉取一批數(shù)據(jù)后緩存在本地, 用戶是否查看數(shù)據(jù), 從 Access Log 根本無(wú)從分析.

1.4 第三方數(shù)據(jù)采集

  • SaaS大行其道的今天, 基本上沒(méi)有哪家公司會(huì)從0開(kāi)始構(gòu)建自己所有的系統(tǒng), 因此會(huì)引入第三方服務(wù). 而在評(píng)估這些第三方服務(wù)的時(shí)候, 可以考慮是否支持導(dǎo)出所有用戶的行為日志, 以供后續(xù)分析.
  • 有些業(yè)務(wù)需要在用戶授權(quán)的情況下抓取用戶其他平臺(tái)的數(shù)據(jù)

1.5 非結(jié)構(gòu)化數(shù)據(jù)

用戶的語(yǔ)音/圖片等非結(jié)構(gòu)化數(shù)據(jù), 也是一個(gè)數(shù)據(jù)平臺(tái)的重要來(lái)源. 比如做圖片鑒黃服務(wù), 語(yǔ)音分析等. 感興趣的可以參見(jiàn)之前文章 SQL Over S3 構(gòu)建 SQL 查詢非結(jié)構(gòu)化數(shù)據(jù)的系統(tǒng)

2. 數(shù)據(jù)如何處理

辛辛苦苦搞來(lái)那么多數(shù)據(jù), 第一個(gè)問(wèn)題就是數(shù)據(jù)放在哪里, 然后就想這些數(shù)據(jù)如何處理, 轉(zhuǎn)變成對(duì)業(yè)務(wù)有價(jià)值的東西.

2.1 數(shù)據(jù)存儲(chǔ)

數(shù)據(jù)庫(kù)可以分兩種: OLAP 和 OLTP. 對(duì)于采集來(lái)的數(shù)據(jù)來(lái)說(shuō), 大多數(shù)情況下是要作為 OLAP 系統(tǒng)使用的. 因此存儲(chǔ)也基于 OLAP 的思路來(lái)選擇. 首先想到的就是 HDFS, 一個(gè)非常成熟的分布式文件系統(tǒng). 基于 HDFS 的生態(tài)也非常完備, 大多數(shù)情況下使用 Hive. 不過(guò) HDFS 也是要維護(hù)的, NameNode 雖然支持了 HA 一旦運(yùn)維不好丟數(shù)據(jù)了也不能怨政府不是. 如果使用了云平臺(tái), 可以考慮類似 Amazon S3/Aliyun OSS 等存儲(chǔ)服務(wù), 降低運(yùn)維成本.
不過(guò)后面會(huì)聊到數(shù)據(jù)平臺(tái)的產(chǎn)出, 也會(huì)根據(jù)需求用到一些 OLTP 的產(chǎn)品, 比如 MySQL 用來(lái)存儲(chǔ)報(bào)表數(shù)據(jù)等.

2.2 數(shù)據(jù)計(jì)算

終于到了數(shù)據(jù)計(jì)算這一節(jié). 前面搞來(lái)的數(shù)據(jù)好比買回家的生菜, 需要通過(guò)加工才能變成桌上的滿漢全席. 數(shù)據(jù)計(jì)算就是'廚房里的廚具'
籠統(tǒng)來(lái)說(shuō), 數(shù)據(jù)計(jì)算可以用 Spark/Hive/Hadoop/Storm/Presto/Druid..... 眼花繚亂. 分類總結(jié)一下, 可以分成如下幾種:

  • 批量計(jì)算(Batch): 通常是大數(shù)據(jù)量計(jì)算, 用于ETL等離線計(jì)算. 可以慢, 但要吃得下大數(shù)據(jù)量. 常用的有Hadoop MapReduce/Hive/Pig/Spark
  • 實(shí)時(shí)計(jì)算(Realtime): 通常適用于對(duì)延遲要求低的場(chǎng)景, 例如實(shí)時(shí)統(tǒng)計(jì). 現(xiàn)在基本上都是數(shù)據(jù)接入 Kafka 然后使用 Spark Streaming 或者 Storm
  • 交互式查詢: 對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析, 查詢速度直接決定使用者的工作效率. Hive 太慢. 可選的有開(kāi)源的 Druid, Presto, Impala, 商業(yè)產(chǎn)品可以選擇Amazon的Redshift等
  • 計(jì)算就要一堆服務(wù)器, 因此計(jì)算資源的調(diào)度就需要考慮. 常用的 Yarn 可以調(diào)度 Mapreduce 任務(wù), 也可以調(diào)度 Spark 任務(wù).

2.3 調(diào)度系統(tǒng)

有了那么多"廚具", 想要完成業(yè)務(wù)功能, 開(kāi)發(fā)了一大堆計(jì)算, 最后發(fā)現(xiàn)一堆計(jì)算任務(wù)的依賴關(guān)系非常復(fù)雜, 例如A 任務(wù)要等 B 和 C 任務(wù)都完成才可以啟動(dòng), 而 B 任務(wù)又依賴 C, D, E 任務(wù). 一開(kāi)始可以使用 crontab 啟動(dòng)任務(wù), 預(yù)估每個(gè)任務(wù)的完成時(shí)間, 錯(cuò)峰啟動(dòng). 但一旦中間一個(gè)任務(wù)失敗或者延遲完成, 會(huì)導(dǎo)致后續(xù)任務(wù)計(jì)算由于沒(méi)有前置數(shù)據(jù)輸入而計(jì)算結(jié)果錯(cuò)誤. 因此一個(gè)調(diào)度系統(tǒng)是必不可少的, 可以選擇 Airbnb 開(kāi)源的 Airflow , Linkedin 開(kāi)源的 Azkaban

3.數(shù)據(jù)到哪里去

這里才是前面折騰的最終目的: 數(shù)據(jù)用來(lái)干嘛.

3.1 決策支撐

  • Dashboard
  • A/B Testing
  • 分析報(bào)告

第一個(gè)想到的肯定就是各種業(yè)務(wù)的報(bào)表. 每個(gè)產(chǎn)品功能上線肯定會(huì)有一些指標(biāo)衡量功能. Lean Startup 的經(jīng)典圖里面 Measure 的過(guò)程不就是我們數(shù)據(jù)采集后計(jì)算報(bào)表的過(guò)程.

lean_startup.png

除了報(bào)表, 還有 A/B Test 系統(tǒng), 各種分析報(bào)告. 但總結(jié)來(lái)說(shuō), 這些都是為了做決策支撐.

3.2 基于數(shù)據(jù)的產(chǎn)品功能

有時(shí)也需要基于現(xiàn)有數(shù)據(jù)構(gòu)建一些用戶可以看到的產(chǎn)品功能.

  • 產(chǎn)品功能: 比如推薦系統(tǒng)
  • 運(yùn)營(yíng)活動(dòng): 有些運(yùn)營(yíng)活動(dòng)會(huì)展現(xiàn)一些用戶歷史行為的統(tǒng)計(jì)數(shù)據(jù), 比如過(guò)去你來(lái)了幾天, 買了哪些東西等.
數(shù)據(jù)平臺(tái).jpg

總結(jié)

之所以啰嗦這么多, 是讀了一本大數(shù)據(jù)日知錄 的書, 感覺(jué)思考一定要系統(tǒng)化, 才可以針對(duì)現(xiàn)狀琢磨今后要在哪個(gè)比較弱的地方發(fā)力, 做到更好.

大數(shù)據(jù)日知錄

-- EOF --

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嘉竟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌风纠,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡靶草,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門岳遥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)奕翔,“玉大人,你說(shuō)我怎么就攤上這事浩蓉∨杉蹋” “怎么了帮坚?”我有些...
    開(kāi)封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)互艾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)讯泣,這世上最難降的妖魔是什么纫普? 我笑而不...
    開(kāi)封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮好渠,結(jié)果婚禮上昨稼,老公的妹妹穿的比我還像新娘。我一直安慰自己拳锚,他們只是感情好假栓,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著霍掺,像睡著了一般匾荆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杆烁,一...
    開(kāi)封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天牙丽,我揣著相機(jī)與錄音,去河邊找鬼兔魂。 笑死烤芦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的析校。 我是一名探鬼主播构罗,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼智玻!你這毒婦竟也來(lái)了遂唧?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尚困,失蹤者是張志新(化名)和其女友劉穎蠢箩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體事甜,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谬泌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逻谦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掌实。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖邦马,靈堂內(nèi)的尸體忽然破棺而出贱鼻,到底是詐尸還是另有隱情宴卖,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布邻悬,位于F島的核電站症昏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏父丰。R本人自食惡果不足惜肝谭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛾扇。 院中可真熱鬧攘烛,春花似錦、人聲如沸镀首。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)更哄。三九已至芋齿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間成翩,已是汗流浹背沟突。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捕传,地道東北人惠拭。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像庸论,于是被迫代替她去往敵國(guó)和親职辅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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