大數據學習筆記(二)分佈式文件系統HDFS

(一)SeconderyNameNode 第二名稱節點作用

1.解決Editlog不斷增大的問題(定期地和名稱節點進行通訊,當EditLog文件達到一定程度,就停止使用EditLog文件,名稱節點停止當前EditLog的使用,並生成新的Editlog,同時將老的EditLog丟給第二名稱節點 ,第二名稱節點處理將就得Editlog和FsIamge合併,生成新的FsImage後交給名稱節點)

2.充當名稱節點的冷備份
冷備份是當第一名稱節點發生故障後,必須停止一段時間,慢慢恢復,再提供對外服務
名稱節點也稱管家

在這裏插入圖片描述

DataNode數據節點作用是保存數據

(二)HDFS存儲原理

(1)冗餘數據機制,一個數據塊會被默認的保存三次,好處:

1、加快數據傳輸速度
2、很容易檢查數據錯誤
3、保證數據可靠性

冗餘備份一旦低於用戶的設置量,會立即進行復制來達到用戶設置量

(三)數據管理策略

(1)數據存放策略:採用隨機算法計算,每個塊放置在不同的數據節點(機器)

(2)數據讀取策略:1、就近機制,HDFS提供的API來確定一個數據節點所屬的機架ID,當客戶端讀取數據時,從名稱節點獲得數據塊不同副本的存放位置列表,列表包含數據節點,用API來確定客戶端這些數據節點所屬的機架ID,當發現某塊數據副本對應的機架ID和客戶端對應的機架ID相同時優先選擇該副本讀取數據,如果沒有發現,就隨機選取一個副本讀取數據。

(3)數據的錯誤與恢復
1、總管家名稱節點出錯,先暫停服務,從SecondaryNameNode的冷備份上恢復過來,恢復結束以後再提供對外服務(僅1.0需要停止,2.0版由於有熱備份,可以理解恢復服務
2、數據節點出現錯誤,查錯:數據節點每隔一段時間會給名稱節點發送心跳信息,當某個發生故障後,名稱節點收不到心跳信息,探測到這個數據節點已經不可用,會將它的狀態列表的狀態標記爲宕機,把存儲在故障機上的數據,重新複製分發到其他正常的機器上(不僅是故障時調整冗餘數據的位置,當負載不均衡時,也能將數據塊從負載高的機器調到其他負載低的機器)
3、數據出現錯誤,客戶端讀取數據後會對數據進行校驗碼校驗,如果校驗碼不對,則數據出現錯誤,再進行恢復和冗餘的在此複製

(四)HDFS數據讀取過程

在這裏插入圖片描述
1、打開文件
HDFS客戶端打開文件(創建輸入流)
2、獲取數據塊信息
FSD(輸入流類型FsDataInputStream)從名稱節點獲取數據塊位置信息,名稱節點返回已排序的文件開始的頭部信息
3、讀取請求
FSD讀取客戶端請求,選擇距離客戶端最近的數據節點建立連接
4、讀取數據
FSD從數據節點讀取數據
5、獲取數據塊信息(可能發生)
若有剩餘信息還未讀取完,FSD再從名稱節點獲取數據塊信息,若已完成所有讀取則停止獲取
6、讀取數據
FSD再從數據節點讀取數據(3、4、5、6是循環過程,直到讀取完所有數據後結束)
7、關閉文件
關閉輸入流

(五)HDFS數據寫入過程

在這裏插入圖片描述
1、創建文件請求
2、創建文件元數據
FSD詢問名稱節點,名稱節點檢查,檢查文件是否存在,檢查客戶端是否有權限創建這個文件
3、寫入數據
通過輸出流寫數據,把整個數據分成包,放進輸出流隊列,FSD像名稱節點申請位置
4、寫入數據包
擺一個數據保存在多個不同的數據節點,將分包打包成數據包,發送給第一節點,第一節點再發給第二,複製幾次發送幾次 ,流水線複製
5、接收確認包
由最後一個數據節點依次接力向前傳送接收確認信息,直到第一個數據節點確認所有數據包已接收
6、關閉文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章