還有必要學習Hadoop 么?

對比Hadoop,spark好評如潮,作為一個沒接觸過大數據處理的初學者,還有必要學習Hadoop么。謝謝各位指教。


謝邀

一文看懂大數據的技術生態圈,Hadoop,hive,spark都有了

【預測】 五年後 Hadoop將推動數據平民化

美國聯合市場研究(Allied Market Research)機構近日預測,到2020年,Hadoop的市場價值會超過500億。Hadoop技術發展至今,走過了近九個年頭,乘著大數據的東風,它以低廉的存儲和快速的處理能力迅速在中小企業蔓延開來。而據聯合市場研究預測,五年後,Hadoop會得到更廣泛的部署,不止局限在中小企業。

幾年前,還有評論人士稱,Hadoop只能應用於企業10%的數據。但今日一份名為《2014年資料庫技術現狀調查》的數據顯示,13%的受訪者已經將Hadoop應用於產品生產和測試。未來,Hadoop有望在企業各個角落得到應用。而在性能和用途都有顯著增長的同時,Hadoop的部署成本仍然會保持相對低廉。

數據平民化

隨著大數據的快速發展,未來五年內,數據量和數據類型都會快速增長,那時,PB級的數據量已經不能被稱為大數據了。隨著數據的猛增,企業對數據分析和存儲能力的需求必然大幅上升。相對於傳統資料庫和數據倉庫技術,Hadoop的優勢在於將數據分析和存儲平民化。不懂技術的業務人員訪問和分析數據將成為趨勢。

照目前的創新速度和較低的准入門檻來看,未來五年會有更多的中小型企業持有自己的Hadoop架構。同時,Hadoop的發展會催生一大批初創企業加入到企業級IT領域,雖然短時間內新技術初創企業還不足以影響大的市場格局,但從收購和價值評估中我們可以看到,新興技術企業的市場價值已經越來越大。

安全性和實時性

物聯網作為IT發展的下一個技術熱點,會成為變革IT的新力量。傳統的資料庫技術很難應對大量的感測器數據,而Hadoop將脫穎而出,承擔更多的存儲和分析功能。

未來五年里,Hadoop會逐漸向企業日常運營必不可少的系統發展。而要實現這一點,其實時分析的能力和安全性將成為掣肘。現在,我們已經看到Kerberos 和一些MapReduce組件用於保障Hadoop的安全性,Spark和Storm等工具正在為Hadoop加速。未來Hadoop的發展也需要這兩方面能力的成熟。

或許這兩篇文章對你能夠有所幫助,我覺得Hadoop還是挺有必要學的,有關注大數據歡迎加我們信微:idacker

http://weixin.qq.com/r/JUjbw8TE1JmrrYCg9x03 (二維碼自動識別)


更新一下,經 @曉鷹指正,之前幾處的「完全替代」表達有誤,這篇回答主要想表達的是spark及其生態圈是大大優於hadoop生態圈的,但是某些組件之間並不存在在完全的替代關係,因為spark生態圈中的很多solution是和hadoop中的思維不一樣的。

============================================

從技術的角度來說,spark的確完全可以代替hadoop中的mapreduce(並不能代替hdfs),spark生態圈中的mesos相比於yarn功能也更強大,mllib可以完全代替mahout。dataframe可以代替hive,pig的大部分功能。從找工作的角度來說,現在hadoop還是最主流的分散式計算框架,工作崗位數量比spark多,但幾年以後spark必然會超過hadoop。

從技術角度來說,spark速度更快,開發更簡單,功能更強大。樓上有人說spark之所以快是因為in memory,memory裝不下的數據的時候,spark的速度會非常感人,這其實是對spark最常見的誤解,什麼叫in memory? 只要是jvm都是in memory的,mapreduce的時候數據當然也要載入到內存中,spark內存裝不下的時候mapreduce內存也裝不下。實際上,spark可以把計算的中間結果緩存在內存中,因此在做迭代計算時,每一步迭代的中間結果可以暫時放在內存中,因此省略了磁碟讀寫的時間。即使是非迭代計算,數據量遠大於內存容量時,spark性能也比hadoop好(參見 Daytona GraySort contest 2014,和spark作者之一的博文 Spark the fastest open source engine for sorting a petabyte )。Spark1.5 dataframe組件更是開始拋棄java gc,自己管理內存,性能又有了大幅度的提高。

不僅是性能強於mapreduce,spark也提供了更豐富的操作函數,大大加快了開發效率。hadoop要寫幾十行的東西在spark中可能一兩行代碼就能解決。

spark功能也比hadoop更多,在核心的DAG計算組件之外,還有機器學習,圖計算,流計算(實際上應該是批計算),dataframe組件,像我用的機器學習組件,比hadoop生態圈的mahout強大太多。

儘管如此,現在hadoop開發者的需求量還是遠多於spark的,畢竟很多企業已經基於hadoop搭建了整個系統,全部遷移到spark還是要很長時間的。


不要太浮躁了

這種有用無用論

就好像「現在fp突然火了 我還要學oop嗎」的即視感

互聯網泡沫真的離不開一群浮躁的碼農 最近這裁員縮招真是幹得漂亮

計算框架而已 工具而已

適用場景不一樣

只是spark怒吞了一大片服務和使用場景

spark值得學

但問學hadoop還有必要嗎 不予回答


一代確實可以放一放,但你要是以為二代Hadoop還是之前的Hadoop那可就不對了

說白了Hadoop是一個Apache一堆雲計算套件的全家桶,並且由YARN做了大一統

其中hdfs提供雲存儲,yarn在此之上提供計算資源的統一管理,mr以及spark什麼的都是跑在yarn上面的應用,所以你用hadoop來和spark比,就相當於用windows和office比,沒有什麼道理的

至於學什麼,就看你的興趣點是在資源框架,還是在計算框架了


謝邀

樓上說了一個方面,我在補充一點。spark之所以快是因為in memory,做ML什麼的Hadoop確實幹不過spark。但是真遇到memory裝不下的數據的時候,spark的速度會非常感人......


個人覺得你應該需要了解的是另外一些問題:

1、hadoop是什麼,核心是什麼

2、hadoop能做什麼

大數據是個鋪天蓋地的詞,而談論大數據又不可避免地要提到Hadoop,遺憾的是今天大多數大數據鼓吹者,甚至專業人士其實並不能說清楚Hadoop到底是什麼玩意,以及有何功用,而他們的管理層小白聽眾更是一頭霧水。

眾所周知,Hadoop是Apache軟體基金會管理的開源軟體平台,但Hadoop到底是什麼呢?簡單來說,Hadoop是在分散式伺服器集群上存儲海量數據並運行分散式分析應用的一種方法。

Hadoop被設計成一種非常「魯棒」的系統,即使某台伺服器甚至集群宕機了,運行其上的大數據分析應用也不會中斷。此外Hadoop的效率也很高,因為它並不需要你在網路間來回搗騰數據。

Hadoop能夠做什麼?

不管是國外的著名公司Google、Yahoo!、微軟、亞馬遜、 EBay、FaceBook、Twitter、LinkedIn等和初創公司Cloudera、Hortonworks等,又還是國內的著名公司中國移動、阿里巴巴、華為、騰訊、百度、網易、京東商城等,都在使用Hadoop及相關技術解決大規模化數據問題,以滿足公司需求和創造商業價值。

「Hadoop能做什麼?」 ,概括如下:

1)搜索引擎:這也正是Doug Cutting設計Hadoop的初衷,為了針對大規模的網頁快速建立索引;

2)大數據存儲:利用Hadoop的分散式存儲能力,例如數據備份、數據倉庫等;

3)大數據處理:利用Hadoop的分散式處理能力,例如數據挖掘、數據分析等;

4)科學研究:Hadoop是一種分散式的開源框架,對於分散式系統有很大程度地參考價值。

Hadoop核心

Hadoop的核心就是HDFS和MapReduce,而兩者只是理論基礎,不是具體可使用的高級應用,Hadoop旗下有很多經典子項目,比如Hbase、Hive等,這些都是基於HDFS和MapReduce發展出來的。要想了解Hadoop,就必須知道HDFS和MapReduce是什麼。

HDFS

HDFS(Hadoop Distributed File System,Hadoop分散式文件系統),它是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,適合那些有著超大數據集(large data set)的應用程序。

MapReduce

通俗說MapReduce是一套從海量·源數據提取分析元素最後返回結果集的編程模型,將文件分散式存儲到硬碟是第一步,而從海量數據中提取分析我們需要的內容就是MapReduce做的事了。

MapReduce的基本原理就是:將大的數據分析分成小塊逐個分析,最後再將提取出來的數據匯總分析,最終獲得我們想要的內容。當然怎麼分塊分析,怎麼做Reduce操作非常複雜,Hadoop已經提供了數據分析的實現,我們只需要編寫簡單的需求命令即可達成我們想要的數據。

關於Hadoop的使用方式:

感覺現在各個公司使用Hadoop的方式都不一樣,主要我覺得有兩種吧。

第一種是long running cluster形式,比如Yahoo,不要小看這個好像已經沒什麼存在感的公司,Yahoo可是Hadoop的元老之一。這種就是建立一個Data Center,然後有幾個上千Node的Hadoop Cluster一直在運行。比較早期進入Big Data領域的公司一般都在使用或者使用過這種方式。

另一種是只使用MapReduce類型。畢竟現在是Cloud時代,比如AWS的Elastic MapReduce。這種是把數據存在別的更便宜的地方,比如s3,自己的data center, sql database等等,需要分析數據的時候開啟一個Hadoop Cluster,Hive/Pig/Spark/Presto/Java分析完了就關掉。不用自己做Admin的工作,方便簡潔。

所以個人如果要學Hadoop的話我也建議第二種,AWS有免費試用時間(但是EMR並不免費,所以不要建了幾千個Node一個月後發現破產了),可以在這上面學習。最重要的是你可以嘗試各種不同的配置對於任務的影響,比如不同的版本,不同的container size,memory大小等等,這對於學習Spark非常有幫助。

總的來說Hadoop適合應用於大數據存儲和大數據分析的應用,適合於伺服器幾千台到幾萬台的集群運行,支持PB級的存儲容量。Hadoop典型應用有:搜索、日誌處理、推薦系統、數據分析、視頻圖像分析、數據保存等


spark的計算框架確實比hadoop得mr強大得多,但是就如之前幾位的回答一樣,hadoop現在不只是mr計算框架了,他是一個全家桶,說spark是這個全家桶裡面的一個大雞腿也不為過。

退一萬步講,就算hadoop只有mr,spark也不可能代替他,在某些領域數據是以PB為基礎算得,spark內存計算模型不一定能夠吃得下。


考慮到scala的學習成本,大規模離線日誌還是用MapReduce處理,而需要迭代計算的機器學習模型會越來越多的使用spark訓練,但hdfs的生命周期會很長。hadoop還有很多適用的場景,多學點總歸是好的,不要「書到用時方恨少」啊。


推薦閱讀:

大家覺得目前 初學者學數據做hadoop時的集群配置是不是特別麻煩?有沒有一種便捷的方法?
如何在 Spark 機器學習中應用 scikit-learn?
Hadoop、spark、SaaS、PaaS、IaaS、雲計算概念區分?
如何用形象的比喻描述大數據的技術生態?Hadoop、Hive、Spark 之間是什麼關係?
內存有限的情況下 Spark 如何處理 T 級別的數據?

TAG:Hadoop | 學習資料 | 大數據 | Spark |