最近知乎上有這樣一個問題“為什么很多公司都采用Hadoop方案處理大數據業務”,引來很多回答,筆者整理如下,其觀點或有時而可商,歡迎討論。
先說一說什么樣的公司比較傾向于使用Hadoop。有人認為,使用Hadoop的前提是自身有沒有收集并分析數據的需要,并且數據量是否一直在增長并且不可丟棄。
目前看起來,此類數據多數為日志數據,分析用戶習慣,或者就是傳感器之類的數據,分析環境等監控內容的變化規律。也有很多公司不使用Hadoop,比如多 數從事政府行業或者部分企業系統開發的公司,他們對系統的易部署及易維護性要求更高,雖然也會遇到一部分數據量較大,不過通常使用NoSQL數據庫就能夠 滿足需要了,很少使用Hadoop。
這又回到了一句老話,任何技術,都是為了解決問題而存在的,沒有必要為了技術而技術!
那么,使用Hadoop的公司為什么選擇Hadoop呢?選擇Hadoop,其實是選擇的的MapReduce,把大塊的任務切分為若干份小任務,由集群的每臺服務器來計算,最后把結果合并。
有人認為,主要有三點:1,可以解決問題; 2,成本低 ; 3,成熟的生態圈。
一、Hadoop為大數據而生
在那個沒有Hadoop的時代,大家是怎么處理大量數據的呢?IBM的大型機是一個很不錯的解決方案。
中國的銀行系統目前很大一部分還在大型機上。但是大型機太貴了,實在是太貴了。
于是Google來了,經過謹慎的思考,Google的工程師們發現實際上使用一個簡單得分布式計算模型MapReduce就能完成他們的需求。然后他們就搞了一個MapReduce。然后就寫了幾篇關于這種計算方法的論文。
有了思想,而且有了Google這么大數據量的數據驗證,復制技術就很容易了。于是大家就開始搞,然后大家就搞出來一個Hadoop。而且Hadoop是Apache 下的項目,正所謂大樹底下好乘涼。
Hadoop底層的分布式文件系統具有高拓展性,通過數據冗余保證數據不丟失和提交計算效率,同時可以存儲各種格式的數據。同時其還支持多種計算框架,既可以進行離線計算也可以進行在線實時計算。
二,為什么成本可以控制的低
確定可以解決我們遇到的問題之后,那就必須考慮下成本問題了。
1, 硬件成本
Hadoop是架構在廉價的硬件服務器上,不需要非常昂貴的硬件做支撐
2, 軟件成本
開源的產品,免費的,基于開源協議,可以自由修改,可控性更大
3,開發成本
因為屬于二次開發,同時因為有非常活躍的社區討論,對開發人員的能力要求相對不高,工程師的學習成本也并不高
4,維護成本
當集群規模非常大時,開發成本和維護成本會凸顯出來。但是相對于自研系統來說的話,還是便宜的很多。
某司自研同類系統幾百名工程師近4年的投入,燒錢億計,都尚未替換掉Hadoop。
5,其他成本
如系統的安全性,社區版本升級頻繁而現實是無法同步進行升級所引入的其他隱形成本。
三、成熟的生態圈
部分系統歸類:
部署,配置和監控 Ambari,Whirr
監控管理工具 Hue, karmasphere, eclipse plugin, cacti, ganglia
數據序列化處理與任務調度 Avro, Zookeeper
數據收集 Fuse,Webdav, Chukwa, Flume, Scribe , Nutch
數據存儲 HDFS
類SQL查詢數據倉庫 Hive
流式數據處理 Pig
并行計算框架 MapReduce, Tez
數據挖掘和機器學習 Mahout
列式存儲在線數據庫 HBase
元數據中心 HCatalog (可以和Pig,Hive ,MapReduce等結合使用)
工作流控制 Oozie,Cascading
數據導入導出到關系數據庫 Sqoop,Flume, Hiho
數據可視化 drilldown,Intellicus
傳統數據庫數據倉庫VS.Hadoop
再從傳統數據庫數據倉庫這邊看,一方面吃著現有的蛋糕,另一方面也一直在嘗試數據量更大、擴展性更好的解決方案,從share-everything到 share-storage到share-nothing,比如現在的MPP解決方案,也在大數據業務中分了一杯羹。不過數據庫基因的解決方案,還是要面 臨擴展性的問題,我們的經驗是大概百節點級別,遠遠不如hadoop的擴展性。
hadoop最偉大的地方,嚴格說是google的偉大,就是在擴展性瓶頸方面的突破了。擴展性一直是所謂大數據(以前叫海量數據)處理的瓶頸,擴展性上 去了,有更多機器來干活,那同時能干的活也就多了嘛。以前處理海量數據的思路,是搞一臺超級牛的機器,比如高性能計算機,比如大型機、小型機;后來一臺機 器怎么也不夠用了,就搞個幾臺連起來一起用,比如網格,比如分布式數據庫數據倉庫,不過這擴展性也就是幾臺十幾臺級別的,再多也無法提高了;而 hadoop,放棄磁盤陣列而使用本地硬盤作為存儲,使得網絡連接方式大大簡化,從軟件層面來解決很多硬件問題,比如硬盤故障,減少對硬件的依賴,這些保 證了hadoop甩出其他方案幾個量級的擴展性能,人類看到了處理大數據的曙光。