java大資料最全課程學習筆記(5)--MapReduce精通(一)
阿新 • • 發佈:2020-07-20
> 目前[CSDN](https://blog.csdn.net/weixin_42208775),[部落格園](https://home.cnblogs.com/u/gitBook/),[簡書](https://www.jianshu.com/u/da41700fde04)同步發表中,更多精彩歡迎訪問我的[gitee pages](http://it-it.gitee.io/bigdata)
[toc]
# MapReduce精通(一)
## MapReduce入門
### MapReduce定義
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221531891-724815908.png)
### MapReduce優缺點
#### 優點
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221543621-1957969080.png)
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221549690-911238824.png)
#### 缺點
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221607359-1517726715.png)
### MapReduce核心思想
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221622863-989821837.png)
總結:分析WordCount資料流走向深入理解MapReduce核心思想。
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221637086-1448236759.png)
### MapReduce程序
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221648163-2101773080.png)
### MapReduce程式設計規範
> 使用者編寫的程式分成三個部分:Mapper、Reducer和Driver。
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221659841-1002094078.png)
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221706793-804266719.png)
### WordCount案例實操
1. 需求
> 在給定的文字檔案中統計輸出每一個單詞出現的總次數
1. 輸入資料
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221718636-302546463.png)
2. 期望輸出資料
hadoop 2
hello 4
spark 1
world 3
2. 需求分析
按照MapReduce程式設計規範,分別編寫Mapper,Reducer,Driver,如圖所示。
![](https://img2020.cnblogs.com/blog/1577985/202007/1577985-20200719221729030-172508982.png)
3. 環境準備
1. 建立maven工程
2. 在pom.xml檔案中新增如下依賴
```xml
```
3. 在專案的src/main/resources目錄下,新建一個檔案,命名為“log4j.properties”,在檔案中填入
```properties
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
```
4. 編寫程式
1. 編寫Mapper類
```java
public class WordcountMapper extend