1. 程式人生 > >MapReduce架構,shuffle,mapred,hdfs讀流程

MapReduce架構,shuffle,mapred,hdfs讀流程

MapReduce執行模式如下
在這裡插入圖片描述
主要分為map,reduce,shuffle幾個步驟:

map相當於給資料作用一個規則,取得作用規則後資料的對映,例如:

Map()   對映  
a xyz   -> (x,1)(y,1)(z,1)   對映成key,value的形式
b xxyyz
c kkkkkkkkzzzzz
d kkxx

shuffle相當於洗牌,歸類

 a (x,1)(x,1)...   把所有x都歸在a下面
 b (y,1)(y,1)...
 ...

reduce 做最終歸約

a xxxxx 5
b yyy 3
c zzzzzzz 7
d kkkkkkkkkk 10

關於詳細講解:http://blog.itpub.net/30089851/viewspace-2095837/

mapreduce指令其實不常用,可以瞭解一下mapred這個指令

MapReduce架構

MR提交到Yarn的工作流程就是Yarn的架構設計

在這裡插入圖片描述
1.使用者向Yarn的RM提交應用程式,其中包括
ApplicationMaster程式(就是MR程式),啟動ApplicationMaster命令等,Application Manager是程式管理

2.RM首先為該app程式分配第一個container容器,並與對應的NM通訊,要求NM在這個Container中啟動應用程式的application master(程式程式碼這些)

3.App master首先向Apps manager註冊,這樣的話,我們就可以通過web 8088,檢視應用程式的執行狀態,且監控它的執行狀態

4.ApplicationMaster向Resource Scheduler申請和領取資源

5.一旦ApplicationMaster申請到資源後,便與對應的NM通訊,要求它啟動任務

6.NM節點啟動container容器,執行task任務,注意map和reduce不能再一個container容器裡同時執行

7.各個容器的任務,通過rpc向app master彙報自己的狀態和進度,以讓APP master隨時掌握各個任務的執行狀態,從而在任務失敗時 重啟任務。
那麼使用者可以通過web介面實時檢視應用的當前執行狀態

8.app執行完成後,app master向 apps manager登出並關閉

HDFS讀流程

在這裡插入圖片描述
1.client通過分散式FileSystem.open(path)方法,去與NN進行RPC通訊,NN會校驗是否存在 許可權是否OK。
2.校驗完成後,返回檔案的部分或全部的block列表(其實就是返回FSDataInputStream物件)
3.Client呼叫FSDataInputStream物件的read()方法
a.去與第一個塊的最近的datanode進行read,讀取完成後,會校驗,假如OK,會關閉與當前的dn的通訊。
假設check fail,會記錄失敗的塊+DN資訊,下次就不會讀取了,那麼會去這個塊的第二個DN地址讀取

b.然後讀取第二個塊的最近的datanode,check後,會關閉與DN的通訊
c.假設block列表讀取完了,檔案還沒結束,就繼續讀取下一批次的block的列表

4.Client呼叫FSDataInputStream.close(),關閉輸入流

另附hadoop目錄結構

[[email protected] hadoop-2.6.0-cdh5.7.0]$ ll
total 88
drwxr-xr-x  2 hadoop hadoop  4096 Mar 24  2016 bin   命令
drwxr-xr-x  2 hadoop hadoop  4096 Mar 24  2016 bin-mapreduce1
drwxr-xr-x  3 hadoop hadoop  4096 Mar 24  2016 cloudera
drwxr-xr-x  6 hadoop hadoop  4096 Mar 24  2016 etc   配置  config conf
drwxr-xr-x  5 hadoop hadoop  4096 Mar 24  2016 examples
drwxr-xr-x  3 hadoop hadoop  4096 Mar 24  2016 examples-mapreduce1
drwxr-xr-x  2 hadoop hadoop  4096 Mar 24  2016 include
-rw-rw-r--  1 hadoop hadoop     4 Oct 10 22:02 jepson.log
drwxr-xr-x  3 hadoop hadoop  4096 Mar 24  2016 lib  jar包
drwxr-xr-x  2 hadoop hadoop  4096 Mar 24  2016 libexec
-rw-r--r--  1 hadoop hadoop 17087 Mar 24  2016 LICENSE.txt
drwxrwxr-x  3 hadoop hadoop  4096 Oct 10 22:34 logs
-rw-r--r--  1 hadoop hadoop   101 Mar 24  2016 NOTICE.txt
drwxrwxr-x  2 hadoop hadoop  4096 Sep 26 21:48 output
-rw-r--r--  1 hadoop hadoop  1366 Mar 24  2016 README.txt
drwxr-xr-x  3 hadoop hadoop  4096 Mar 24  2016 sbin    啟動停止腳步
drwxr-xr-x  4 hadoop hadoop  4096 Mar 24  2016 share
drwxr-xr-x 17 hadoop hadoop  4096 Mar 24  2016 src