分享嘉賓:趙國賢 貝殼 編輯整理:Hoh Xil 內(nèi)容來源:BigData NoSQL 12th Meetup 出品社區(qū):DataFun 注:歡迎轉(zhuǎn)載,,轉(zhuǎn)載請注明出處,。 今天為大家分享貝殼找房流式數(shù)據(jù)的平臺化實踐與挑戰(zhàn),具體介紹下如何建設(shè)流式數(shù)據(jù)平臺來滿足業(yè)務(wù)方的需求,。 ▌總體架構(gòu) 貝殼找房大數(shù)據(jù)的整體架構(gòu),,從下到上分為四層: 1. 基礎(chǔ)平臺層。這一層應(yīng)用的都是比較常見的技術(shù):HDFS 分布式存儲,,yarn 分布式調(diào)度,,以及 HBase 存儲,另外還有一些計算引擎,,如 hive,、tez、spark,、presto,、kylin、clickhouse,、SparkML 等來滿足各種各樣的基礎(chǔ)需求,,同時還有高性能的計算機(jī)集群。 基礎(chǔ)平臺層的工作總結(jié)起來包括:
2. 能力匯聚層,。大家知道每年都有大量的開源組件,,那么如何讓上層的業(yè)務(wù)方更好的應(yīng)用這些組件,就是能力匯聚層要完成的工作:
能力匯聚層的工作總結(jié)起來包括:
更上層就是數(shù)據(jù)倉庫做的事情: 3. 數(shù)據(jù)內(nèi)容層,。這層主要是做統(tǒng)一數(shù)據(jù)湖,,新房數(shù)據(jù)湖等等一些數(shù)據(jù)治理的工作來構(gòu)建數(shù)據(jù)倉庫,以滿足更上層業(yè)務(wù)方的需求,。 4. 能力輸出層,。
能力輸出層的工作總結(jié)起來包括:
▌數(shù)據(jù)流流程 要理解流式數(shù)據(jù),首先要知道數(shù)據(jù)流的流程: 1. 數(shù)據(jù)接入,。為了做好數(shù)據(jù)分析,,同時給用戶畫像、數(shù)據(jù)挖掘等提供數(shù)據(jù)物料,,就需要做好數(shù)據(jù)接入層,,一般情況下我們面臨的問題主要有: ① 多變:數(shù)據(jù)來源有業(yè)務(wù) DB、MySQL,、Oracle,、sql server、第三方存儲 Redis 等多種數(shù)據(jù)源,,怎么對多變的數(shù)據(jù)源做統(tǒng)一的,、及時的接入。 ② 異常:舉個例子,,某些業(yè)務(wù)方經(jīng)常在半夜刷新數(shù)據(jù),,這對數(shù)據(jù)接入的實時性和準(zhǔn)確性產(chǎn)生了很大的影響。 ③ 效率: A. 離線數(shù)據(jù)接入,,如何更快的把數(shù)據(jù)接入進(jìn)來,。 B. 實時數(shù)據(jù)接入,如何準(zhǔn)確的接入,,并及時提供需求數(shù)據(jù),。 針對這些問題,貝殼找房的解決方案就是 Databus(數(shù)據(jù)直通車),,通過數(shù)據(jù)直通車來解決上述的三個問題,,把行為數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)及時、高效的接入計算平臺層,,來滿足流式數(shù)據(jù)的計算和需求,。 2. 實時 ETL。主要分為上層的數(shù)據(jù)治理和下層的計算平臺,。數(shù)據(jù)接入進(jìn)來之后,,采用什么樣的形式存儲,更好的做數(shù)據(jù)分析,,而實時計算又采用什么樣的方式存儲,,這里都是通過 Ark 平臺來做實時處理。 3. 數(shù)據(jù)輸出,。如何把數(shù)據(jù)更好的提供給用戶,,這里主要會介紹日志流產(chǎn)品化的平臺天眼。 ▌挑戰(zhàn) 流式數(shù)據(jù)平臺面臨的挑戰(zhàn): 1. 流式元數(shù)據(jù)管理,。公司到底有哪些流式數(shù)據(jù),?比如 kafka 接了一批日志,MySQL 產(chǎn)生了一批 binlog,,各種事務(wù)中也產(chǎn)生了一些流式數(shù)據(jù),。這些流式數(shù)據(jù)來自哪些業(yè)務(wù)方?數(shù)據(jù)類型是什么,?有什么樣的屬性,?以貝殼為例,,是新房的數(shù)據(jù)?還是二手房的數(shù)據(jù),?還是經(jīng)紀(jì)人的數(shù)據(jù),?還是客戶的數(shù)據(jù)?里面數(shù)據(jù)的格式是什么樣的,?如何存儲的,?如何解析?都需要統(tǒng)一的流式元數(shù)據(jù)管理平臺,,來更好的理解并處理這些數(shù)據(jù),。 2. 流式數(shù)據(jù)處理平臺。常見的 Flink,、spark streaming 等,,對于需求方來說,不可能總寫相應(yīng)的代碼,,來完成操作,,這樣成本比較高。如何讓業(yè)務(wù)方盡可能簡單的,、可配置的進(jìn)行流式處理操作,,這里主要是通過 Ark 流處理平臺完成,后面會重點介紹,。 3. 流式數(shù)據(jù)應(yīng)用產(chǎn)品,。貝殼擁有多個場景,如日志分析,、數(shù)據(jù)挖掘等,,每個場景對流式數(shù)據(jù)都有不同的需求,這就需要我們針對不同需求做不同的產(chǎn)品,。 ▌流式計算平臺及應(yīng)用 1. 數(shù)據(jù)直通車 數(shù)據(jù)直通車的架構(gòu): 數(shù)據(jù)接入層分為: ① 流數(shù)據(jù)接入:貝殼的流數(shù)據(jù)包括,,ngx 日志、dig 埋點,、mysql-binlog,、tidb-binlog、其他業(yè)務(wù)日志等,,把這些流數(shù)據(jù)通過 rsyslog,、tidb-binlog-drainer、canal 等接入 kafka,。 ② 存儲接入:離線數(shù)據(jù)可能存在 Hive,、Mysql、redis、HBase,、TiDb 等多種數(shù)據(jù)存儲源,,通過 spark 離線任務(wù)、TiSpark 把數(shù)據(jù)接入到更上層的數(shù)據(jù)輸出層,。 流式數(shù)據(jù)接入之后,,就可以做訂閱,如何 kafka,、redis、ES(檢索操作),、HBase(大數(shù)據(jù)量 KV 操作)等,,還可以做周期性同步,T+1 級別的數(shù)據(jù),,還有我們探索實現(xiàn)的準(zhǔn)實時倉庫,,目前可以做到5分鐘的延遲。 依賴于整個數(shù)據(jù)接入層,、處理層,、輸出層的工作,可以滿足: ① 建設(shè)完元數(shù)據(jù)之后,,通過應(yīng)用層就可以查詢到所有元數(shù)據(jù)的信息,,并且知道元數(shù)據(jù)的變更情況(如果不知道元數(shù)據(jù)的變更情況,那么數(shù)據(jù)可是不準(zhǔn)確的,,和真實的數(shù)據(jù)是對應(yīng)不上的),。通過數(shù)據(jù)直通車,就可以滿足我們的第一個挑戰(zhàn),,完成了所有元數(shù)據(jù)的管理,。可以及時,、準(zhǔn)確,、高效的把數(shù)據(jù)接入到存儲層,或者為數(shù)據(jù)處理層準(zhǔn)備好數(shù)據(jù)物料,。 ② 流數(shù)據(jù)訂閱 ③ binlog 變更查詢等,。 元數(shù)據(jù)與數(shù)據(jù)倉庫的能力: 簡單說下元數(shù)據(jù)管理服務(wù),見右圖,,主要通過 TiDB-binlog,,獲取業(yè)務(wù)數(shù)據(jù)之后,把數(shù)據(jù)直接同步到 mysql,,變更之后如果能自動處理就自動處理,,如果不能自動處理就會發(fā)出告警,由人為來操作,這樣來保證業(yè)務(wù)數(shù)據(jù)是統(tǒng)一的,,同時通過 WebUI 接口給用戶來查看,,也可以通過 API 接口給其他業(yè)務(wù)來調(diào)用。比如后面要講的 Ark 平臺就可以直接調(diào)用 API 來使用流式數(shù)據(jù),。 準(zhǔn)實時數(shù)倉,,見左圖,引入 hudi 能力,,通過 hudi 和 TiDB 可以準(zhǔn)實時的把數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉庫之中,,用戶可以在5分鐘延遲的情況下來滿足對于業(yè)務(wù)數(shù)據(jù)的統(tǒng)計、監(jiān)控,、分析的需求,。 產(chǎn)品化展示: 這是平臺的首頁,第一個圖可以提供業(yè)務(wù)的執(zhí)行情況,,第二個圖告訴我們數(shù)據(jù)的變更情況,,第三個圖是整個業(yè)務(wù)成功的情況。 左邊欄:數(shù)據(jù)字典,,元數(shù)據(jù)能力,;實時查詢,準(zhǔn)實時數(shù)倉查詢的能力,;以及埋點管理,,數(shù)據(jù)訂閱管理、數(shù)據(jù)變化查詢等,。 通過數(shù)據(jù)直通車,,解決了數(shù)據(jù)接入和元數(shù)據(jù)的管理問題。 目前可以做到 kafka 集群,、埋點 dig,、Mysql binlog、七層日志的元數(shù)據(jù)管理,。 2. Ark流處理平臺 Ark整體架構(gòu): 引擎層: ① 把數(shù)據(jù)接入到 Source 源,,如 kafka、binlog,、dig 等,。 ② 數(shù)據(jù)接入之后,在引擎層進(jìn)行處理,,主要方式有三種:Stream SQL,、實時規(guī)則匹配、通用模板,,其底層依賴于 Spark Streaming 和 Flink,。 ③ 最終可以把數(shù)據(jù)輸出到 Sink 中,如:Druid.io、ES,、kafka,、HBase 等,這時用戶可以直接調(diào)用,。 計算平臺層: 通過封裝的方式來構(gòu)建計算平臺,,計算平臺主要通過這樣幾件事兒來完成穩(wěn)定性和通用性的需求,第一個是任務(wù)管控,,需要管理好我們的任務(wù),,如何調(diào)度我們的任務(wù),第二個是調(diào)優(yōu)診斷,,有些用戶寫的任務(wù)可能不是特別完善,,我們可以自動判斷他的任務(wù)是否需要優(yōu)化,并給出優(yōu)化建議,,第三個可以引入 Databus 中的數(shù)據(jù)進(jìn)行處理和使用,第四個是 SQL IDE,,我們會盡可能多的生成 SQL,,讓用戶盡可能寫一些少的配置,來應(yīng)用 Ark 平臺,,最后就是監(jiān)控報警,,監(jiān)控整個任務(wù)的運行情況和延遲情況。 應(yīng)用層: 通過 API 把我們 Ark 平臺的能力輸出出去: ① 數(shù)據(jù)清洗 ② 實時大屏 ③ 實時特征 ④ 推薦營銷 ⑤ 安全風(fēng)控 還有其他的一些應(yīng)用,,以及后面會講到的天眼平臺,,通過對日志的流式處理統(tǒng)一化及產(chǎn)品化滿足日志的各種訴求。 這就是整個 Ark 流處理平臺提供的能力,。 Ark 能力接口: 數(shù)據(jù)流(包括日志流,、七層日志、mysql,、埋點,、kafka 集群等)通過 Ark 平臺可以把數(shù)據(jù)清洗到多個分析引擎中,并且可以通過 TiDB,、HBase,、redis 做關(guān)聯(lián),根據(jù)不同的需求把數(shù)據(jù)關(guān)聯(lián)到不同的存儲分析引擎中,。 產(chǎn)品化展示: 這個是 SQL IDE 的能力,,90%的 SQL 都是自動生成的,大家只需要配置 m3db 地址,,處理的類型等,,就可以直接應(yīng)用 Ark 流處理平臺。這樣就降低了很大的代價,因為 sql 的接入度是最強的,。 這個是 Ark 流處理平臺的首頁,,我們簡單介紹一下產(chǎn)品的能力特點:
3. 天眼 傳統(tǒng)的方式,日志接入到 kafka,,通過 spark streaming 或者 Apache flink,,解析到 druid/es/hive 中來做分析,每次業(yè)務(wù)方都是按需來做這些事情,,自己做數(shù)據(jù)清洗,,自己在做應(yīng)用,非常繁瑣耗時,,為了解決這個問題,,我們把這些步驟集成到了一個產(chǎn)品天眼中。 天眼架構(gòu): 數(shù)據(jù)采集:所有的業(yè)務(wù)日志,、訪問日志,、設(shè)備日志以及第三方日志,Metrics 上報,,SDK 埋點數(shù)據(jù),,Agent 數(shù)據(jù),都可以通過 Databus 接入到數(shù)據(jù)處理層,,然后再按需放入 Druid.io,、HDFS、ES,、Hive,、Mysql 中,再通過查詢引擎,,可以做到檢索,、統(tǒng)計報表、可視化,、數(shù)據(jù)分析,、監(jiān)控報警,最終根據(jù)數(shù)據(jù)采集,、數(shù)據(jù)處理,、數(shù)據(jù)服務(wù)三層的能力抽象出來多個數(shù)據(jù)應(yīng)用,天眼可以做可視化分析,、全鏈路監(jiān)控,、業(yè)務(wù)監(jiān)控、故障管理,,以及常見的數(shù)據(jù)管理,、檢索,、報警,和開放的 API,,讓日志可以做到多種方式的應(yīng)用到不同的場景,。 產(chǎn)品化展示: 這是天眼的界面,包括實時 QPS 排名,,以及多個業(yè)務(wù)方的域名,,點擊之后可以看到對應(yīng)域名的整個實時大盤。左邊欄為天眼能力的列表,,通過我們的數(shù)據(jù)直通車,、Ark 平臺,對數(shù)據(jù)日志處理做了一站式的集成和能力的輸出,。 ▌總結(jié) ① 做流數(shù)據(jù)處理,,一定要先把流數(shù)據(jù)字典能力做出來,只有一個清晰的,、完整的,、可視的流數(shù)據(jù)字典能力才能讓流數(shù)據(jù)應(yīng)用的更好,方便用戶的查詢,。 ② 豐富的流處理能力,,通過產(chǎn)品化的封裝,比如 Spark streaming 和 Flink 有多種流處理能力,,通過 Ark 封裝,用戶可以更簡易,、自主的配置,。 ③ 多場景適應(yīng)能力,根據(jù)各種場景,,把基礎(chǔ)層提供的數(shù)據(jù)能力,,做一個產(chǎn)品化的封裝,滿足不同場景應(yīng)用的能力,。除了剛剛講的天眼日志分析外,,流式處理還有各種的應(yīng)用,如 AI 對實時的數(shù)據(jù)挖掘,,實時的用戶畫像等,。 今天主要為大家分享了貝殼找房的三個平臺,以及流式數(shù)據(jù)處理的挑戰(zhàn)和一些實戰(zhàn)的經(jīng)驗,。謝謝大家,。 嘉賓介紹 趙國賢,貝殼大數(shù)據(jù)架構(gòu)團(tuán)隊負(fù)責(zé)人,。目前負(fù)責(zé)貝殼大數(shù)據(jù)架構(gòu)團(tuán)隊,,負(fù)責(zé)公司大數(shù)據(jù)存儲平臺,、計算平臺、實時數(shù)據(jù)流平臺的架構(gòu),、性能優(yōu)化,、研發(fā)等,提供高效的大數(shù)據(jù) olap 引擎,、以及大數(shù)據(jù)工具鏈組件研發(fā),,為公司提供穩(wěn)定、高效,、開放的大數(shù)據(jù)基礎(chǔ)組件與基礎(chǔ)平臺,。 |
|
來自: 麓山館藏 > 《創(chuàng)意》