Hadoop分佈式文件系統和OpenStack對象存儲有何不同

“HDFS (Hadoop分佈式文件系統)和OpenStack對象存儲(OpenStack Object Storage)似乎都有着相似的目的:實現冗餘、快速、聯網的存儲。什麼樣的技術特性讓這兩種系統因而不一樣?這兩種存儲系統最終趨於融合是否大有意義?”

問題提出之後,很快有OpenStack的開發者進行了回覆。本文在此摘抄了前兩名回覆進行翻譯,以供各位參考。

排名第一的答案來自RackSpace的OpenStack Swift開發者Chuck Their:

雖然HDFS與Openstack對象存儲(Swift)之間有着一些相似之處,但是這兩種系統的總體設計卻大不一樣。

1. HDFS使用了中央系統來維護文件元數據(Namenode,名稱節點),而在Swift中,元數據呈分佈式,跨集羣複製。使用一種中央元數據系統對HDFS來說無異於單一故障點,因而擴展到規模非常大的環境顯得更困難。

2. Swift在設計時考慮到了多租戶架構,而HDFS沒有多租戶架構這個概念。

3. HDFS針對更龐大的文件作了優化(這是處理數據時通常會出現的情況),Swift被設計成了可以存儲任何大小的文件。

4. 在HDFS中,文件寫入一次,而且每次只能有一個文件寫入;而在Swift中,文件可以寫入多次;在併發操作環境下,以最近一次操作爲準。

5. HDFS用Java來編寫,而Swift用Python來編寫。

另外,HDFS被設計成了可以存儲數量中等的大文件,以支持數據處理,而Swift被設計成了一種比較通用的存儲解決方案,能夠可靠地存儲數量非常多的大小不一的文件。

排名第二的答案來自Joshua McKenty,他是美國宇航局Nebula雲計算項目的首席架構師,是OpenStack Nova軟件的早期開發者之一,目前是OpenStack項目監管委員會的成員,還是Piston.cc這家基於OpenStack的公司的創始人。

Chuck剛纔詳細介紹了兩者的技術差異,但是沒有討論兩者可想而知的融合,OpenStack設計峯會上拋出了融合這個話題。簡而言之,HDFS被設計 成可以使用Hadoop,跨存儲環境裏面的對象實現MapReduce處理。對於許多OpenStack公司(包括我自己的公司)來說,支持Swift裏 面的處理是路線圖上面的一個目標,不過不是每個人都認爲MapReduce是解決之道。

我們已討論過爲HDFS編寫包裝器,這將支持OpenStack內部存儲應用編程接口(API),並且讓用戶可以針對該數據來執行Hadoop查詢。還有一個辦法就是在Swift裏面使用HDFS。但是這些方法似乎沒有一個是理想的。

OpenStack社區方面也在開展研究開發方面的一些工作,認真研究其他替代性的MapReduce框架(Riak和CouchDB等)。

最後,現在有別的一些存儲項目,目前“隸屬於”OpenStack社區(SheepDog和HC2)。充分利用數據局部性,並且讓對象存儲變得“更智能”,這是預計會取得進步的一個領域。

發佈了23 篇原創文章 · 獲贊 6 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章