大資料Hadoop學習筆記(三)
阿新 • • 發佈:2018-11-09
1.HDFS架構講解
2.NameNode啟動過程
3.YARN架構組建功能詳解
4.MapReduce 程式設計模型
HDFS架構講解
- 源自谷歌的GFS論文
- HDFS:
*抑鬱擴充套件的分散式系統
*執行在大量普通的鏈家機器上,提供容錯機制
*為大量使用者提供效能不錯的檔案儲存服務 - NameNode:單一節點。檔案元素據的操作。副本存在位置由namenode決定,讀取檔案儘量讓
使用者先讀取最近的副本,降低消耗和時延。週期性的從叢集中的每個DataNode接受心跳訊號和
塊狀態報告。
bin/hadoop balancer 執行一個叢集的均衡命令。 - DataNode:一個數據塊在datanode以檔案儲存在磁碟上;心跳是每3秒一次,namenode超過
10分鐘沒有收到某個datanode的心跳則認為該節點不可用
NameNode啟動過程
資料儲存位置:
*記憶體
*本地磁碟
*fsimage
*edits 編輯日誌檔案
格式化檔案系統目的就是生成fsimage映象檔案,儲存元資料資訊
第一次啟動HDFS:
1—— 格式化
2—— 生成fsimage
3—— 啟動NameNode。讀取映象檔案fsimage;
4—— 啟動DataNode。註冊;傳送塊報告(block report);
5—— 建立目錄 /user/root/tmp 建立、上傳檔案都會寫入到編輯日誌檔案中
6—— 在目錄中放入檔案(
第二次啟動HDFS:
1—— NameNode讀取fsimage和edits,在本地寫一個新的fsimage(包含第一次啟動的fsimage
和edits)生成一個空的編輯日誌
2—— 啟動DataNode 。註冊;傳送塊報告(block report);
*************************** 進入安全模式*******************************
3—— 建立目錄 /user/root/tmp 建立、上傳檔案都會寫入到空的編輯日誌檔案中
4—— 在目錄中放入檔案(*-site.xml)
SecondaryNameNode
- 輔助NameNode,每過一段時間將fsimage和edits合併生成新的fsimage。
安全模式SafeMode
- 等待DataNodes向他傳送快報告
- datanodes blocks/ total blocks= 99.999% 此時安全模式才會推出
操作:
- 可以檢視檔案系統的檔案
- 不能改變檔案系統的名稱空間
- 建立資料夾
- 上傳檔案
- 刪除檔案
手動啟動安全模式: bin/hdfs dfsadmin -safemode enter
手動關閉安全模式: bin/hdfs dfsadmin -safemode leave
獲取當前安全模式狀態:bin/hdfs dfsadmin -safemode get
YARN架構組建功能詳解
ResourceManager:
全域性的資源管理器,整個叢集只有一個,負責叢集資源的統一管理和排程分配。
- 功能:
*處理客戶端請求
*啟動/監控ApplicationMaster
*監控NodeManager
*資源分配與排程
NodeManager:
整個叢集有多個,負責單個節點資源管理和使用
- 功能:
*單個節點上的資源管理和任務管理
*處理來自ResourceManager的命令
*處理來自ApplicationMaster的命令 - 管理抽象容器,這希望容器代表著可供一個特定應用程式使用的針對每個節點的資源。
- 定時的向RM彙報本節點上資源的使用情況和各個Container的執行狀態
ApplicationMaster:
管理一個在YARN內執行的應用程式的每個例項
- 功能:
*為應用程式申請資源,並進一步分配給內部任務
*任務監控與容錯 - 負責協調來自RM 的資源,開通過NM監視容器的執行和資源的使用(CPU、記憶體等的資源分配)
Container:
YARN中的資源抽象,封裝某個節點上多維度資源,如記憶體、CPU、磁碟、網路等,當AM向RM申請資源時,RM向AM返回的資源便是用container表示的。
- YARN會為每個任務分配一個container,且該任務只能使用此container中描述的資源。實現了任務隔離
- 功能:
*對任務與效能環境的抽象
*描述一系列資訊
*任務執行資源(節點、CPU、記憶體)
*任務啟動命令
*任務執行環境
YARN資源管理
- 資源排程和資源隔離是YARN作為一個資源管理系統最重要和最基本的兩個功能。資源排程由RM完成,資源隔離由各個NM實現。
- 資源隔離:RM將某個NM上的資源分配給任務(資源排程)後,NM需要按照要求為任務提供相應的資源,甚至保證這些資源應具有獨佔性,為任務執行提供基礎的保證。
- yarn-site.xml記憶體和cpu配置:
MapReduce 程式設計模型
- 一種分散式計算模型,解決海量資料計算問題
- 將平行計算過程抽象成兩個函式:
- map(對映):對一些獨立元素組成的列表的每一個元素進行指定的操作,可以高度並行
- reduce(化簡):對一個列表的元素進行合併
- 輸入輸出都是<key,value>
- map ——》input
- key是偏移量,value是內容
- hadoop yarn - - – - - - <0,hadoop yarn>
- Hadoop hdfs - - – - - - <11,Hadoop hdfs>
- map——》output= reduce——》input
- <hadoop,1>
- <yarn,1>
- map——> shuffle ——> reduce
- 分組group:將相同key的value合併在一起,放到一個集合中
- map ——》input
執行有兩種模式:
- 本地模式
- yarn
- 將程式打包
- 放在linux系統下
- 執行命令bin/yarn jar 編寫的jar目錄 輸入檔案目錄 輸出檔案目錄(必須不存在)
資料型別:
- 所有的資料型別都要實現Writable介面。以便用這些型別定義的資料可以被序列化進行網路傳輸和檔案儲存
- Long ->LongWritable
- Int -> IntWritable
- String -> Text
- NullWritable 當<key,valu>中的key或value為空時使用