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