1. 程式人生 > >Hadoop-MapReduce-學習日誌-20181213

Hadoop-MapReduce-學習日誌-20181213

目錄

1、MapReduce程式設計套路(有一張圖重要)

2、maptask的並行度

3、MapReduce中自定義類

4、MapReduce程式的執行模式

5、MapReduce案例包

6、排序

7、combiner

8、分割槽—reducetask的並行度

9、join:hql——>sql

10、分組

11、shuffle的原理解析(有一個張圖重要)

12、MRAppMaster

13、多job串聯

14、倒排索引

15、全域性計數器

16、MapReduce的輸入

17、注意事項


1、MapReduce程式設計套路(有一張圖重要)

1、MapReduce程式設計中map的輸出的key

2、map輸入的key如何設計?

 

2、maptask的並行度

 

1、什麼是maptask

2、maptask的決定因素——切片

3、底層實現原理

4、面試題:切片和切塊的區別?

5、修改切片的大小

 

 

3、MapReduce中自定義類

1、Hadoop中的內建型別

2、自定義類的實現原理

3、編寫自定義類

 

4、MapReduce程式的執行模式

1、打jar包方式

2、本地執行

3、本地執行——提交YARN上

 

5、MapReduce案例包

1、位置

2、執行

 

 

6、排序

1、預設情況下會按照map輸出的key進行排序

2、需求1:對wc的結果進行排序  按照單詞出現的次數進行倒序排序

3、排序的原理解析

4、需求2:將統計結果按照先按照上行流量在按照總流量倒序排序

 

7、combiner

1、是什麼?

2、有什麼用?適用場景?

3、為什麼?

4、如何用?

 

8、分割槽—reducetask的並行度

1、概念

2、有什麼用?

3、為什麼?

4、如何使用?

5、自定義分割槽

 

9、join:hql——>sql

1、reducejoin

資料傾斜

2、mapjoin

 

10、分組

1、預設情況

2、案例:求每門課程平均分的前五名同學

3、分組的原理解析

4、自定義分組

 

11、shuffle的原理解析(有一個張圖重要)

 

12、MRAppMaster

 

13、多job串聯

 

14、倒排索引

1、概念

2、案例

 

15、全域性計數器

1、是什麼

2、預設情況

3、自定義計數器

4、應用場景

 

16、MapReduce的輸入

1、預設輸入

2、需求:小檔案合併,預設的輸入一行一行的資料輸入,目前的需求需要一次性讀取一個小檔案

3、自定義輸入

4、自定義輸出

 

17、注意事項

reduce端的values的兩個坑:

1.只能迴圈遍歷一次

2.values另外的坑:key values  只有一個物件

物件重用
List<Stu> list=new list;
for(Stu s:values){
重用的一個物件
迴圈遍歷到每一個物件相當於對同一個物件重新賦值屬性
list.add(s);
}

list中所有的物件都是values的最後一個物件了
所有的values通用一個記憶體地址,迴圈遍歷的時候  只是屬性在變

如何解決:
每次迴圈遍歷的時候將這個values中的物件重新賦值給新的物件
for(Stu s:values){
Student ss=new Student(s.getName());
list.add(ss);
}
 

 

練習作業

1、求5個檔案(小檔案),每個檔案中放的都是單詞,每一行多個單詞,分割符\t。求這五個檔案中的所有單詞的出現的總次數

2、有5個檔案  每一個檔案中儲存的都是數字  每行一個字這五個檔案中所有數字的最大值

3、mr的wc寫完

4、5個檔案  每一個檔案中儲存的都是數字  每行一個字這五個檔案中所有數字的最大值 用MR寫一遍

5、題目--求學生成績--普通版,連結:

6、流量案例,連結:

7、題目--3--求學生成績--增強版,連結:

8、很多作業題目,單獨進行整理