天天看點

在雲端存儲Apache Hadoop的資料--HDFS vs S3 Round 1 - 擴充性(Scalability) Round 2 - 高持久性(Durability) Round 3 - 保留(Persistence) Round 4 - 價格(Price) Round 5 - 表現(Performance) Round 6 - 安全性(Security) Round 7 - (限制)Limitations Tonight’s Winner(今晚的勝利者)

   Ken 和 Ryu 既是最好的朋友也是《街頭霸王》系列遊戲的最大競争對手。當Hadoop資料存儲在雲上的問題出現時,HDFS(Hadoop Distributed File System )和S3(Amazon’s Simple Storage Service)的競争就開始了。

   雖然Apache Hadoop以前都是使用HDFS的,但是當Hadoop的檔案系統的需求産生時候也能使用S3。Netflix的 Hadoop data warehouse 利用這個特性把資料存儲在S3上而不是HDFS上。為什麼 Netflix 選擇這種資料體系? 為了了解他們的動機讓我們來看看HDFS和S3是怎麼做的吧,戰鬥開始!

Round 1 - 擴充性(Scalability)

HDFS 依賴本地的存儲隻能橫向擴充. 增加一個存儲區域就意味着不僅要加一個更大的硬碟驅動器來擴充節點,并且還要在叢集上面加更多的機器。這是可行的,但是相比S3花費更多并且更加複雜。

S3 能根據存儲的資料自動地擴充,根本不需要改變任何東西。甚至可用的空間是幾乎無限的(至少對Amazon沒有限制)。

First round goes to S3

Round 2 - 高持久性(Durability)

對HDFS資料持久性的統計模型表明,在一個很大的4000個節點的叢集(16PB的總存儲

250,736,598個block副本)上面,丢失一個block的資料(預設是64MB)的機率是24小時内

5.7x10-7,365天内是2.1 x10-4。然而,對于僅僅隻含有幾十個執行個體的大多數叢集來說,丢失資料的機率要高得多。

S3為每個對象提供99.999999999%的年持久性,意味着每10,000,000年每10,000個對象中隻有一個會丢失。(詳情見 S3 FAQ). 它甚至可以更好,差不多一年半以前我的一個在Xplenty的大學同學在Amazon使用了AWS workshop.他們的代表聲稱,在預設的S3存儲上(一個便宜的選擇是RRS,隻有99.99%的持久性)他們實際上沒有丢失一個對象。

大叢集擁有優異的持久性,但是在大多數情況下S3比HDFS更耐用。

S3 wins again

Round 3 - 保留(Persistence)

當停止EC2和EMR執行個體時,資料不會保留。盡管如此,昂貴的EBS卷能夠用來把資料保留在EC2上。

在S3上資料始終存在。

S3 wins

在雲端存儲Apache Hadoop的資料--HDFS vs S3 Round 1 - 擴充性(Scalability) Round 2 - 高持久性(Durability) Round 3 - 保留(Persistence) Round 4 - 價格(Price) Round 5 - 表現(Performance) Round 6 - 安全性(Security) Round 7 - (限制)Limitations Tonight’s Winner(今晚的勝利者)

Round 4 - 價格(Price)

為了確定資料的完整性,HDFS預設存儲資料的每個塊的三個副本。這意味着需要的HDFS存儲空間是實際資料的3倍,并花費相應的成本。雖然資料複制不是必須的,隻是存儲一個拷貝将消除HDFS的耐久性,并可能導緻資料丢失。

亞馬遜照顧備份資料S3上的,是以該空間的100%是可用的并且隻花費相應的價錢。 S3還支援存儲壓縮檔案,這大大減少了所需以及該法案的空間。

Winner - S3

Round 5 - 表現(Performance)

HDFS的表現是非常棒的。資料被存儲和運作在提高存取和處理速度相同的機器上面。

不幸的是S3還比不上HDFS。等待時間是明顯更高和資料吞吐量較低。然而,Hadoop作業通常是由chains的mapreduce作業和中間資料存儲到HDFS和本地檔案系統比讀寫亞馬遜S3你能夠得到的節點的本地磁盤的吞吐量。

我們最近進行了一些測試,TestDFSIO,一個hadoop的讀/寫測試程式,在一個有m1.xlarge執行個體,每個節點有四個短暫的磁盤裝置叢集上。結果證明,HDFS性能更好。

HDFS on Ephemeral Storage Amazon S3
Read 350 mbps/node 120 mbps/node
Write 200 mbps/node 100 mbps/node

HDFS takes the round

Round 6 - 安全性(Security)

有人認為HDFS是不是安全的,但事實并非如此。Hadoop通過Kerberos提供使用者身份認證和通過Hadoop的檔案系統權限提供了授權。YARN,Hadoop的最新版本,它能做得更好通過一個稱為federations的新功能 - 将叢集分成幾個命名空間防止使用者通路一個不屬于他們的資料。資料可以通過SSL安全地被上傳到Amazon的執行個體。

S3内置了安全性。它支援使用者身份驗證,以控制誰可以通路資料,起初隻bucket和objects的所有者能做操作。更多的權限可以通過bucket政策和通路控制清單(ACL)授予使用者群組。資料可以被加密,并通過SSL安全地上傳。

It’s a tie

Round 7 - (限制)Limitations

盡管HDFS可以存儲任何大小的檔案,它具有存儲非常小的檔案(它們應該被連接配接或統一到Hadoop的檔案)的問題。此外,儲存的某一叢集上的資料僅提供給該叢集的機器上,并且不能被叢集外的執行個體使用。

這不是與S3的情況。該資料是獨立Hadoop叢集的,并且可以通過任何數量的叢集的同時處理。然而,在S3上的檔案有一些限制。它們隻能有5GB和Hadoop的存儲格式,如Parquet或ORC,不能在S3中使用。這是因為Hadoop的需要通路在這些檔案中的特定位元組,S3并沒有提供這樣的能力。

Another tie

Tonight’s Winner(今晚的勝利者)

具有更好的可擴充性,内置的持久性,以及較低的價格,S3是今晚的赢家!盡管如此,為了有更好的表現,沒有檔案大小或存儲格式的限制,這HDFS要努力改進的方向。

繼續閱讀