翟周偉,資深Hadoop技術專家,專注於Hadoop&大數據,數據挖掘,自然語言處理領域,目前就職於百度。2009年,利用Hadoop構建商業級大數據系統,是國內該領域最早的一批人之一;負責設計多個基於Hadoop的大數據平臺和分析系統;2011年合著出版《Hadoop開源雲計算平臺》,並在自然語言處理領域申請過一項發明專利;2015年,完成著作《Hadoop核心技術》一書。
日前,CSDN記者採訪了翟周偉,請他解讀Hadoop發展現狀、特性及發展前景,分享創作《Hadoop核心技術》一書的靈感來源以及經驗感悟。
翟周偉:不斷學習、不斷思考,享受一章一節帶來的喜悅
CSDN:首先請介紹下自已、目前所在公司以及負責的領域。
翟周偉:北京郵電大學研究生畢業,目前任職於百度,主要從事網頁搜索相關的大規模數據挖掘和自然語言處理領域相關研發工作。
CSDN:Hadoop在百度主要運用在哪些領域?使用情況是怎樣的?
翟周偉:Hadoop在百度的應用領域主要包括:大數據挖掘與分析,日誌分析平臺,數據倉庫系統,用戶行為分析系統,廣告平臺等存儲與計算服務。
目前百度的Hadoop集群規模已經超過數十個至多,單集群節點數目超過5000臺,每天處理的數據量超過8000TB。同時百度在Hadoop的基礎上還開發了自己的日誌分析平臺、數據倉庫系統,以及統一C++編程接口,並對Hadoop深度改造,開發了性能更強的HCE(Hadoop C++ Extend Systerm)系統。
邂逅Hadoop
CSDN:你是從什麼時候開始接觸Hadoop?作為一名Hadoop技術專家最吸引你的是什麼?有沒有背後的故事分享給大家?
翟周偉:我從2009年9月份開始接觸Hadoop,Hadoop已經成為工業界大數據領域的事實標準,最吸引我的是最初Hadoop在大數據處理領域給我的震感,因為在使用Hadoop之前如果要處理上百TB的數據是一件非常困難的事情,首先需要考慮如何將這些數據存儲下來,然後還需要考慮如何劃分,以及數據容錯性等複雜問題,而要完成這樣的工作沒有1個月的時間是很難搞定的,但是在Hadoop的幫助下一天甚至幾個小時就可以完成從程序開發到最終數據產出,而且想想自己可以在很短的時間內操作成千上百臺的集群來處理上百TB的數據,還是很震撼的。
CSDN:在國內,你是利用Hadoop構建商業級大數據系統領域最早的人選之一,可以說是敢於吃螃蟹的第一人。那麼,你是如何成為核心成員的?在開發期間有沒有遇到過什麼困難?又是如何克服的?
翟周偉:早在2009年的時候我們就嘗試使用Hadoop技術為中國電信研究院,移動研究院等機構構建大數據云平臺並作為生產平臺為線上業務提供雲存儲與計算分析服務。這在當時來講是國內將Hadoop落地應用的最早實踐者之一。
在最初參與開發這些項目的時候我還並不是核心成員,而我要做的就是在項目中不斷學習並積累Hadoop和大數據相關知識,最重要的就是在項目開發過程中證明自己,證明自己有足夠的知識積累和能力完成項目並超出預期,當然在這個過程中也會遇到一些困難和挫折,例如數據的產出和預期不符,系統性能遇到瓶頸等問題,在面對這些問題的時候首先就是不能怕,對自己能解決這些問題要有足夠的信心,然後就是認真分析問題,一步一步DEBUG定位問題,最終就可以解決掉這些問題,這也是一個艱苦的工作,不過我更享受成功後的那種喜悅之情,因為我喜歡技術挑戰。
Hadoop發展現狀、特性及發展前景
CSDN:你怎麼看待國內外的Hadoop發展現狀?可否預測下Hadoop未來的發展前景?
翟周偉:目前Hadoop可以說是已經成為工業界大數據領域的事實標準,在國外主要以Yahoo、Facebook、EBay、IBM等為代表;在國內則以百度、騰訊、阿里等網際網路公司為主。而Hadoop作為開源軟體,這些大公司的使用和改進迭代進而又完善並推動Hadoop的進一步發展,因此Hadoop的發展是離不開這些網際網路公司的使用,從本質上看還是因為網際網路的快速發展導致了海量數據的分布式存儲和計算需求,而Hadoop正是為這樣的需求提供了非常好的解決方案。
對於Hadoop的發展前景我從以下幾個方面談談:
第一個方向就是統一資源管理與調度方向,目前各大網際網路公司商用的Hadoop集群還是以Hadoop-1.X版本為主,Hadoop-1.X版本的有效性和穩定性已經得到驗證,但是Hadoop-1.X也存在很多問題,例如資源分配以槽位為基本單元,沒有考慮到應用實際需要的內存,CPU等資源;還有就是Hadoop-1.X僅僅只支持MapReduce模型,計算資源利用率不高,一個MR任務只能包含一個map和一個reduce任務,而實際需求往往是一個DAG任務。針對這些問題社區版Hadoop-2.X提出了YARN框架,在資源管理層來解決這些問題,同時各大商用發行版以及網際網路公司也提出類似的框架來解決Hadoop-1.X中的問題。
第二個發展方向就是Hadoop高可用性解決方案,目前的Hadoop還是單Master節點設計,因此集群的規模受到主節點的硬體配置限制,同時可靠性上存在單點故障(SPOF )問題,這一點目前各大Hadoop商業發行版以及各大網際網路公司都在研發多Master節點設計的解決方案,因此也是未來重點方向。
第三個發展方向就是Hadoop生態系統集成,目前Hadoop已經發展為一個完備的生態系統,這個生態系統最底層以HDFS和MapReduce為核心,上層為各種存儲,計算,分析等應用系統,如何將這些系統很好的集成起來形成一個類似完善的分布式作業系統和雲計算應用系統是一個非常誘人的發展方向。
第四點就是靈活性上,目前的Hadoop為用戶提供了非常便利的並行計算框架,但是這個框架本身的流程過於複雜,用戶實際的需求往往很簡單,例如Hadoop中在map的輸出和reduce的輸入都需要進行排序,而實際上並不是所有的任務都需要排序,因此對於那些不需要排序的應用就會造成資源的浪費又消耗了時間。如果可以提供是否配需的可控制參數就可以很好的解決類似的問題。因此Hadoop的靈活性上也是一個發展方向。
CSDN:Hadoop與Spark相比,兩者之間有哪些異同點?各自的優勢是什麼?此外,Hadoop與Spark都支持容錯性,Spark在容錯性方面是否比Hadoop更具優越性?你怎麼看?
翟周偉:在基本原理上:Hadoop和Spark最大的區別在於Hadoop是基於磁碟的大數據批處理系統;而Spark是基於彈性分布式數據集(RDD,顯式地將數據存儲到磁碟和內存中)。在模型上,Hadoop以MapReduce模型為核心,而Spark除了map和reduce函數操作之外的很多函數操作,諸如join、groupBy、reduceByKey等。
在優勢上,Hadoop可以處理超大規模的數據,適合日誌分析挖掘等較少迭代的長任務需求,同時Hadoop很好的結合了數據的分布式存儲和計算;而Spark適合數據挖掘,機器學習等多輪迭代式計算任務,Spark本身並沒有提高數據的分布式存儲解決方案,還需要依賴HDFS等第三方存儲系統。
在容錯性上需要考慮兩個方面,第一就是數據容錯性;第二就是節點容錯性。Hadoop在數據容錯性上考慮的很全面,從HDFS本身的冗餘複製機制,到安全模式,數據校驗,元數據保護,快照機制等,在節點容錯性上Hadoop從資源調度層次來解決。而Spark在數據容錯性上是建立在RDD概念之上,當一個節點出現故障時,Spark會根據存儲信息重新構造數據集。因此Spark在容錯性上並不比Hadoop具有優越性,應該是在容錯性上Hadoop考慮的更全面,而Spark更加在意處理數據的效率和響應時間。
CSDN:Hadoop已經成為大數據工業級的標準,有很多組件,比如Hive、Hbase、HDFS等,能說說各自的優缺點以及適合的場景嗎?
翟周偉:優缺點以及適應場景如下表格:
Hive
Hbase
HDFS
優點
提供了類似SQL的 HiveQL語言進行數據查詢。
基於HDFS以多維度排序的映射表形式,key-value存儲檢索非常高效。
接口簡單,使用方便。
缺點
延時大,大規模數據後置處理,數據的前置處理比較簡單使得數據預處理不充分。
不支持SQL類似語法,在實時性處理方面不如傳統關係資料庫。
隨機讀寫性能較差。
適合場景
適應T、P 規模的數據分析。
適合於非結構化數據存儲的分布式資料庫。
適合一次寫入多次讀取的場景。
寫書感悟——書中自有黃金屋
CSDN:2011年你參與著作了《Hadoop開源雲計算平臺》,今年你又著寫了《Hadoop核心技術》,是什麼機緣讓你想到要寫這本書的?
翟周偉:在2011年《Hadoop開源雲計算平臺》出版之後可以說是當時國內國人寫的第一本Hadoop技術叢書,但是當時這本書編寫的時間較為倉促同時相對較為簡單,而後2011年8月多進入百度之後發現Hadoop技術在網際網路公司內部已經大規模使用,而大多數研發人員都不是很熟悉Hadoop技術的使用,因為我就萌發了再編寫一本較為全面又有實戰講解的相關書籍。
CSDN:《Hadoop核心技術》這本書歷時多久完成著作的?主要適合哪些開發者?在撰寫此書中給你留下最深的感悟是什麼?
翟周偉:《Hadoop核心技術》這本書歷時2年完成,主要適合大數據Hadoop研發人員、Hadoop應用開發人員、Hadoop運維管理人員等。
撰寫此書中給我留下最深的感悟就是理解一門技術和使用專業的術語並且用通俗易懂的語言將所理解的技術講解出來是有很大不同的,而在這個寫作過程中也是我自己不斷深入學習提高的一個過程。
CSDN:你如何在進度壓力下,享受寫書帶來的快樂?
翟周偉:寫作是一個再創作的過程,因此需要大量的時間進行思路梳理,語言組織,然後才能進行真正的寫作,而這些工作時要在工作之餘利用空閒時間完成的,因此進度壓力還是蠻大的,但是這個過程也是自己不斷深入學習,不斷思考的過程,而且想想自己的書要被上千上萬的讀者學習還是很有動力的,每當完成一張一節的時候都可以帶給我一個喜悅,而我本身也是享受這樣的快樂的。
CSDN:在日常生活中你是通過哪些方式來提升自己技能的?平時的生活節湊是怎樣的?
在日常生活工作中我主要還是通過項目實戰來提升自己技能的,當發現自己不懂的原理細節時我首先想到的是從相關英文文獻或者書籍中了解基本原理,然後閱讀源碼來進一步深入理解。
平時的生活還是挺緊張的,因為搞網際網路的幾乎很少有不加班的,而百度的項目安排期往往比較緊,這樣留個自己的空閒業餘時間就很少了,因此我通常也會很珍惜業餘空閒時間。
CSDN:給學習Hadoop集群方面的開發者分享些經驗吧。
翟周偉:首先搞清楚什麼是Hadoop以及Hadoop可以用來做什麼,可以查閱相關網站介紹或者Hadoop綜述相關論文文獻資料等。
然後,可以從最經典的詞頻統計程序開始,初步了解MapReduce的基本思路和處理數據的方式。這裡建議大家直接瀏覽Hadoop的官方網站上WiKi文章,並按照WiKi一步一步完成實例的理解和學習。
接著,就可以正式學習Hadoop的基本原理,包括HDFS和MapReduce,先從整體,宏觀核心原理看,先別看源碼級別。建議這塊先閱讀Google的相關兩篇核心論文:《The Google File System》、《MapReduce: Simplied Data Processing on Large Clusters》;進一步,就可以深入HDFS、MapReduce和模塊細節,這個時候可以結合源碼深入理解,以及實現機制。
最後就是需要實戰了,可以結合自己的項目或者相關需求來完成一些Hadoop相關應用,建議一些比較經典的Hadoop英文原版技術相關叢書:《Hadoop TheDefinitive Guide》、《Hadoop inAction》、《Pro Hadoop》,以及我新出版的《Hadoop核心技術》。
CSDN現開啟圖書作者專訪欄目,歡迎推薦採訪人或自薦,來分享你的成長經歷和相關技術,相關信息請發送郵件至:xiamz#csdn.net(#換成@)。更多精彩內容,請點擊社區之星或搜索關鍵字圖書作者查看。
相關閱讀:
本文為CSDN原創文章,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)