四個部署 Hadoop 的迷思
Hadoop的應用前題是“資料是有價值的!”,當然,這一點幾乎得到所有人的認可,並且在實際環境中,都是這樣的,我們都希望從系統日誌,網絡資料,社交資訊等大量資料中發掘出有價值的資訊,例如,使用者的行為,習慣等,而這些是做下一步市場分析的依據。在Hadoop出現後,對於發掘資料更是有幫助,尤其是從知名的互聯網公司開始,都已經在使用或部署Hadoop環境。
面對如此誘惑,很多傳統的企業用戶都想參考互聯網企業的做法,非常快速的部署Hadoop,從而想快速整合和發掘有價值的資料。但現實情況卻是相反,想快速部署Hadoop,卻沒那麼容易。為什麼會出現這樣的問題呢,我想到的原因有幾個:
1. Hadoop提供我們的只是一個框架,而不是一套完整的解決方案
就像購買一套房子,建築商給我們的都是一個基礎結構,整體裝修部分還是要靠住戶自己按自己的風格和喜好進行設計,而且每個住戶對於裝修部分都會有自己的喜好。Hadoop的部署就是如此,每個企業中的Hadoop環境都是唯一的,需要企業知道自己的資料、環境。我需要分析哪些資料?需要得到什麼樣的資訊?這些資訊我用來做什麼?只有想明白這些問題後,Hadoop部署才會出現到它的價值。而這些,不僅僅是技術層面的問題,還要有管理層甚至是業務層面的配合。
2. 人力問題
Hadoop屬於開放源碼架構,它先天不足或無法解決的問題,例如,由於安裝環境的唯一性導致架構下出現開發和維護問題。Hadoop同樣會面對這樣的問題,而且,市場上Hadoop人才相對較少,這些對於企業而言,都會增加不少部署和應用上的難度,大量的開發工作需要大量的開發人員。
3. 只有分散式架構的問題才可以由Hadoop解決
Hadoop不是“仙丹”,不能解決一切資料分析問題。資料查詢和分析,傳統資料庫結構還有它特有的優勢。Hadoop是一個分散式架構,而分散式架構決定了“只有分散式架構解決的問題才可以由Hadoop解決”。例如,一個孕婦,需要10月懷胎才會有一個baby,而不是有10個孕婦就等於可以在1個月內擁有一個baby。說到底,只有將問題拆分成若干問題,而且子問題是獨立的,也就是可以適用於“key-value”的反覆運算方式進行處理,最終可以推導出我們需要的結果。這樣的問題才是Haodop可以去解決的問題。
4. Hadoop不適合處理很多細小檔案
其實大和小只是一個相對的概念,不存在絕對值的對比,所以說Hadoop不適合處理很多細小檔案,因為是由於HDFS中的namenode局限性決定,每個檔都會在namenode中保存相應的資料資訊,為了提升效率,這些資訊在使用的過程中都是被保存在記憶體中,而如果細小的檔案有很多,則會消耗大量的namenode記憶體,這對於單節點來講,記憶體的擴展是有上限的。反之,如果是相對較大,例如上GB或更大的檔案,所消耗的記憶體則會比較少。同時,在資料處理的過程中,系統支出會小很多。這些架構上的特點和限制,令Hadoop更只適合於處理真正的「Big」Data。當然在技術上來看,殺雞用牛刀也是可以的,這就看值不值得而已。