大資料小白系列——MR(3)
上一期我們稍微深入瞭解一下MR流程,尤其是比較重要但相對較少被提及的Shuffling過程,本期我們來看看MR的指導思想和侷限性。
01
MR中的兩個思想
太陽底下沒有新鮮事,整個MR框架相對簡單,不過有兩個思想我覺得可以介紹一下,這兩個思想不玄妙,但很實用,確實能解決大資料領域的不少問題。
在這裡我還是要推薦下我自己建的大資料學習交流qq裙: 957205962, 裙 裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料開發相關的),包括我自己整理的一份2018最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴
Divide And Conquer(分治)
所謂的分治思想,就是“分開目標、各個擊破”,其流程是:將整個問題劃分為多個子問題->求解各子問題->合併子問題的解以形成原始問題的解,正如MR中的Splitting、Mapping和Reducing。
Data Locality(資料本地性)
即所謂的將計算移近資料,而不是將資料移近計算,“Move computation to data, instead of moving data to computation”。
資料儲存在HDFS中時,它被劃分為塊並儲存在DataNode上。當進行MR作業時,各個Mappers將處理這些塊。如果Mapper不能從它執行的節點磁碟上獲取資料,而需要通過網路從其他DataNode獲取。這將是非常糟糕的情況,因為網路的IO甚至比磁碟IO的代價還要大得多。因此,將程式碼分發到更接近資料的節點上進行運算是更廉價高效的方法。
02
MR的侷限性
處理速度較慢
MR的執行速度慢。一個普通的作業一般在分鐘級別完成,複雜的作業甚至花費一小時或者更多,所以它適合對時間不那麼敏感的OLTP。
MR的慢主要是由於磁碟IO和網路IO,大量的中間結果需要寫到磁碟上(mapping),並通過網路進行傳輸(shuffling),這耗去了大量的時間。
不適用於某些資料/演算法
要對資料進行splitting並分別進行各自獨立的處理,需要資料之間存在較低的相關性,對於一些複雜的、彼此之間存在各種依賴的資料,MR處理起來就比較困難。
或者,對於需要進行多次迭代的演算法,後一步驟的輸入為前一個的輸出(例如常見的k-means)。在這種情況下如果使用MR,每個作業的輸出結果都要進行磁碟IO,導致效能無法忍受。
有一定的使用門檻
雖然MR框架替我們隱藏了大部分的複雜性,我們仍然需要手工編寫程式碼(即map方法和reduce方法),掌握程式語言(Java、Python等)成為了使用MR的門檻。
與之形成對比的是關係型資料庫的SQL,由於其易用性,大資料領域也越來越多地出現相容SQL語法的計算引擎,大有一統江湖之勢。
好了,本期就先到這兒,MR部分就結束了,下一期開始講講YARN。Cheers!
在這裡我還是要推薦下我自己建的大資料學習交流qq裙: 957205962, 裙 裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大資料開發相關的),包括我自己整理的一份2018最新的大資料進階資料和高階開發教程,歡迎進階中和進想深入大資料的小夥伴
相關文章
- 大資料小白系列——MR(1)大資料
- 大資料小白系列——HDFS(3)大資料
- 大資料小白系列——HDFS(4)大資料
- 大資料小白系列——HDFS(2)大資料
- 大資料小白系列——HDFS(1)大資料
- 大資料小白系列 —— MapReduce流程的深入說明大資料
- 3.MR
- 大資料:小白升級版大資料
- 資料結構小白系列之資料結構概述資料結構
- 小白系列:資料庫基礎知識解析資料庫
- MySQL系列教程小白資料庫基礎暨隨MySql資料庫
- 大資料教程系列之大資料概念大資料
- 大資料為什麼這麼火?小白該如何去學習大資料大資料
- 小白學習大資料測試之hadoop大資料Hadoop
- 大資料系列 1:大資料技術發展歷程大資料
- 小白如何學習大資料開發,大資料學習路線是怎樣的?大資料
- 小白如何學習大資料?需要多長時間大資料
- 計算機小白大資料學習線路圖計算機大資料
- 大資料學習|小白學習大資料需要滿足這六個條件你就能學好大資料大資料
- 小白可以轉行學習大資料嗎?怎麼做?大資料
- 小白學python系列-(3)基礎數量型別Python型別
- 大資料3-Flume收集資料+落地HDFS大資料
- 大資料---(3)金融資料架構大資料架構
- 大資料系列4:Yarn以及MapReduce 2大資料Yarn
- [2019大資料影片教程]小白3天速成排程框架oozie(原始碼+影片+筆記)大資料框架原始碼筆記
- 玩轉大資料系列之一:資料採集與同步大資料
- 玩轉大資料系列之二:資料分析與處理大資料
- 玩轉大資料系列之三:資料包表與展示大資料
- Mysql備份系列(3)--innobackupex備份mysql大資料(全量+增量)操作記錄MySql大資料
- 大資料,大資料,大資料大資料
- 大資料系列2:Hdfs的讀寫操作大資料
- 大資料系列修煉-Scala課程30大資料
- 大資料系列修煉-Scala課程31大資料
- 小白學大資料掌握這幾個方法可輕鬆入門大資料
- 資料血緣系列(3)—— 資料血緣視覺化之美視覺化
- 利用PHP實現常用的資料結構之棧(小白系列文章四)PHP資料結構
- 資料結構與演算法系列3資料結構演算法
- 大資料教程系列之Kafka和activemq對比大資料KafkaMQ