Hadoop雖然強大 但不是萬能的

csdn發表於2014-02-07

  隨著 Hadoop 應用的不斷擴充,使很多人陷入了對它的盲目崇拜中,認為它能解決一切問題。雖然Hadoop是一個偉大的分散式大型資料計算的框架,但Hadoop不是萬能的。比如在下面這幾種場景就不適合使用Hadoop:

  1、低延遲的資料訪問

  Hadoop並不適用於需要實時查詢和低延遲的資料訪問。資料庫通過索引記錄可以降低延遲和快速響應,這一點單純的用Hadoop是沒有辦法代替的。但是如果你真的想要取代一個實時資料庫,可以嘗試一下HBase來實現資料庫實時讀寫。

  2、結構化資料

  Hadoop不適用於結構化資料,卻非常適用於半結構化和非結構化資料。Hadoop和RDBMS不同,一般採用分散式儲存,因此在查詢處理的時候將會面臨延遲問題。

  3、資料量並不大的時候

  Hadoop一般適用於多大的資料量呢?答案是:TB 或者PB。當你的資料只有幾十GB時,使用Hadoop是沒有任何好處的。按照企業的需求有選擇性的的使用Hadoop,不要盲目追隨潮流。Hadoop很強大。但企業在使用Hadoop或者大資料之前,首先要明確自己的目標,再確定是否選對了工具。

  4、大量的小檔案

  小檔案指的是那些size比HDFS的block size(預設64M)小得多的檔案。如果在HDFS中儲存大量的小檔案,每一個個檔案對應一個block,那麼就將要消耗namenode大量的記憶體來儲存這些block的資訊。如果小檔案規模再大一些,那麼將會超出現階段計算機硬體所能滿足的極限。

  5、太多的寫入和檔案更新

  HDFS是採用的一些多讀方式。當有太多檔案更新需求,Hadoop沒有辦法支援。

  6、MapReduce可能不是最好的選擇

  MapReduce是一個簡單的並行程式設計模型。是大資料平行計算的利器,但很多的計算任務、工作及演算法從本質上來說就是不適合使用MapReduce框架的。

  如果你讓資料共享在MapReduce,你可以這樣做:

  • 迭代:執行多個 MapReduce jobs ,前一個 MapReduce 的輸出結果,作為下一個 MapReduce 的輸入。
  • 共享狀態資訊:但不要分享資訊在記憶體中,由於每個MapReduce的工作是在單個JVM上執行。

  原文連結:Hadoop isn’t Silver Bullet

相關文章