1. 程式人生 > >Hadoop框架:MapReduce基本原理和入門案例

Hadoop框架:MapReduce基本原理和入門案例

本文原始碼:[GitHub·點這裡](https://github.com/cicadasmile/big-data-parent) || [GitEE·點這裡](https://gitee.com/cicadasmile/big-data-parent) # 一、MapReduce概述 ## 1、基本概念 Hadoop核心元件之一:分散式計算的方案MapReduce,是一種程式設計模型,用於大規模資料集的並行運算,其中Map(對映)和Reduce(歸約)。 MapReduce既是一個程式設計模型,也是一個計算元件,處理的過程分為兩個階段,Map階段:負責把任務分解為多個小任務,Reduce負責把多個小任務的處理結果進行彙總。其中Map階段主要輸入是一對Key-Value,經過map計算後輸出一對Key-Value值;然後將相同Key合併,形成Key-Value集合;再將這個Key-Value集合轉入Reduce階段,經過計算輸出最終Key-Value結果集。 ## 2、特點描述 MapReduce可以實現基於上千臺伺服器併發工作,提供很強大的資料處理能力,如果其中單臺服務掛掉,計算任務會自動轉義到另外節點執行,保證高容錯性;但是MapReduce不適應於實時計算與流式計算,計算的資料是靜態的。 # 二、操作案例 ## 1、流程描述 ![](https://img2020.cnblogs.com/blog/1691717/202011/1691717-20201122220706269-1889237487.png) 資料檔案一般以CSV格式居多,資料行通常以空格分隔,這裡需要考慮資料內容特點; 檔案經過切片分配在不同的MapTask任務中併發執行; MapTask任務執行完畢之後,執行ReduceTask任務,依賴Map階段的資料; ReduceTask任務執行完畢後,輸出檔案結果。 ## 2、基礎配置 ``` hadoop: # 讀取的檔案源 inputPath: hdfs://hop01:9000/hopdir/javaNew.txt # 該路徑必須是程式執行前不存在的 outputPath: /wordOut ``` ## 3、Mapper程式 ```java public class WordMapper extend