Hadoop框架:MapReduce基本原理和入門案例
阿新 • • 發佈:2020-11-23
本文原始碼:[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