雅虎架構師談MapReduce和Hadoop的未來
作者 Scott Delap 譯者 Terry
Hadoop是一個開源的分布式計算平臺,它主要由MapReduce的算法執行和一個分布式 的文件系統等兩部分組成。InfoQ曾經刊登過一 篇Jeremy Zawodny寫的有關Hadoop速度提升的綜述性文章。這次InfoQ的資深Java編輯Scott Delap和Hadoop項目負責人Doug Cutting進行了一次專訪。在這次InfoQ的專訪中,Cutting論述了Hadoop是如何在Yahoo中被使用的,以及Hadoop發展中遇到 的挑戰和Hadoop項目未來的發展方向。
Scott Delap(SD):Hadoop已經作為正式產品服務于Yahoo的某些功能了嗎?如果還沒有,有什么計劃讓Hadoop從一個實驗性的產品向核心基礎 組件遷移?
Doug Cutting(DC):Yahoo 定期在搜索業務上使用Hadoop來提高其產品和服務,如排名功 能和目標廣告等。除此之外,也有一些直接使用Hadoop進行數據生成的案例。Hadoop的長期目標是提供世界級的分布式計算工具,也是對下一代業務 (如搜索結果分析等)提供支持的Web擴展(web-scale)服務。
SD:Yahoo負責Hadoop項目的團隊的規模有多大?除了Yahoo內部人員,其余還有多少活躍的代碼貢獻者?
DC:Yahoo有一個專項小組直接負責Hadoop的開發工作,而Apache開源項目的活躍貢獻者一般都有 自己的第一職業。即使如此,仍然有一些非Yahoo工作人員每月、每周甚至每天為Hadoop做出自己的貢獻。
SD:相比Google,Yahoo堅持在可擴展的基礎架構上采用不同途徑。雖然Google已經發布了眾多技術方面的論文,但其 對普通大眾意義并不十分明顯。而為什么你覺得開源是正確的一個方向?
DC:開 源項目得到最好的運行需要滿足兩個條件:第一,每個人對項目所能做的事有共同的認識。第二,有一套易理 解的文檔解決方案。由于基礎架構軟件在眾多領域有廣泛應用,所以此類開源軟件發展的格外好。而Yahoo就在使用并支撐FreeBsd、Linux、 Apache、PHP和MySQL等此類基礎架構軟件。讓任何人都可以利用Hadoop來幫助Yahoo改善現狀并提高目前建立大型分布式系統的水平。源 代碼僅僅只是難題的一小部分,除此之外,一個組織還需要有個非常強大的工程師團隊來解決重大難題并使其付諸實踐。有正確的發布和管理基礎架構的能力也顯得 非常的重要。目前幾乎沒有哪家公司能擁有所有這些必需的資源。所以,軟件工程師們都愿意為開源項目工作,他們能在巨大的社區中遇到許多志同道合的朋友,學 到一些被共享的技巧并應用于今后的其他項目中。這樣優秀的社區環境很容易培養出許多新的杰出工程師。Yahoo和Hadoop社區都受益于這種合作的機 制,更加懂得大規模的分布式計算所需要的東西,并且把我們專家的意見和技術都共享出來建立一個人人都能使用和修改的解決方案.
SD:回到技術的本身,近年隨著Hadoop的不斷發展,你覺得影響其速度和穩定性的要素是什么?我發現現在500條記錄的排序基準比去年快上了20倍,這 是由于某個部分巨大的提升所至還是由多個部分的共同優化所帶來的結果?
DC:在處理Web擴展服類軟件過程中,隨著使用此解決方案的其它公司和組織的不斷增加,Yahoo發現它們都 獲得相似的性能。Yahoo決定將其開源,而非以私有軟件的形式繼續發展。所以Yahoo雇傭了我來帶領這個項目。至今,Yahoo已經貢獻了絕大部分代 碼。
至 于速度的提升,是過去幾年努力成果的一個總和,并且已經經過了反復的試驗。在給定規模的服務器集群中,我們能讓系統非常平穩地運行,然后試驗在兩 倍于這樣規模的服務器集群中運行會發生什么情況。我們的目標是讓性能隨集群規模增長成線性增加。我們從這個過程中不斷學習,并且再次增大集群的規模。每增 大一次集群的規模,更多數量和更多種類的錯誤也將相應增加,因此穩定性將是個重大問題。
每一次這樣做,我們都能明白哪些東西是可以達到的,哪些經驗可以貢獻給開源的網格計算公共知識庫的。隨著服務器集群規模的增大,各種新的故障不斷產 生,罕見的錯誤變為常見的錯誤,這些情況都是需要我們解決的。而這個過程所學到的又將影響到我們下一次這樣反復的試驗。
SD:去年起Hadoop就已經可以在Amazon EC2上運行了。這將使開發者可以快速搭建起他們自己的服務器集群。那么管理這樣一個集群、HDFS以及MapReduce的處理還有什么額外的工作需要 做嗎?
DC:Yahoo 有一個名為HOD(Hadoop on Demand)的項目,它可以讓Mapreduce運行在很普通的機器上。這還是一個正處于建設過程中的開源項目。由于運行一個大型的集群是非常復雜和受 資源限制的事,所以Amazon EC2對于普通民眾來說,是一個非常不錯的接觸Hadoop的平臺。
SD:在Hadoop功能上你如何客觀地和Google已發布的產品進行比較?在從程序單元到數據單元的優化解決過程中,有什么新 特性嗎?
DC:近 十年來,很多大型公司(包括Yahoo)和一些理論研究機構都在對大規模分布式計算軟件進行開發和研 究。而最近隨著經濟計算在消費市場的顯現,這種開發和研究的興趣更加高漲。與Google不同,Yahoo采取了開發完全開源的Hadoop,讓任何人都 可以免費使用和修改這個軟件。Hadoop的目標已經延伸到超越目前現存的任何技術復制品的地步。我們將致力于把Hadoop建立成一個對任何人都有用的 系統。我們已經實現了大多數Google已經發布的東西,而且還加上很多其它沒有提及到的。Yahoo在這個項目中將扮演領導者的角色,因為它的目標和我 們的需求是非常吻合的,并且我們明白共享這個技術給世界的意義。
DC:0.14.0版就將有多達218處的變化。 其中對系統最大的改變是我們直接改良了數據的完整性。這是一個對用戶來說看不 見的變化,但是它對于整個系統的未來發展來說是很有效的。由于數據和集群的規模,無論是內存還是磁盤都很頻繁地出現問題,這將是個危機。我們還添加了改變 文件時間的功能,還有一些MapReduce的C++ API函數,還增加了主機的一些其它特性,以及bug的定位和修復。
Hadoop 0.15.0也正在成型,計劃會有88處修改。 這個版本會增加對文件系統的認證和授權,讓同一服務器集群之間的信息訪問變得更加 安全。我們還計劃修訂大量的Mapreduce的API。0.15.0將是一個很有難度的版本,因為它需要用戶對他們的應用做出修改,我們希望能一步到 位。我們還希望0.15將是1.0以前的最后一個版本。在1.0以后我們就將會非常保守了,不會再突然做出巨大的改變。我們同樣也會非常關注向后兼容的問 題,對于1.0版本來說,這將顯得更加的重要。任何為1.0版編寫的代碼也將繼續可運行在1.X以后的版本。所以我們需要保證我們現有的API能輕松地擴 展到以后的版本。我們將試著在0.15版本就將這些落實。
查看英文原文:Yahoo's Doug Cutting on MapReduce and the Future of Hadoop