在此做個簡單的復(fù)盤护桦,給大家講一個數(shù)據(jù)團(tuán)隊從0到1的故事衡楞。說是非典型歇僧,因為有一個好消息和一個壞消息,壞消息是數(shù)據(jù)團(tuán)隊與總部不在同一個城市赊琳,得不到總部的資源。好消息是我們有易鯨捷這個出身于惠普的分布式數(shù)據(jù)庫團(tuán)隊做支持砰碴。
溫馨提示:對大數(shù)據(jù)技術(shù)及產(chǎn)品不感興趣的朋友可以直接拉到文末看心得總結(jié)躏筏。
0. 一個人Know Nothing
我就像是進(jìn)入了一個密室,外面人都說這里埋著寶藏衣式,可是我一頭闖進(jìn)來后卻一片漆黑完全找不到方向寸士。Google,看書碴卧,沿著一條條線索查詢弱卡,如同盲人摸象,一會摸到了鼻子住册,一會摸到了尾巴婶博,可是完全不知道整體是怎樣,腦子里只有一堆堆的困惑荧飞,交織在一起凡人,理不出頭緒。漸漸叹阔,隨著一個個問題的解答挠轴,像是拉開了這個密室的一個個窗簾,光漸漸地透進(jìn)來耳幢,終于對整體的輪廓有了了解岸晦,可是越是了解欧啤,越是恐慌,太多的東西要學(xué)启上,這不是一個人能完成的任務(wù)邢隧。
歷經(jīng)波折,在易鯨捷公司的協(xié)助下冈在,在這一階段我完成了公司大數(shù)據(jù)基礎(chǔ)設(shè)施的組建倒慧。包括硬件、網(wǎng)絡(luò)包券、基于CDH 的大數(shù)據(jù)平臺(包含HDFS纫谅,Yarn,Hive兴使,HBase系宜,Zookeeper,Oozie发魄,Hue等組件)和EsgynDB盹牧。
在此感謝 易鯨捷公司并將其產(chǎn)品推薦給大家,其產(chǎn)品商業(yè)版本叫EsgynDB励幼,開源版本叫Trafodion汰寓,為Apache孵化項目,Github項目鏈接 https://github.com/apache/incubator-trafodion苹粟。
- 踩過的坑1
被建議用Openresty自己寫日志收集服務(wù)有滑,花了很長時間研究后發(fā)現(xiàn)根本沒必要,F(xiàn)lume和Kafka已經(jīng)非常成熟而且有眾多應(yīng)用嵌削。
踩坑體會:在初期毛好,非核心組件盡量使用成熟開源工具,降低成本苛秕。
- 踩過的坑2
被建議使用d3js來完成數(shù)據(jù)可視化肌访,研究后發(fā)現(xiàn)d3js使用門檻比較高,百度的echarts庫簡單易用艇劫,效果也足夠好吼驶。
踩坑體會:技術(shù)選型不必一味追求高大上,滿足需求店煞,簡單易用才是合適蟹演。
1. 初創(chuàng)團(tuán)隊-數(shù)據(jù)接入
根據(jù)之前的摸索,我將數(shù)據(jù)架構(gòu)分為了數(shù)據(jù)接入層顷蟀、數(shù)據(jù)倉庫層和數(shù)據(jù)應(yīng)用層酒请,并以此架構(gòu)開始搭建數(shù)據(jù)團(tuán)隊。
第一步先收集數(shù)據(jù)羞反。
技術(shù)端哮兰,因為數(shù)據(jù)收集服務(wù)的技術(shù)選型為Flume和Kafka,所以需要尋找Java系的開發(fā)人員苟弛。團(tuán)隊中第一個人是最不好招的,更何況團(tuán)隊與總公司不在同一個城市阁将。在這個“冷啟動”的階段膏秫,我的策略是不求招到熟練使用Flume和Kafka的研發(fā),轉(zhuǎn)而關(guān)注有Java背景做盅,學(xué)習(xí)能力和工作意愿強(qiáng)缤削,經(jīng)驗在1-3年間的Java開發(fā)工程師。謝天謝地吹榴,我在不長的時間內(nèi)招到了2位Java web開發(fā)工程師亭敢。開始了組建團(tuán)隊的第一步。
產(chǎn)品端图筹,我開始調(diào)研數(shù)據(jù)源帅刀,主要數(shù)據(jù)來源有業(yè)務(wù)數(shù)據(jù),用戶行為數(shù)據(jù)和第三方數(shù)據(jù)远剩。相對于一般不會出問題的業(yè)務(wù)數(shù)據(jù)和沒有那么容易拿到的第三方數(shù)據(jù)扣溺,用戶行為數(shù)據(jù)最著急,因為晚收集一天就少一天數(shù)據(jù)瓜晤,所以我先從用戶行為數(shù)據(jù)下手锥余,開始設(shè)計移動端的埋點方案。這里感謝神策數(shù)據(jù)和GrowingIO的無私分享痢掠,兩家公司在知乎等平臺發(fā)表了大量高質(zhì)量文章介紹埋點方案驱犹,幫助我理清了埋點原理和落地方案。
埋點方案交給移動端研發(fā)團(tuán)隊實現(xiàn)的同時足画,Java研發(fā)同學(xué)也在設(shè)置Flume雄驹,創(chuàng)建Kafka的Topic,編寫Kafka Consumer锌云。保證數(shù)據(jù)收集服務(wù)快速上線荠医,盡可能少丟失用戶行為數(shù)據(jù)。
- 踩過的坑
這段時間我犯了一個原則性錯誤桑涎,導(dǎo)致埋點方案臃腫而不合理彬向。公司這時候還沒建立起完整的運(yùn)營團(tuán)隊,所以我在沒有運(yùn)營團(tuán)隊的需求之前就開始設(shè)計埋點攻冷,導(dǎo)致埋點無法滿足需求娃胆,后期經(jīng)常遇到需要的源數(shù)據(jù)沒有收集,而很多埋點又閑置的尷尬等曼,以至后來不得不重構(gòu)了整個埋點方案里烦。
踩坑體會:需求凿蒜,需求,需求胁黑,不講需求和場景的產(chǎn)品經(jīng)理就是耍流氓废封。
2. 漸入佳境-數(shù)據(jù)倉庫
有了數(shù)據(jù),接下來要存儲分析丧蘸,最主要的任務(wù)就是構(gòu)建數(shù)據(jù)倉庫漂洋。常見的大數(shù)據(jù)構(gòu)架下,負(fù)責(zé)數(shù)據(jù)存儲的是HDFS力喷,負(fù)責(zé)數(shù)據(jù)分析的Hive刽漂,但因為EsgynDB的存在,我們的架構(gòu)簡單了很多弟孟,Kafka的數(shù)據(jù)直接寫入EsgynDB贝咙,然后在EsgynDB中使用ANSI SQL做ETL,建立數(shù)據(jù)倉庫和離線分析拂募,這就是SQL On Hadoop的優(yōu)勢庭猩,標(biāo)準(zhǔn)SQL被轉(zhuǎn)為分布式計算,免去寫MR和HQL這種門檻相對高的工作没讲。
這樣的構(gòu)架使我們在只有一個大數(shù)據(jù)工程師的情況就建立了數(shù)據(jù)倉庫層眯娱,大大節(jié)省了人力成本,現(xiàn)在的大數(shù)據(jù)工程師的平均薪酬即使在互聯(lián)網(wǎng)研發(fā)這個高收入人群中也算高的爬凑,面試大數(shù)據(jù)工程師的時候我經(jīng)常在心里吐槽徙缴,大哥,我問的問題你都答不上來嘁信,可是你期望的稅后工資比我的稅前工資還高你知道么于样?
同時,在這一階段潘靖,數(shù)據(jù)接入層也將業(yè)務(wù)數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)倉庫穿剖,T+1, Kettle從業(yè)務(wù)數(shù)據(jù)庫備庫中將數(shù)據(jù)導(dǎo)入數(shù)倉卦溢。這樣既保證不影響業(yè)務(wù)數(shù)據(jù)庫糊余,也可以相對保持?jǐn)?shù)據(jù)的一致性。
至此单寂,數(shù)據(jù)層基本搭建完畢贬芥,用戶行為數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)源源不斷的經(jīng)過ETL流入數(shù)據(jù)倉庫,數(shù)倉中的腳本們經(jīng)過Oozie的調(diào)度宣决,最終將結(jié)果匯總到以業(yè)務(wù)主題分類的結(jié)果表中蘸劈。
- 踩過的坑1
數(shù)據(jù)清洗,這真的是見神殺神尊沸,遇佛殺佛的大坑威沫,數(shù)據(jù)源的問題千奇百怪贤惯,沒有遇不到,只有想不到棒掠。
踩坑體會:Garbage In Garbage Out
- 踩過的坑2
前期數(shù)據(jù)量少孵构,直接在寬表中進(jìn)行數(shù)據(jù)分析,但數(shù)據(jù)量大起來就會發(fā)現(xiàn)烟很,沒有建模分析真的慢浦译。稍作優(yōu)化,性能就有成倍的提高溯职。
踩坑體會:即使到了大數(shù)據(jù)時代,很多經(jīng)典的數(shù)倉理論依然沒有過時帽哑,比如星型模型谜酒,大數(shù)據(jù)不是數(shù)據(jù)倉庫的替代。大數(shù)據(jù)大大促進(jìn)了數(shù)據(jù)倉庫的發(fā)展妻枕,使數(shù)據(jù)倉庫可以更大量僻族,更快地處理類型更豐富的數(shù)據(jù)。
3. 初具雛形-數(shù)據(jù)應(yīng)用
數(shù)據(jù)層基本搭建完畢屡谐,但要讓數(shù)據(jù)真的被使用起來述么,應(yīng)用層是必不可少的。初創(chuàng)團(tuán)隊對高大上的數(shù)據(jù)應(yīng)用不做奢望愕掏,先把基本的報表系統(tǒng)做好度秘。
報表系統(tǒng)提供了三種服務(wù),數(shù)據(jù)看板(Dashboard)饵撑,數(shù)據(jù)大屏和數(shù)據(jù)簡報剑梳。
- 數(shù)據(jù)看板,其實可以用BDP或是微軟PowerBI這種敏捷BI工具來代替滑潘,但想用好敏捷BI工具垢乙,做到數(shù)據(jù)民主化,全員數(shù)據(jù)思維和分析技能是必不可少的语卤,要做到這一點還有很長的路追逮,所以此階段還是選擇了以傳統(tǒng)的固定Dashboard方式來展現(xiàn)。數(shù)據(jù)產(chǎn)品經(jīng)理在此主要的工作是設(shè)計指標(biāo)體系和產(chǎn)品原型粹舵,我的另外一篇文章-怎樣做一個BI方向的數(shù)據(jù)產(chǎn)品經(jīng)理對此做了簡單介紹钮孵,歡迎大家參考。
- 數(shù)據(jù)大屏用于對外展示齐婴,BlingBling的油猫,客戶看了倍兒高興,推薦阿里的DataV服務(wù)組建自己的數(shù)據(jù)大屏柠偶,據(jù)說阿里自己的雙十一大屏就是基于DataV情妖。但不得不吐槽睬关,DataV不是很好用,有很多Bug毡证,組件樣式少电爹,加載緩慢,定價模式不合理料睛,但市面上沒有其他更好的丐箩,也只能湊合用了。
- 郵件發(fā)送Excel數(shù)據(jù)簡報恤煞,與數(shù)據(jù)看板互為補(bǔ)充屎勘,而且對于一次性需求,郵件Excel報表可以更快速的回復(fù)需求居扒。
另外要提一句報表系統(tǒng)中的數(shù)據(jù)監(jiān)控概漱,數(shù)據(jù)產(chǎn)品經(jīng)理在統(tǒng)計的時候經(jīng)常會遇到一些莫名其妙的結(jié)果,這時候就需要到庫里查哪里出了問題喜喂,非常費(fèi)時費(fèi)力瓤摧,不如把每天的上報情況用郵件自動發(fā)送給相關(guān)人員,出了問題可以在第一時間發(fā)現(xiàn)玉吁。
終于照弥,非典型數(shù)據(jù)團(tuán)隊初具雛形,應(yīng)用層包含1位產(chǎn)品进副,1位前端開發(fā)和1位后臺開發(fā)这揣,數(shù)據(jù)層包含1位數(shù)據(jù)產(chǎn)品,1位大數(shù)據(jù)開發(fā)影斑。功能上對公司內(nèi)部提供數(shù)據(jù)報表支持曾沈,滿足運(yùn)營,市場鸥昏,產(chǎn)品和管理層的數(shù)據(jù)需求塞俱。
- 踩過的坑1
關(guān)鍵崗位單點,比如大數(shù)據(jù)開發(fā)工程師吏垮,這是團(tuán)隊的核心職位之一障涯,遭遇人員離職后直接導(dǎo)致團(tuán)隊功能失效,特別是初創(chuàng)團(tuán)隊遭遇還在試用期的核心成員提前不到一周通知的離職膳汪,慘不忍睹唯蝶。
踩坑體會:關(guān)鍵崗位一定要有備崗,考慮成本的話可以是功能相近的兩個崗位互為備崗遗嗽。
- 踩過的坑2
缺乏資深隊友粘我,前期為了節(jié)省成本,搭建團(tuán)隊多考慮1-3年相關(guān)工作經(jīng)驗的同學(xué),好處是年紀(jì)輕征字,家庭負(fù)擔(dān)小都弹,學(xué)習(xí)意愿和工作意愿強(qiáng),團(tuán)隊氛圍活躍匙姜,但是弊端也很明顯畅厢,缺乏經(jīng)驗,穩(wěn)定性低氮昧。
踩坑體會:初期快速架搭完成基本人員構(gòu)架后框杜,要開始引入3年以上工作經(jīng)驗的資深隊友,形成高低搭配的人才梯隊袖肥。
Ending
萬事開頭難咪辱,當(dāng)然遇到的困難遠(yuǎn)不止這些,資源匱乏四個字在0到1的過程中貫穿始終椎组,事情應(yīng)該是怎樣在絕大多數(shù)情況下只是美好的想象梧乘,而現(xiàn)實是怎樣用好手里的資源盡可能的接近這個想象÷睿看清目標(biāo),認(rèn)清現(xiàn)實和保持信心是初創(chuàng)團(tuán)隊最重要的三項能力夹供,而這三項能力的綜合表現(xiàn)是灵份,能夠認(rèn)清當(dāng)下最需解決的問題并解決問題。
是的哮洽,這只是一個0到1的團(tuán)隊填渠,完成的事情還非常少,后面有1-99都沒有開始做鸟辅,所以請各路大神不要吐槽氛什。寫下這篇我們的故事,一是給初創(chuàng)團(tuán)隊的朋友們提供參考匪凉,二是給我們自己做一個復(fù)盤枪眉,反思一路上的成敗得失。
最后感謝陪伴一路走過來的隊友們再层,“成年人的生活里沒有容易二字”贸铜,共勉!