業(yè)務(wù)流程圖
首先業(yè)務(wù)流程圖鎮(zhèn)樓僧凤,常見的大數(shù)據(jù)系統(tǒng)結(jié)構(gòu)如上圖所示,主要由這么幾個(gè)部分構(gòu)成
- 數(shù)據(jù)采集 - flume收集業(yè)務(wù)方上報(bào)的數(shù)據(jù)烤蜕;
- 數(shù)據(jù)存儲(chǔ)層 - 依賴HDFS提供的強(qiáng)大的分布式數(shù)據(jù)存儲(chǔ)方案蚕断,主要是使用Hbase進(jìn)行數(shù)據(jù)存儲(chǔ);
- 協(xié)調(diào)&調(diào)度層面 - 常見的就是zookeeper,主要是用于分布式系統(tǒng)中的資源協(xié)調(diào)嚣州;
- 實(shí)時(shí)處理框架(計(jì)算框架) - 用于海量數(shù)據(jù)的計(jì)算鲫售,常見的分析框架由spark、storm或者samza该肴;
- 數(shù)據(jù)分析層 - 企業(yè)大數(shù)據(jù)系統(tǒng)必然是基于業(yè)務(wù)并且反哺業(yè)務(wù)的情竹,提供簡(jiǎn)單易用的數(shù)據(jù)分析功能給到業(yè)務(wù)方也是必然要求。
一匀哄、數(shù)據(jù)采集
數(shù)據(jù)分析的基礎(chǔ)是數(shù)據(jù)采集秦效,flume提供了從分散的或者集中的數(shù)據(jù)源采集、聚合和傳輸海量日志的能力涎嚼。這里通過一個(gè)實(shí)際的案例介紹數(shù)據(jù)采集的重要性以及flume具備的一些能力阱州。
例:播放器內(nèi)常見的數(shù)字專輯業(yè)務(wù),業(yè)務(wù)方需要通過數(shù)據(jù)優(yōu)化購(gòu)買轉(zhuǎn)化率铸抑,就可以通過以下方案進(jìn)行處理
定義數(shù)據(jù):總轉(zhuǎn)化率 = 購(gòu)買用戶/進(jìn)入業(yè)務(wù)中的用戶贡耽;單步轉(zhuǎn)化率 = 下一步用戶/進(jìn)入業(yè)務(wù)中的用戶
埋點(diǎn)收集數(shù)據(jù):通過flume收集web或者客戶端通過SDK上報(bào)的數(shù)據(jù),并經(jīng)過簡(jiǎn)單整理后將數(shù)據(jù)傳輸至存儲(chǔ)層鹊汛;
二蒲赂、數(shù)據(jù)存儲(chǔ)
依據(jù)對(duì)一致性(consistency)要求的強(qiáng)弱不同,分布式數(shù)據(jù)存儲(chǔ)策略可分為ACID和BASE兩大陣營(yíng)刁憋。其中ACID類型的數(shù)據(jù)對(duì)一致性的要求比較強(qiáng)滥嘴,數(shù)據(jù)庫(kù)的事務(wù)處理結(jié)果必須使得數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變更為另一個(gè)一致性狀態(tài);BASE類型則以犧牲強(qiáng)一致性至耻,獲得基本可用性和柔性可靠性若皱,并要求達(dá)到最終一致性。
這里提一下BASE類型里的HBase尘颓,HBase設(shè)計(jì)理念來源于谷歌的BigTable走触,是目前商用場(chǎng)景下使用最多的數(shù)據(jù)存儲(chǔ)方案,提供了毫秒級(jí)別的查詢疤苹,百億級(jí)別的數(shù)據(jù)也能提供較高效率的處理互广;
三、協(xié)調(diào)&調(diào)度層
- 調(diào)度器 - 主要用于分布式系統(tǒng)中的一些資源的調(diào)度卧土,例如計(jì)算能力惫皱、延遲等,例如YARM尤莺;
- 協(xié)調(diào)器 - 在分布式系統(tǒng)中主要用于協(xié)調(diào)服務(wù)和進(jìn)行狀態(tài)管理旅敷。
提一下結(jié)構(gòu)圖中的zookeeper,zookeeper是apache hadoop框架中的分布式應(yīng)用的協(xié)調(diào)程序颤霎,主要為分布式應(yīng)用提供一致性服務(wù)媳谁,主要包括以下功能:配置維護(hù)涂滴、域名服務(wù)、分布式同步韩脑、組服務(wù)等氢妈。簡(jiǎn)單來說,就是將復(fù)雜的段多、易出錯(cuò)的關(guān)鍵服務(wù)封裝好首量,提供簡(jiǎn)單易用的接口、功能的穩(wěn)定給用戶进苍。
四加缘、計(jì)算框架
常見的數(shù)據(jù)處理方案有以下兩種
- 流處理 - 一般用于處理連續(xù)不斷的數(shù)據(jù)流,注重?cái)?shù)據(jù)處理的時(shí)效性觉啊;
- 批處理 - 實(shí)時(shí)性較差拣宏,一般用于處理大規(guī)模數(shù)據(jù)集,例如業(yè)務(wù)方累計(jì)的歷史數(shù)據(jù)杠人。
典型的批處理系統(tǒng)就是Hadoop 提供的MapReduce勋乾。而常見的流處理系統(tǒng)有Apache Storm,Apache Samza嗡善。還有一種系統(tǒng)辑莫,同時(shí)具備批處理與流處理的能力,這種稱為混合處理系統(tǒng)罩引,比如Apache Spark各吨,Apache Flink。
商用場(chǎng)景下袁铐,最常使用的計(jì)算框架是Spark揭蜒,它是一個(gè)基于內(nèi)存計(jì)算的開源的集群計(jì)算系統(tǒng);主要優(yōu)勢(shì)是數(shù)據(jù)分析速度更快剔桨,內(nèi)存計(jì)算框架適合各種迭代算法和交互式數(shù)據(jù)分析屉更,能夠提升大數(shù)據(jù)處理的實(shí)時(shí)性和準(zhǔn)確性,國(guó)內(nèi)的阿里巴巴洒缀、網(wǎng)易均是其用戶偶垮。
五、數(shù)據(jù)分析層
數(shù)據(jù)分析層中的工具帝洪,涵蓋范圍很廣,從諸如SQL的聲明式編程語言脚猾,到諸如Pig的過程化編程語言葱峡,均有涉及,同時(shí)數(shù)據(jù)分析層支持常見的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)算法龙助,這些類庫(kù)可拿來即用砰奕,可以極大的提高使用效率蛛芥;
這里提一下Phoenix,它是 HBase 的 SQL 驅(qū)動(dòng)军援,可以將普通的SQL查詢轉(zhuǎn)成 HBase 的掃描及相應(yīng)的動(dòng)作仅淑。作為產(chǎn)品或者數(shù)據(jù)分析師,建議熟練掌握SQL
Hive:Hive是一個(gè)建立于 Hadoop 上的數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)構(gòu)架胸哥。它用來進(jìn)行數(shù)據(jù)的提取涯竟、轉(zhuǎn)化和加載(即Extract-Transform-Load ,ETL)空厌,它是一種可以存儲(chǔ)庐船、查詢和分析存儲(chǔ)在 Hadoop 中的大規(guī)模數(shù)據(jù)的機(jī)制。