本文的內容是對本人近期學習hadoop系統過程的總結和思考,接觸的通用計算框架有限,錯誤在所不免,歡迎指正和討論sql
我接觸的hadoop中的通用計算框架主要是mapreduce和spark。其中mapreduce在hadoop 2.0中被簡化,將資源管理的功能抽象、獨立出來,造成了yarn,一個通用的資源管理框架。而mapreduce則成爲一個存粹的計算框架。隨着spark的流行,mapreduce因爲框架的限制、性能等緣由被使用的愈來愈少了。apache
mapreduce於2006提出,因爲其大大簡化了分佈式計算的程序的編寫,而迅速流行起來。在我能讀懂mapreduce的論文以後(論文發表N年後),讓我驚訝的是mapreduce提出的運行方式與我工做中的程序運行方式有很大不一樣:編程
由此也能夠看出大數據系統與互聯網應用的異同。而將數據分批分片執行的操做也是我以前看不懂mapreduce的主要緣由(另外一個緣由是貧窮限制了個人想象力,當時不明白爲何須要那麼多機器)。框架
mapreduce將計算過程分爲map和reduce兩個階段,在當時可以知足大部分的需求,但隨着人工智能和實時計算的興起,mapreduce的侷限愈來愈大。mapreduce主要有兩個侷限:分佈式
因爲mapreduce框架自己的缺陷,已經不能適應當前對大數據計算的需求,所以逐漸地被spark等框架取代。oop
spark做爲新一代的通用計算平臺,解決了mapreduce中存在的固有問題:性能
聽說apache flink使用了不一樣的數據抽象,更能知足對實時性的要求,不過我還沒用過flink。有熟悉的歡迎指教。
將來,新的分佈式計算平臺主要仍是看如何對數據進行抽象,以知足各類計算需求。對於使用大數據計算平臺的公司,根據公司的規模以及開發的週期能夠採起以下幾種方式不斷改進計算任務:學習
這幾種方式能夠並行進行,也多是層層遞進的。好比在大量的短時間優化計算任務後,將通用的部分提出來改進計算平臺。屢次改進計算平臺後使用計算平臺有了新的理解,開發出屬於本身的分佈式計算平臺。大數據
(廣告,我正在學習Hadoop系統,包括讀書和讀源碼,但願能和正在學習的小夥伴一塊兒交流,若是你也有這樣的想法,而且願意常常分享你的所學,歡迎掃碼進羣)優化