作者 李小龍:鏈家網(wǎng)大數(shù)據(jù)部資深研發(fā)架構師是辕,負責大數(shù)據(jù)工具平臺化相關的工作。專注于數(shù)據(jù)倉庫昙啄、任務流調(diào)度穆役、元數(shù)據(jù)管理、自助報表等領域梳凛。之前在百度從事了四年的數(shù)據(jù)倉庫和工具平臺的研發(fā)工作耿币。
導讀:鏈家網(wǎng)大數(shù)據(jù)部門負責收集加工公司各產(chǎn)品線的數(shù)據(jù),并為鏈家集團各業(yè)務部門提供數(shù)據(jù)支撐韧拒。本文分享鏈家網(wǎng)大數(shù)據(jù)部成立后淹接,在發(fā)展變革中遇到的一些問題和挑戰(zhàn),架構團隊是如何構建一站式的數(shù)據(jù)平臺來解決獲取數(shù)據(jù)的效率問題叛溢,如何構建多層次系統(tǒng)來組建大數(shù)據(jù)架構體系塑悼。重點介紹團隊早期作為數(shù)據(jù)報表支持者,向當下數(shù)據(jù)平臺方轉(zhuǎn)變的這一歷程楷掉,通過對數(shù)據(jù)處理流程的梳理厢蒜,構建一體化的數(shù)據(jù)接入/計算/展示的開放平臺,提升數(shù)據(jù)運轉(zhuǎn)效率,快速滿足集團內(nèi)數(shù)據(jù)需求斑鸦。
一愕贡、背景簡介
鏈家網(wǎng)自2014年成立后,全面推進020戰(zhàn)略巷屿,打造線上線下房產(chǎn)服務閉環(huán)固以,公司業(yè)務迅速增長,覆蓋全國28個地區(qū)攒庵,門店數(shù)量超過8000家嘴纺。隨著鏈家集團積累數(shù)據(jù)的不斷增多,在2015年專門成立了大數(shù)據(jù)部浓冒,推進集團內(nèi)各公司數(shù)據(jù)資產(chǎn)的整合栽渴,以數(shù)據(jù)驅(qū)動公司業(yè)務的發(fā)展。
鏈家將房地產(chǎn)交易大數(shù)據(jù)分為物的數(shù)據(jù)稳懒、人的數(shù)據(jù)闲擦、行為數(shù)據(jù)三大塊來進行研究。
●物的數(shù)據(jù)主要是構建了全國的樓盤字典场梆,擁有專業(yè)的攝影測量團隊實地勘測墅冷,收錄了7000萬套房屋的詳細信息,包括小區(qū)周邊或油、人文素養(yǎng)等等寞忿。
●人的數(shù)據(jù),包括買家顶岸、業(yè)主腔彰、經(jīng)紀人三方,目前在全國有13萬經(jīng)紀人辖佣,對經(jīng)紀人的背景霹抛、從業(yè)年限、資歷卷谈、專業(yè)能力杯拐、歷史行為有詳細記錄,給客戶更加精準的參考世蔗。目前鏈家網(wǎng)服務的買家和賣家超過兩千多萬端逼,對用戶進行畫像,然后推薦更加合適的房屋凸郑。
●行為數(shù)據(jù)裳食,包括線上行為和多樣的線下行為,譬如線上的瀏覽日志芙沥,線下的看房行程等。
通過分析這些數(shù)據(jù),找到與業(yè)務的結合點而昨,目前大數(shù)據(jù)在鏈家網(wǎng)具體的應用場景有房屋估價救氯、智能推薦、房客圖譜歌憨、BI報表着憨。
二、大數(shù)據(jù)從0到1的架構落地
大數(shù)據(jù)部成立以后务嫡,借鑒業(yè)界成熟的數(shù)據(jù)倉庫方案甲抖,設計的早期架構圖如圖1所示:
圖1 數(shù)據(jù)倉庫早期架構
在這個階段我們主要做了三件事:
●搭建hadoop集群,初期只有10多臺機器心铃,隨著業(yè)務的發(fā)展准谚,集群規(guī)模也在不斷增長。
●采用HIVE構建數(shù)據(jù)倉庫去扣,數(shù)據(jù)倉庫里的數(shù)據(jù)來源于業(yè)務方的mysql數(shù)據(jù)庫和log日志柱衔。
●定制化報表開發(fā),按照業(yè)務方的需求愉棱,case by case做一些BI報表展示唆铐,滿足業(yè)務方對數(shù)據(jù)的分析。
這個架構簡單清晰奔滑,這樣做有三個好處:
●使用開源的組件艾岂,方便擴展和運維;
●采用業(yè)界成熟的數(shù)據(jù)倉庫方案朋其,數(shù)據(jù)倉庫分層模型設計王浴;
●有利于技術人員培養(yǎng),技術團隊在成長初期技術選型需要考慮市場上人員情況令宿,所以選擇了使用范圍廣的技術叼耙。
具體講講HIVE數(shù)據(jù)倉庫的模型,該模型一共分為5層粒没。
●最下面是STG層筛婉,用來存儲源數(shù)據(jù),保持與數(shù)據(jù)源完全一致癞松;
●第二層是ODS層爽撒,會進行數(shù)據(jù)清理等工作,譬如不同業(yè)務系統(tǒng)的城市編碼不一致响蓉,有的001代表北京硕勿,有的110代表北京,在ODS層進行維度編碼的統(tǒng)一處理枫甲。還有不同業(yè)務系統(tǒng)的金錢單位不一致源武,有的是元扼褪、有的是分,在此統(tǒng)一采用分為單位粱栖,保留兩位小數(shù)话浇;
●最上面是報表層,根據(jù)業(yè)務需求進行加工處理闹究,產(chǎn)出報表數(shù)據(jù)幔崖。至于數(shù)據(jù)倉庫遵循的范式結構,目前沒有嚴格一致地規(guī)范渣淤,星型模型和雪花模型都有采用赏寇。
早期的大數(shù)據(jù)架構落地后,支撐了將近一年時間价认,從2015年初到2016年初嗅定,取得了不錯的效果。
●收集匯總了集團內(nèi)各個分公司刻伊、各條產(chǎn)品線的數(shù)據(jù)露戒,便于交叉分析。通過對比分析數(shù)據(jù)捶箱,能幫助業(yè)務系統(tǒng)更好的發(fā)展智什。
●支撐集團內(nèi)大部分報表需求,幫助運營人員改進決策丁屎,數(shù)據(jù)驅(qū)動荠锭。 巧婦難為無米之炊,當數(shù)據(jù)倉庫積累了大量歷史數(shù)據(jù)晨川,數(shù)據(jù)挖掘的同學就能進行深度分析证九。
三、大數(shù)據(jù)平臺化體系的建設
為什么要做平臺化共虑?
主要原因還是隨著公司業(yè)務的快速發(fā)展愧怜,數(shù)據(jù)需求迅速增多,早期的大數(shù)據(jù)架構遇到一些新挑戰(zhàn)妈拌。
●數(shù)據(jù)需求快速增長:鏈家業(yè)務增長到全國多個城市拥坛,各個城市的報表需求很多,而且由于各個地方的政策不太一樣尘分,報表需求也有所差異猜惋,此外還有大量的臨時統(tǒng)計數(shù)據(jù)需求。為了能快速響應需求培愁,我們提出平臺化著摔,通過提供各種數(shù)據(jù)處理和探索工具,讓用戶自助高效地獲取一些數(shù)據(jù)定续。
●數(shù)據(jù)治理亟需規(guī)范:各條產(chǎn)品線的數(shù)據(jù)都進入倉庫以后谍咆,由于需求很急迫禾锤,一些建模規(guī)范未能有效執(zhí)行,導致倉庫里數(shù)據(jù)冗余繁雜卧波,wiki更新維護不及時时肿,難以清晰掌握數(shù)據(jù)倉庫里數(shù)據(jù)整體概況庇茫。指標定義不清晰港粱,一些數(shù)據(jù)需求人員按照自己的理解制定指標含義,結果上線后旦签,發(fā)現(xiàn)不同的人對指標理解不一致查坪,導致返工。
●數(shù)據(jù)安全迫在眉睫:對數(shù)據(jù)的申請需要進行集中的審批管理宁炫,對數(shù)據(jù)的使用需要進行持續(xù)的追蹤備案偿曙,防止數(shù)據(jù)泄露。
為了解決存在的這些問題羔巢,我們提出了新的平臺化架構圖望忆。平臺化架構數(shù)據(jù)流圖如圖2所示:
圖2 平臺化架構數(shù)據(jù)流圖
對比新老架構圖可以看出,首先是多了紅色的實時數(shù)據(jù)流部分竿秆,日志log采用flume對接Kafka消息隊列启摄,然后使用SparkStreaming/Storm進行日志的分析處理,處理后的結果寫入到Hbase供API服務使用幽钢。
另外歉备,在OLAP部分,引入了Kylin作為MOLAP處理引擎匪燕,會定期將Hive里面的星型模型數(shù)據(jù)處理后寫入Hbase蕾羊,然后Kylin對外提供數(shù)據(jù)分析服務,提供亞秒級的查詢速度帽驯。
圖中右邊是數(shù)據(jù)治理相關組件龟再,有數(shù)據(jù)權限、數(shù)據(jù)質(zhì)量尼变、元數(shù)據(jù)等利凑。在新的平臺化架構圖中,我們將大數(shù)據(jù)工程平臺分為三層享甸,由上到下分別是應用層截碴、工具層、基礎層蛉威,如圖3所示:
圖3 大數(shù)據(jù)工程平臺
3.1應用層
應用層日丹,主要面向數(shù)據(jù)開發(fā)人員和數(shù)據(jù)分析師,重點解決三類問題:
●BI報表產(chǎn)出速度如何加快蚯嫌,縮短業(yè)務方從提出數(shù)據(jù)需求到報表產(chǎn)出的時間周期哲虾。
●數(shù)據(jù)治理丙躏,對公司的核心數(shù)據(jù)指標進行統(tǒng)一定義,對元數(shù)據(jù)進行管理束凑,集中數(shù)據(jù)的審批流程晒旅。
●數(shù)據(jù)流轉(zhuǎn)集中管控,數(shù)據(jù)在各個系統(tǒng)間的流轉(zhuǎn)統(tǒng)一走元數(shù)據(jù)管理平臺汪诉,能很方便排查定位問題废恋。
為了加快BI報表產(chǎn)出,我們開發(fā)了地動儀自助報表扒寄,在數(shù)據(jù)源已經(jīng)就緒的情況下鱼鼓,目標是5分鐘完成一個通用報表的配置,得到類似 excel表格该编、柱狀圖這種圖表效果迄本,目前已經(jīng)支持 mysql、presto 课竣、kylin等各種數(shù)據(jù)源嘉赎。另外,如果需要定制化的Dashboard報表于樟,自助報表也支持復用一些圖表組件公条。
元數(shù)據(jù)管理系統(tǒng)
元數(shù)據(jù)對公司的所有數(shù)據(jù)信息進行管理維護,通過數(shù)據(jù)地圖隔披,可以看到公司數(shù)據(jù)倉庫里的所有數(shù)據(jù)以及數(shù)據(jù)信息的變更情況赃份,方便用戶進行搜索查詢。指標圖書館對指標進行詳細的描述定義奢米,而且可以對每個指標關聯(lián)的維度進行管理抓韩,維度表以及維度取值的描述。另外鬓长,基于元數(shù)據(jù)我們還可以做數(shù)據(jù)血緣關系谒拴,方便追蹤數(shù)據(jù)的上下游關系,能夠快速定位排查問題涉波。
元數(shù)據(jù)管理系統(tǒng)上線后英上,取得了以下三個成果:
●所有表的創(chuàng)建修改都經(jīng)過元數(shù)據(jù)系統(tǒng),可以實時清晰掌握倉庫里的數(shù)據(jù)情況啤覆。
●成立了公司級別的數(shù)據(jù)委員會苍日,統(tǒng)一制定公司的核心指標,各個部門可以自定義二級指標窗声。
●數(shù)據(jù)的接入和流出都通過元數(shù)據(jù)系統(tǒng)集中管控相恃,所有的日志接入、mysql接入通過元數(shù)據(jù)來配置笨觅,數(shù)據(jù)申請也是走的元數(shù)據(jù)拦耐,方便集中管理運維耕腾。
3.2工具層
工具層定位于通用工具組件的開發(fā),為上層應用提供能力支撐杀糯,同時解決用戶在使用大數(shù)據(jù)計算中遇到的實際困難扫俺。譬如ETL作業(yè)任務很多、追蹤排查問題比較麻煩固翰、數(shù)據(jù)修復時間長狼纬、Hue hive查詢速度比較慢、一個sql需要等待幾分鐘倦挂。
圖4是實際工作中一個典型的數(shù)據(jù)任務鏈路圖畸颅,抽取了作業(yè)鏈路中的一部分。
圖4 數(shù)據(jù)任務鏈路圖
從圖中我們可以看到以下信息:
●任務鏈路特別長方援,可能有6層之多;
●任務種類多涛癌,既有mysql導入任務犯戏,也有hive-sql加工任務,還有發(fā)送郵件的任務拳话;
●依賴類型比較復雜先匪,有小時級別依賴分鐘任務,也有日周月季互相依賴的任務弃衍。
對于這種復雜的數(shù)據(jù)鏈路呀非,之前我們采用oozie+python+shell解決,任務量有5000多個镜盯,維護困難岸裙,且遇到數(shù)據(jù)修復問題,難以迅速定位速缆。為了解決這些問題降允,我們參考了oozie、airflow等開源軟件艺糜,自主研發(fā)了新的任務調(diào)度系統(tǒng)剧董。
在新的任務調(diào)度系統(tǒng)上,用戶可以自助運維破停,對任務進行上線或者重跑翅楼,而且可以實時看到任務的運行日志。以前可能要登陸到集群機器上上查看日志真慢,非常麻煩缨睡。
調(diào)度系統(tǒng)上線后,取得了非常好的效果:
●任務配置簡單但金,在圖形上簡單的拖曳即可操作。
●提供常用的ETL組件功蜓,零編碼。舉個例子宠蚂,以前發(fā)送數(shù)據(jù)郵件式撼,需要自己寫腳本,目前在我們界面只需配置收件人和數(shù)據(jù)表即可求厕。
●一鍵修復追溯著隆,將排查問題修復數(shù)據(jù)的時間由一人天縮減到10分鐘。
●集群的資源總是緊張的呀癣,目前我們正在做的智能調(diào)度美浦、錯峰運行,保證高優(yōu)先級任務優(yōu)先運行项栏。
Adhoc即席查詢浦辨,之前我們使用的hue,速度比較慢沼沈。通過調(diào)研市面上的各種快速查詢工具流酬,我們采用了Presto和Spark SQL雙引擎,架構圖如圖5所示:
圖5 雙引擎架構圖
3.3基礎層
基礎層偏重于集群底層能力的建設和完善列另。遇到的問題集中在兩個方面:
●任務量劇增芽腾,目前每天有一萬多JOB,造成集群資源相當緊張页衙,排隊嚴重摊滔。
●集群的數(shù)據(jù)安全需要規(guī)劃,而且由于多個部門都在使用集群店乐,之前未劃分賬號和隊列艰躺,大家共同使用。
針對這些問題响巢,我們在基礎層做了一些改進描滔。
在集群性能優(yōu)化方面,通過劃分單獨的賬號隊列踪古,資源預留含长,保證核心作業(yè)的執(zhí)行,同時與應用層的權限管理打通伏穆,對不同的目錄按照用戶歸屬限制不同的權限拘泞。隨著集群數(shù)據(jù)的膨脹,不少冷數(shù)據(jù)無人管理枕扫,我們在梳理后陪腌,將冷數(shù)據(jù)遷移到AWS S3存儲。
四、案例啟示
●傳統(tǒng)企業(yè)或者初創(chuàng)團隊如何快速落地大數(shù)據(jù)诗鸭,首先要采用成熟的業(yè)界方案染簇,大的互聯(lián)網(wǎng)公司的做法可以直接借鑒,穩(wěn)定的開源軟件直接使用强岸;其次要深入梳理公司業(yè)務锻弓,找到契合點,譬如鏈家網(wǎng)的房屋估價蝌箍、個性化搜索青灼、交叉報表分析。
●面對公司業(yè)務的迅速增長妓盲,平臺化思維是解決問題的一個法寶杂拨。首先要通過梳理用戶的流程和使用習慣,將這些服務自動化悯衬,讓用戶能自助排查一些問題弹沽;其次平臺化開發(fā)的產(chǎn)品,先得實實在在解決用戶痛點問題甚亭,自己愿意使用贷币,然后才能推廣給其他人使用。
●平臺化的產(chǎn)品需要梳理清楚流程亏狰,制定規(guī)范。先通過梳理調(diào)研公司的現(xiàn)狀偶摔,然后規(guī)范流程暇唾,當然梳理的過程比較痛苦,需要很多人配合辰斋;制定了標準以后策州,需要保證標準的權威性和執(zhí)行力,可以成立公司級別的數(shù)據(jù)治理委員會宫仗,發(fā)布核心指標够挂,保證流程的推廣執(zhí)行。
TOP100全球軟件案例研究峰會已舉辦六屆藕夫,甄選全球軟件研發(fā)優(yōu)秀案例孽糖,每年參會者達2000人次。包含產(chǎn)品毅贮、團隊办悟、架構、運維滩褥、大數(shù)據(jù)病蛉、人工智能等多個技術專場,現(xiàn)場學習谷歌、微軟铺然、騰訊俗孝、阿里、百度等一線互聯(lián)網(wǎng)企業(yè)的最新研發(fā)實踐魄健。
更多TOP100案例信息及日程請前往[官網(wǎng)]查閱赋铝。4天時間集中分享2017年最值得學習的100個研發(fā)案例實踐。免費體驗票申請入口