2013-06-05 64 views
1

我想知道哪種配置會更快。那麼我可以選擇輸入Map Reduce來處理幾個文本文件或從HBase獲取輸入的選項。hbase或文本文件作爲Map Reduce的輸入

爲了我的目的,我需要閱讀所有可用的數據。

感謝, 亞當

回答

1

如果你的文本文件存放在HDFS然後讀取數據從那裏會比HBase的更快。其原因是,當你讀取HBase的數據時,它比HDFS做得更多,比如讀取KeyValues,返回最新的行或指定的時間戳等等。另一方面,當你從HDFS讀取數據時,它只是一個問題在該文件上打開一個閱讀器並開始順序閱讀。沒有從一個地方跳到另一個地方導致閱讀延遲(這種跳躍是允許HBase爲您提供隨機讀取/寫入訪問的東西)。這就是HBase在這個處理環境中比HDFS慢幾倍的原因。

但是,這在批處理環境中(例如,作爲MapReduce源或接收器)很好。當您需要從大型數據集中低延遲訪問少量數據時,HBase是更好的選擇。

希望這回答了這個問題。

+0

我的關於hadoop的知識是文件存儲在塊(HDFS)中,並且這些塊被破壞以提供給n個映射器完成這項工作的一組行!所以我認爲,使用文本文件必須更快,而不是查詢HBase來檢索所有可用數據。 我同意你的答案。它應該更快。 – Adam

+0

似乎有點混亂。您提到的HDFS卡盤(稱爲塊)與進入映射器的塊(稱爲InputSplits)不同。雖然塊是數據的物理分割,但InpUtSplits只是基於您正在使用的InputFormat創建的邏輯分割。 – Tariq

+0

是的,我完全同意你Tariq,我可能還不夠清楚。我不是一個有經驗的hadoop用戶。 InputSplit默認情況下一行一行地返回邏輯分割的內容是不是? – Adam

相關問題