2013-11-22 558 views
4

在大數據中,代碼被推向數據執行。這是有道理的,因爲數據量很大,執行代碼相對較小。來到AWS EMR,數據可以在HDFS或S3中。在S3的情況下,數據必須被拉到核心/任務節點以從其他一些節點執行。與HDFS中的數據相比,這可能會帶來一點開銷。AWS EMR性能HDFS vs S3

最近,我注意到當MR作業執行時,有很大的延遲將日誌文件存入S3。有時,即使在作業完成後,日誌文件也會出現幾分鐘。

對此有何看法?有沒有人使用HDFS vs S3中的數據完成MR作業完成度量標準?

回答

6

這是在不同層面上的問題。

S3只有最終的一致性。寫入過程延遲後,您的代碼寫入內容(例如close()flush())後,您不會立即看到/可以讀取。我認爲這可能是由於爲您編寫的數據分配了免費資源。所以它不是性能問題,而是你真正想要/需要的一致性。

我該如何處理EMR?我啓動Hadoop集羣並將所有內容都放入HDFS中,這是作業所需要的。讀取在S3上的時間要更加昂貴,並且最終的一致性使得在作業之間緩衝項目基本上沒有用處。

但是,從HDFS備份文件或使其可用於其他實例或服務(例如CloudFront)時,S3非常棒。

+1

這並不完全正確。 S3在一些地區*(即美國東部)最終保持一致*。在其他地方使用寫入一致性後讀取。欲瞭解更多信息:http://aws.amazon.com/s3/faqs/#What_data_consistency_model_does_Amazon_S3_employ –

+1

我應該指出,馬克的信息已過時。在他的鏈接中:「所有區域中的Amazon S3存儲桶爲新對象的PUTS提供了讀後一致性,併爲覆蓋PUTS和DELETES提供了最終一致性。」 –

2

在HDFS性能方面要比S3好

HDFS是,如果你的需求是長期的更好,需要高性能和你想要執行迭代機器學習算法

如果您的負載可變,S3需要更高的耐用性和持久性,成本更低。

欲瞭解更多信息,請訪問此鏈接http://www.nithinkanil.com/2015/05/hdfs-vs-s3.html

0

,如果你要終止的EMR集羣您必須使用S3,因爲一旦你終止集羣 - HDFS數據將被刪除。