韓冀中:淺談Hadoop實戰(圖靈訪談)

暘谷發表於2011-11-19

圖靈訪談之五:韓冀中專訪

11月16日,圖靈社群採訪了《Hadoop實戰》(Hadoop in Action)一書譯者韓冀中博士,韓老師結合自己使用和開發Hadoop的經歷,暢談了他對Hadoop應用的看法,並對如何學習Hadoop提出了寶貴的建議,以下為訪談內容。

人物簡介:韓冀中

博士,中國科學院計算技術研究所副研究員,研究生導師,長期從事並行分散式計算領域的科研工作。國內早期的Hadoop使用者之一,有豐富的相關應用開發經驗。

研究方向: 大規模資料處理、並行程式除錯、計算系統虛擬化。

圖靈社群:能不能先介紹一下您目前的工作,和您接觸Hadoop的經歷。

韓冀中:我現在是中科院計算所的一名科研人員,有一個十幾個人的團隊,主要研究大資料的處理。我是在2008年接觸Hadoop平臺的。當時因為專案需要,希望能夠在分散式系統上搭建地理資訊系統。我們就嘗試了在Hadoop平臺上做空間運算元的平行計算,並用HBase來支援Web地圖瀏覽,後來也使用HBase來管理GPS這樣的空間時序資料。在這個過程中,逐漸熟悉了Hadoop。這兩年,我和實驗室的王偉平、塗碧波老師的團隊一起,與騰訊、國家電網等企業進行合作,開展了許多大資料平臺的工作,或多或少都使用了Hadoop。

圖靈社群:請問目前雲端計算、資料探勘等等技術發展到了什麼程度? Hadoop在其中又扮演怎樣的角色?

韓冀中:要講雲端計算、大資料和Hadoop,都很難不說Google,Google把資料當成是一種可以賺錢的資源,它建了許多資料中心來運維基於資料的服務,採用了許多有革命性的技術。實際上,對於任何公司和企業,資料都是非常重要的資源。現在,Google、微軟、Amazon都有大資料平臺,但是並不是所有的企業和公司都有能力來構建這樣的系統。這就是為什麼Hadoop會出現並迅猛發展的原因了。

Hadoop參照了Google的設計,但還是有許多不同之處。作為一個開源平臺,而不是面向某個公司的業務來定製,Hadoop是非常成功的一個系統。但是,相對於Google等公司的平臺,Hadoop在具體設計和實現上並不是最優的。但它擁有一個強大的開源社群,為大家提供了了一個穩定可靠的系統,還有許多成功的應用案例,這就使得它幾乎是開源雲端計算平臺的唯一選擇。有些人可能沒聽說過Google的Pregel、Bigtable或者微軟的DryadLINQ,但大多知道Hadoop、HBase和Hive。

分散式系統的歷史其實很長,Hadoop是第一個能讓普通大眾完全掌握分散式系統的技術,它降低了分散式系統的門檻。過去,如果企業有處理大量資料處理的需求,要選擇搭建分散式環境,就必須投入很高的成本,買昂貴的機器,還要求這方面的專業人才。而現在買差不多的機器,搭建一個Hadoop叢集就可以了。當然不是說Hadoop對硬體的要求就非常低,而是因為現在一臺簡單的刀片能力也很強了。現在用一個幾十萬的平臺,就可以做很多的事情,Hadoop把運維分散式系統的門檻降低了。就像Unix和Linux的關係,Unix並不大眾化,而Linux則是一個大眾化的東西,大家都可以去修改它,應用也非常廣泛,從這一點上看,Hadoop是一個非常了不起的系統。

圖靈社群:Hadoop在近些年經歷了哪些變化呢?未來又會有哪些規劃?

韓冀中:就像《Hadoop實戰》這本書裡提到的,Hadoop在0.20版本中引入了一個新的MapReduce API,作者預計在0.21中舊的API會被廢棄。但實際上因為新API還有許多不完善的地方,所以我們現在看到0.21中依然保留了舊的API。按計劃0.23版本會出現MapReduce 2.0,要說清楚這個,需要先說說MapReduce的含義。

Hadoop中的MapReduce其實包含了兩個含義,一個是就是剛才講的——給使用者的程式設計模型API,另一個是指內部MapReduce的執行框架,負責資源排程和資料通訊管理。現有的Hadoop中,MapReduce的程式設計模型和執行框架是繫結死的,而在MapReduce 2.0中,會把JobTracker分為ResourceManager和ApplicationMaster,分離程式設計模型與執行框架。這相當於把應用和資源分別管理,讓系統架構更為靈活高效,就可以在一個平臺上支援多個程式設計模型,適應更多的應用。對於Hadoop而言,這是的一個非常大的修改。

除了MapReduce外,未來的Hadoop版本還會在HDFS、HBase、Hive等方面做出許多改進,在Hadoop官方網站上可以瞭解到很多相關的資訊。

圖靈社群:對於Hadoop是NoSQL應用程式框架這一概念,能否談談您的理解?

**韓冀中:**Hadoop是一個複雜的系統。Hadoop中的HBase是一種NoSQL系統,而Hive又是一種支援SQL查詢的工具。前者是基於列儲存技術、面向小資料塊隨機訪問的。後者是在架構在MapReduce之上、對資料進行批量處理的技術。如果訪問Hadoop的主頁,你會發現Hadoop的主專案中是沒有HBase的。因為Hadoop的主體是MapReduce和HDFS,而Hbase、Hive、Pig等都是在外圍相關子專案中的,它們共同構成了Hadoop的生態環境。再額外說一點,為什麼說Hadoop社群做得好呢?就是因為這些新開發的系統會先放在孵化器裡面,經過一定階段,當它能夠跟Hadoop的生態環境完美結合的時候,才會遷移進這個生態環境裡,成為Hadoop的子專案。

HBase是一種發展得比較早的NoSQL系統,最早源於Google的BigTable架構,它的擴充套件性非常好。而且HBase可以和Hadoop進行緊密的融合,在執行MapReduce程式的時候,它能夠保證良好的資料區域性性。在這方面,它的優勢很明顯。

圖靈社群:Hadoop有競爭對手嗎?

韓冀中:我認為在大資料的批量處理方面,Hadoop在開源社群中沒有敵手。這並非因為Hadoop足夠完善,而是因為它有一個足夠好的社群支援。

圖靈社群:您近年來一直在研究基於key/value與MapReduce的儲存計算框架,也是國內最早使用Hadoop的人之一,能否結合您的經歷,談談Hadoop實際應用的情況?

韓冀中:我用Hadoop經過了大概三個階段:第一個階段,寫MapReduce程式來解決應用問題,包括平行計算、資料儲存和動態擴充套件等。第二個階段,是跟企業結合,做一些跟Hadoop不一樣的東西。現在是第三個階段,根據使用者需求,把Hadoop作為一個元件來使用,這種情況下會與其他系統進行整合。

現在,這個平臺最大的優勢是能夠處理大量無結構、半結構化的資料,而網際網路企業的很多資料是這種型別的,他們的使用也能夠證明這個平臺的價值。如果在網際網路以外的領域,Hadoop的效能不見得就比資料庫平臺好,衡量它的效能還是跟應用有關係。對於Hadoop的評價,真正更有發言權的是那些網際網路公司,他們每天都在執行這些系統,對運維的感受更直接。

我們後來使用Hadoop不是在網際網路領域,而是在其他一些領域,比如電網,他們的需求跟網際網路公司的需求是不一樣的。跟這些公司的業務需求結合的時候,涉及的就不只是Hadoop這一個平臺,同時要考慮怎麼跟其他平臺結合。我們經歷過這種情況:企業過去是用資料庫的,現在想遷移到這個平臺,那麼首先要解決的是基於SQL應用的切換。Hadoop本身有Hive這個工具,可以用來進行無縫切換,不過這樣做以後,可能會發現效能上有些令人失望。

其實大家一直在討論Hadoop跟資料庫比較,哪個更好一些。實際上SQL資料庫目前已有的產品,效能是非常好的。根據我們的實驗測試,在單點效能上,Hadoop可能是比資料庫要差的。Hadoop更多靠規模來取勝。很多人說Hadoop比資料庫效能好多少,有可能是因為資料庫沒有調好。資料庫用得好的,提供的效能也是能支援系統開發的,關鍵看應用需求。目前在真正的企業環境中,不會只用Hadoop,還會保留資料庫。我認為這兩者不是誰取代誰的關係,Hadoop並不會一統天下。

圖靈社群:您瞭解國內開源愛好者對Hadoop社群的貢獻嗎?

韓冀中:具體不太瞭解,總體上看,國內的人目前還比較少。但我認識計算所查禮老師的團隊的何永強,就是一個Hadoop Committer。

開源社群其實有賴於穩定的團體來運作,才能把它做好,並保證系統的穩定。Hadoop這樣的離線系統對效能的要求不是最高的,更注重穩定性。Hadoop目前有Yahoo、Facebook、Cloudera等公司的參與,這種大公司採用它來管理叢集,本身就具有很大的說服力。

圖靈社群:《Hadoop實戰》一書最後案例分析中有中國移動的案例,其實外文書使用中國案例的並不多見,您怎麼看待這一情況?

韓冀中:《Hadoop實戰》最後的幾個案例是這本書很有特色的地方。的確,國外的書對中國的案例確實引用很少,這也從側面說明這幾年Hadoop在國內的發展很快。目前雲端計算應用的研究異常火熱,一定會影響國內的大型企業和機構。Hadoop的核心技術是參照了Google這個網際網路公司,所以目前比較成功的Hadoop應用主要是在網際網路領域。而其它行業使用Hadoop,還需要與自身業務特徵相結合,因此在應用的過程中還需要付出很大的努力。這也是我們目前和電網等企業合作的主要工作目標。

圖靈社群:對於Hadoop的學習者,您有哪些建議呢?《Hadoop實戰》這本書有什麼樣的特點呢?

韓冀中:Hadoop是個生態系統,不同學習者會對這個系統有不同的應用需求。我自己是從程式設計開始逐漸瞭解Hadoop的,我覺得這是一種可行也比較快的進階方法。可能大多數人都是通過看官方文件或參考書,然後結合自己的工作熟悉Hadoop的。目前希望瞭解和使用Hadoop的人來自各個行業,甚至不同專業。相對於這個龐大的使用者群而言,Hadoop的教材顯得太少了。Hadoop的官方文件的確是非常全面的,對於高階使用者而言,應該經常檢視,瞭解最新的更新。但對於剛剛瞭解Hadoop的讀者,通過一本系統的書籍來學習是更好的,而且會大大縮短學習的時間。

《Hadoop實戰》這本書除了講解使用Hadoop所需的基礎知識,還給出了編寫和執行Hadoop資料處理程式所需的實踐技能,最後還探討了Hadoop之外更大的生態環境(Hive、Pig、HBase等)。我很欣賞作者的這個結構,我想這也是讀者非常容易理解的一種結構。如果把這本書當成一部小說來看的話,MapReduce就是貫穿本書的主線。它並不是一本包羅永珍的系統工具書,更像是一本簡明的程式語言手冊,有一點How To的意思。它在MapReduce程式設計方面也講得比較深入透徹,有些內容來自於作者的寶貴的實踐經驗,是非常值得一讀的。

那些希望實際使用MapReduce程式設計的讀者,一定會很非常喜歡這本書。這本書給了許多資料的下載連結和一些實戰練習,建議大家有時間做一做,會對MapReduce這個語言有更多的體會。學計算機不是一門科學,更像是一門藝術,真正有效的學習還是要從動手寫程式碼開始。

如果想了解更多資訊和應用經驗,大家可以關注一些會議,比如國外的Hadoop World,國內的Hadoop in China等等,每年都有一些很好的技術講座,往年的也大多可以在一些視訊網站上找到。

圖靈社群:今年的Hadoop中國2011雲端計算大會就要召開了,主題是“海量資料掘寶”,您能否提前給我們透露些大會的看點?

韓冀中:這個會議是計算所查禮老師組織的,具體我不太清楚。不過據說今年請了Doug Cutting,重量級人物,非常值得期待。

圖靈社群:據悉史丹佛和卡內基•梅隆等一流大學已經開始將Hadoop引入他們的電腦科學課程,國內院校的情況如何?

韓冀中:近幾年我們在招生中,還沒有看到本科生有開設過這方面課程的。計算所的詹劍鋒老師在中科院研究生院開設了一個相關課程,其他院校不太瞭解。

圖靈社群:《Hadoop實戰》一書在尋找譯者的過程中,王斌老師力薦我們請您翻譯。這是您第一次獨立完成一本書的翻譯工作,能夠談談這方面的感受?

韓冀中:非常謝謝王斌老師的推薦,讓我有機會能夠參與到這本書的翻譯中。我很喜歡這本書的內容組織,很榮幸能夠通過我的努力,把這本書介紹給國內的讀者。

我是做科研的,科研工作者總是想把東西做得更完美一點,所以開始的時候特別細,每一個和原文字句不太一致的地方都會糾結半天,但後來慢慢學習翻譯這件事,可能對於科技書來說,更追求準確表達技術本身,後面翻譯的時候就調整了思路,更注重這方面。我現在再看一些文學方面的翻譯書,會從翻譯角度去體會,確實很不一樣。翻譯還是挺有意思的,自己做的東西一直在累進,之前沒有這種長時間閱讀和寫作的經歷,如果再有合適的書,我還是願意來做的。這次翻譯的過程對我幫助也比較大,起碼寫東西更快了(笑),我也想建議別人來做一次這樣的工作。

因為這本書都是我在業餘時間完成的,加之工作繁忙,經常打斷進度,所以翻譯得非常慢。在翻譯的過程中,得到了圖靈多位編輯的幫助,沒有他們的支援和激勵,我想我是無法完成這個工作的。在翻譯的後期,經常是每翻譯完一部分後,就發給編輯部。對我而言,這樣做很有效。我想如果編輯部能夠鼓勵譯者更多地進行有效溝通,特別是對翻譯新手,不僅可以及時改正翻譯中的錯誤,也可以推動翻譯工作的進度。

圖靈社群:感謝韓老師抽出時間接受圖靈社群的採訪。


更多精彩,加入圖靈訪談微信!

相關文章