Hadoop之MapReduce2基礎梳理及案例

13545163656發表於2018-05-28
基礎梳理
1.Mapreduce 分散式計算系統
    一個分散式運算程式的程式設計框架也是hadoop的資料分析和應用的核心框架,將使用者的業務邏輯程式碼和自帶的預設元件整合一個完整的分散式用程式,併發執行在一個hadoop叢集上

2.為什麼需要MapReduce
    1.海量資料在單機上受硬體資源限制
    2.單機程式擴充套件到叢集來分散式執行,加大程式複雜開發難度大
    3.使用MR框架,研發大部分工作集中在業務邏輯開發,複雜的計算交給框架處理

3.MapReduce執行目錄及例項
在MapReduce元件裡,官方提供一些樣例程式其中就有WordCount和Pi程式.他們的jar包在hadoop目錄下hadoop-mapreduce-examples-2.8.1.jar,忘記目錄可以find -name *example*
[hadoop@hadoop001 hadoop-2.8.1]$ pwd
/opt/software/hadoop-2.8.1

[hadoop@hadoop001 hadoop-2.8.1]$ find . -name *examples* 
./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.1.jar
./share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.8.1-sources.jar
./share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.8.1-test-sources.jar


4.hadoop命令跑wordcount例子程式(詞頻統計)
#建立測試文字上傳hdfs
[hadoop@hadoop001 hadoop-2.8.1]$ vim 1.txt
a1 a2
a2 f1 a2
[hadoop@hadoop001 hadoop-2.8.1]$ hdfs dfs -put 1.txt /input
[hadoop@hadoop001 hadoop-2.8.1]$ hdfs dfs -ls /input
Found 1 items
-rw-r--r--   1 hadoop supergroup         52 2018-05-28 16:55 /input/1.txt

#輸出目錄存在否者會提示錯誤
[hadoop@hadoop001 mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.8.1.jar wordcount /input/ /output1
#檢視統計結果

[hadoop@hadoop001 mapreduce]$ hdfs dfs -cat /output1/part-r-00000
a1      1
a2      3
f1      1

WordCount例子可以體現出MapReduce運用原理

Map Task 對映:
空格分割|每個執行緒中以單詞為統計,以1為詞頻的values (key/values)
a1      1
a2      1
a2      1
a2      1

f1      1
每個map的輸出都需要shuffle(洗牌)操作,將相同的Key放在一個桶裡
交給reduce處理
Reduce Task 規約 合併計算:

a1      1
a2      3
f1      1



5.MapReduce執行機制
輸入分片:一個檔案如果有5個塊 那個預設就會有5個Map Task任務
如果在map計算前進行分片調整,將小檔案進行合併,對於木桶效應
MapReduce可以實現最佳化計算

參考 http://blog.itpub.net/30089851/viewspace-2127850/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31441024/viewspace-2155251/,如需轉載,請註明出處,否則將追究法律責任。

相關文章