雷布斯,謙遜的男神——暨小米大數據實踐分享
上周末非常有幸和同學一起參加武漢大學北京校友會,當聽到雷軍要去的時候,就迫不及待地讓我同學幫我報名,由於現場參會人員太多,最終也算好不容易報上名了參加了志願者。先來說和武大不解之緣吧,高考沒能如願進入武大。在研究生期間,由於機緣,有幸能夠在武漢大學遙感信息工程學院學習接近一年。武大真是一個優秀的學校,在那邊期間認識的幾個師兄師姐以及師弟師妹,都給人一種做事很踏實的感覺。此處必須放幾張武大照片鎮樓,哈哈哈
還記得聽到雷軍要來,大家都在門口等了很久,迫不及待地想和雷總合影。那種場面真是第一次見到,大家追了一路,為了和師兄合影。突然感覺有種網紅的感覺,哈哈哈,然後校長說讓師兄吃個飯,大家都跑到餐桌上和師兄合影,終於校長把大家都轟走了。看著師兄低著頭吃飯,突然有一種很難過的感覺。是啊,雷軍也是人,不是神,人都要吃飯睡覺的,看著師兄,竟然不忍心強行要求與其合影。於是在桌子的對面拍了幾張師兄的照片,順便和師兄隔著桌子合了個影,也算是與雷軍同框了。雷軍,謙遜的男神
雖然躋身首富行列,但是在我們這群師弟師妹面前還是表現的如此謙遜,還記得雷軍去年給學校捐款捐了一億差一塊錢,當時還不太理解,後來才知道泰康集團CEO陳東升學長給學校捐了一個億,所以雷師兄為了不搶陳東升師兄的風頭,少捐了一塊錢。上面是打廣告部分了,下面來和大家分享一下小米在大數據方面的實踐了,乾貨滿滿。上面是打廣告部分了,通過和盧學裕師兄的交流,師兄之前在小米任職,現在自己創業,下面來和大家分享一下師兄介紹的小米在大數據方面的應用,乾貨滿滿。小米數據工場的技術架構
盧學裕表示, 小米數據工廠跟各家的大數據平台、數據系統有很多類似之處也有自己獨特的點。工廠整個底層基礎平台建立在Hadoop體系,除此小米跟Cloudera合作也非常緊密。小米整個底層平台會有專門平台組去開發,最底用的HDFS,上面用的Hive、Spark和Mapreduce這些是混合到一個亞運集群上。Impala小米很早就在用,是一個很重的計算角色。 小米數據工場總體結構如上圖, 上半部分是自研的數據工廠,是為最頂業務層提供服務的。數據工廠主要是提供數據可視化、計算任務管理、數據管理、許可權管理、任務調度、數據共享等服務。盧學裕表示,公司越大就更希望數據能夠開放給公司的各個部門,數據可相互利用。但不能沒有任何限制的去使用,所以需要對數據許可權做管理。任務調度是整個工廠裡面最重的部分。數據共享就是類似非常火的用戶畫像類數據,還有其他公共數據如IP庫,這些數據具有公共特點,就不用重複計算,就可以通過數據共享的方式在各個團隊之間使用這些數據。數據管理,分為數據預覽、元數據、數據源三部分。數據預覽是每個團隊用來互相了解數據的。元數據,就是數據使用過程中要把非結構化的數據轉換結構化的數據。元數據管理就是去了解每個欄位的含義和機器解析。機器解析包括Mapreduce程序可直接讀文件可解析,如用Impala、Spark和Hive同樣也能解析,而不需要每個使用者再去格式化,再去解析這個數據。但面臨的問題是數據一旦出現格式的轉變或者某些欄位的調整,以前任務可能都會出現問題,故一定要統一管理的地方。數據源,數據管理非常核心的是數據集成,能夠把各個地方的數據集成到平台上來。
HDFS目錄管理。有公共數據空間、業務數據空間、團隊數據空間、個人數據空間、Yarn計算空間五部分。(1)公共數據空間,是用來把公共數據放到上面,把維護許可權和讀的許可權分開。這樣大部分都是讀這個空間,空間數據安全性等級相對來講比較低,可以付給更多人。(2)業務數據空間,因為每個業務數據的增長量是不一樣的,甚至有些業務會出現如剛上來一個新功能,數據量迅速的增大,有的甚至會出現某個團隊的數據增加,導致把整個集群空間全吃掉,又沒有事先招呼。這種情況下做好業務間的限額配額是非常重要,防止某一個團隊的增長導致整個集群出現一些問題。(3)團隊數據空間,就是把許可權控制到個人,用來幫助做團隊之間的數據協作。如把線上任務會放到團隊賬號中去,團隊賬號的許可權要做好控制,許可權不隨便開放。團隊人員發生變動後,整個團隊任務不用再去切換賬戶而導致交接的複雜性。(4)個人數據空間,數據工程師、開發工程師等是需要做一些調試或做自己的計算這就要給這些人一定空間的同時對其數據做配額。這是為了防止這些人過多的使用資源和為了空間不夠需要清理數據時,哪些數據要清理,哪些數據不能清理一目了然。這樣限制空間的情況下,這種廢文件或者垃圾文件的積累會相對較少。(5)Yarn計算空間,做配額限制呢是為了杜絕空間濫用的問題。盧學裕舉例道,「之前發生過一件事,某人在Reduce裡面寫了一個死循環,不停的輸出數據,導致整個集群很快就去報警。後來才發現這個計算造成的一些問題,最後差點導致那些日誌上傳、數據的寫入都出問題,幸虧處理的比較及時。」所以,Yarn計算空間是需要做一個配額限制,防止對整個集群造成過大的影響。盧學裕表示,小米數據存儲格式統一採用的Parquet,優點在於其使用的是列式存儲,支持Mapreduce、Hive、Impala、Spark和讀取快佔用空間少。客戶端數據接入兩種模式優劣勢
客戶端數據接入。客戶端指的是如說Wap、App等數據,存在方式有SDK和服務端Log兩種模式。上圖為兩種模式的優劣勢。伺服器端數據源。除前端數據源外,整個處理數據時還會有大量伺服器端數據源需要處理。業務資料庫類,用ETL工具做導入。伺服器端日誌,用Scribe將數據寫入HDFS。元數據管理。當公司業務變多後,每一個數據的處理方式都有可能不一樣,這時候就凸顯出元數據管理的重要性。如視頻播放日誌,分析師希望用Hive,用Impala直接寫SQL去計算,但數據挖掘工程師就要去寫Mapreduce,寫Spark的方式去讀,去解析。元數據管理就是要做數據統一,既能夠滿足Hive、Spark、Impala,還能滿足Mapreduce。這樣一來節省大家對數據理解、執行的時間。元數據管理
如上圖,小米數據工廠是每一份數據的描述都需要在數據工廠上提交,之後數據工廠會在MetaStore中做建表的同時帶上元數據的行為,供Hive、Spark、Impala使用。數據管理還會生成Jave Class,給Mapreduce使用。當去解析用某個數據時候,可以直接用這樣的方式把它解析成Jave類。計算管理
計算管理。盧學裕表示,計算是很重要的事情,數據管理相對來講是一次性的活,計算就是很複雜的事情。計算任務數一天達到幾千或過萬時,就會變得非常複雜。對於計算管理這快優化,小米做了如上圖的一些工作。Docker。為了管理好這些紛繁的計算框架和模型,在計算的執行方面,小米使用Docker來解決對環境的不同需求和異構問題,並且與Hive、Impala、Spark這些不同的計算模型都進行了對接,去適配不同應用場景計算不同數據的模型。另外,在不同業務場景下,同一個計算邏輯也可以選用不同的計算模型,Docker 的使用也避免了資源的浪費。比如一個計算任務每天凌晨運行,為了追求吞吐量,可以放到Hive里跑;還是同樣一個計算模型,現在就要跑,可以不用更改,就放到Impala里運行。Docker不僅解決了環境的異構,也解決了資源問題。另外,Docker的環境適應性很強,做橫向擴展會比較容易。對於數據隱私方面,小米考慮得非常重。採用Docker與自身安全策略的綜合,小米用戶數據的隱私和安全性也得到了極其嚴格的控制。
小團隊如何玩轉大數據小團隊玩大數據會面臨哪些問題?小團隊會面臨人力資源不足,技術儲備不足,時間有限等問題。面對這些問題,盧學裕在技術選型上給出如下三個建議。(1)選擇熱門技術。因為人才比較多,相對獲取這樣人才會比較容易。技術成熟,因為小團隊沒有時間去踩坑。還有幫助多,這如說網上文檔幫助、社群幫助,朋友幫助等。(2)夠用。針對一些小團隊或者初創公司的特點,業務變化特別快,也不穩定,這種情況下做到夠用就好,不需要過分的設計和採用過重的系統。盡量根據業務驅動,業務需要什麼數據就抓什麼數據。(3)演進。隨著需求的變化需要不斷的演進,包括系統演進、使用方式演進。一定要做好數據積累。盧學裕表示,無論你用什麼樣的技術,用Hadoop也好,不用Hadoop也好,一定要做好數據的積累,這是對一家數據公司非常重要的部分。這就需要提前規劃好數據,還要避免邏輯孤島。還需要注意ID問題,也就是關聯的問題。當採集了數據,卻發現沒有採用戶ID,沒有提前做好這個規劃,當算到用戶級別時候那就尷尬了。下面是我的公眾號(zgzfblog),如果想進入小米,可協助幫忙內推,直達CEO雷布斯郵箱。也想大家推薦一下hbase相關學習,大家工作學習遇到HBase技術問題,把問題發布到HBase技術社區論壇hbase.group,歡迎大家論壇上面提問留言討論。想了解更多HBase技術關注HBase技術社區公眾號(微信號:hbasegroup),非常歡迎大家積極投稿。
長按下面的二維碼關注我的公眾號zgzfblog
長按下面的二維碼關注HBase技術社區公眾號hbasegroup
推薦閱讀:
※Flink 1.5.X 初體驗之殤
※Photonic spike processing
※巨物是怎樣長成的?
※羅永浩的「為夢想窒息」
※手勢仿生機器人