Hadoop-MapReduce-學習日誌-20181213
目錄
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、很多作業題目,單獨進行整理