MapReduce

免費試著磚

MapReduce是什麼?

MapReduce是一個基於java的、分布式的執行框架內Apache Hadoop生態係統。它帶走了分布式編程的複雜性,讓開發人員實現的兩個處理步驟:1)和2)減少地圖。分離映射步驟,數據並行處理任務。轉換邏輯可以應用於每個塊的數據。一旦完成,減少階段接管處理聚集數據從地圖上設置. .一般來說,MapReduce的用途Hadoop分布式文件係統(HDFS)輸入和輸出。然而,一些技術之上,如Sqoop,允許訪問關係係統。

MapReduce的曆史

MapReduce是在穀歌的城牆開發早在2004年,傑弗瑞迪恩和桑傑穀歌格瑪沃特(Dean &格瑪沃特,2004)。在他們的論文中,“MAPREDUCE:簡化數據處理大型集群,“和靈感來自於map和reduce函數在函數式編程中常用的。當時,穀歌專有MapReduce係統運行在Google文件係統(GFS)。2014年,穀歌不再使用MapReduce作為他們的主要大數據處理模型。MapReduce曾經是唯一的方法,通過這種方法可以檢索數據存儲在HDFS,但情況已不再是這樣。今天,有其他基於查詢係統等蜂巢和豬用於檢索數據使用sql語句從HDFS運行書麵使用MapReduce模型一起工作。

MapReduce是如何工作的呢?

MapReduce係統通常是由三個步驟組成的(即使它是廣義的組合Map和Reduce操作/功能)。MapReduce操作:

  • 地圖:輸入數據首先分成小塊。Hadoop框架然後決定多少映射器使用,根據要處理的數據的大小和每個映射器服務器上可用的內存塊。每一塊被分配給一個映射器進行處理。每個工人的節點映射函數適用於本地數據,並將輸出寫入到臨時存儲。主(主)節點確保隻有一個副本冗餘輸入數據的處理。
  • 洗牌,結合和分區:工作者節點分配數據基於輸出鍵(map函數產生的),這樣所有的數據都屬於一個關鍵是位於同一工人節點。作為一個可選的流程組合器(減速器)可以單獨運行每個映射服務器減少數據在每個映射器進一步簡化減少數據足跡和洗牌和排序。分區(可選)決定的過程是減速器必須提交的數據並將它分配給一個特定的減速器。
  • 減少:減速機不能啟動,而映射器仍在進行中。工作者節點處理每個組<鍵,值>對輸出數據,並行生產<鍵,值>對作為輸出。所有的地圖輸出值具有相同鍵分配給一個減速機,然後聚集鍵的值。與映射函數強製過濾和排序的初始數據,reduce函數是可選的。

MapReduce有哪些注意事項?

剛性地圖減少編程範式

而暴露和減少接口映射到程序員簡化了分布式應用程序的創建Hadoop,很難表達廣泛的邏輯地圖減少編程範式。迭代過程是邏輯的一個例子,並不適用於地圖減少。一般來說,數據沒有保存在內存中,迭代邏輯是由鏈接MapReduce應用程序一起導致增加了複雜性。

讀/寫密集型

MapReduce工作在內存中存儲一些數據,因為它沒有用戶數據的分布式內存結構的概念。HDFS數據必須讀取和寫入。更複雜的MapReduce應用程序涉及到鏈接小MapReduce工作在一起。因為之間的數據不能通過這些工作,它需要通過HDFS數據共享。這引入了一個處理瓶頸。

Java集中

MapReduce是基於java的,因此最有效的方式為它將使用java編寫應用程序。其代碼必須整理在一個單獨的開發環境,然後部署到Hadoop集群。這種風格的發展不是廣泛采用數據分析師和數據科學家用於其他技術如Python像SQL或解釋型語言。MapReduce的確有能力調用Map / Reduce邏輯等其他語言編寫的C、Python或Shell腳本。然而,它通過旋轉一個係統進程來處理這些程序的執行。這個操作介紹工作的開銷將影響性能。

從大數據產品淘汰

MapReduce是大數據產品逐漸被淘汰。雖然有些廠商還包括它在Hadoop分布,這一切都是為了讓遺留應用程序的支持。beplay体育app下载地址客戶已不再創建MapReduce應用程序,而不是采用更簡單和更快的這樣的框架Apache火花。

MapReduce是用來做什麼的?

遺留應用程序和Hadoop本機工具如Sqoop和豬今天利用MapReduce。有非常有限的MapReduce應用程序開發也沒有任何重大貢獻它為開源技術。

常見誤區MapReduce和火花

  • 關於MapReduce
  • 關於火花

MapReduce的優點

  1. 可伸縮性
  2. 靈活性
  3. 安全性和身份驗證
  4. 更快的數據處理
  5. 非常簡單的編程模型
  6. 可用性和彈性性質

簡單的技巧如何提高MapReduce性能

  1. 啟用超級模式
  2. 使用本地庫
  3. 增加塊大小
  4. 通過地圖任務監控時間
  5. 確定是否可剝離數據壓縮
  6. 設置數量減少的任務
  7. 分析數據的分區
  8. 洗牌階段表現運動
  9. 優化MapReduce代碼

MapReduce和磚三角洲的引擎

磚三角洲引擎是基於Apache火花和c++引擎調用光子。這允許DAG處理MapReduce缺乏的靈活性,從內存中處理速度和專業,本地編譯引擎,提供了極其快速查詢響應時間。用戶可以與磚三角洲引擎使用Python, Scala, R,或SQL。現有火花應用程序可以修改使用達美航空發動機用簡單的線條變化即指定“δ”數據格式。MapReduce和HDFS,本地不支持事務一致性的數據,也沒有能力在數據集更新/刪除現有的數據。三角洲引擎允許並發訪問數據,數據生產者和消費者,還提供完整的CRUD功能。最後,MapReduce並不擁有內置的功能來處理小文件,在任何大數據環境中一個常見問題。磚三角洲引擎auto-compaction,優化數據寫入存儲的大小。它也有一個優化命令可以壓縮文件的需求。三角洲的事務一致性特性,此操作可以在數據被發布由最終用戶或應用程序訪問。

五MapReduce的最佳選擇

  1. Apache火花
  2. Apache風暴
  3. Ceph
  4. 九頭蛇
  5. 穀歌BigQuery

額外的資源

回到術語表
Baidu
map