hdfs中三種節點的功能:
一、namenode(nn)
-- namenode主要功能:接受客戶端的讀寫服務
-- namenode儲存元資料(metadata)資訊,主要包括
(1)檔案擁有者和許可權
(2)檔案包含哪些塊
(3)每個塊儲存在哪個datanode上(由datanode啟動時上報)
解釋:每個塊儲存在哪個datanode上,這個資訊不會儲存在namenode磁碟上,而是當hdfs系統啟動時,datanode會將此資訊上報給namenode,由namenode儲存在記憶體中,並且每隔一段時間都會重新上報一次。
-- namenode的元資料資訊在啟動後會載入到記憶體
(1)元資料儲存到磁碟檔名為fsimage檔案中
(2)塊的位置資訊不會儲存到fsimage檔案中
(3)edits檔案記錄對元資料的操作日誌(刪除檔案,上傳檔案的操作會記錄在edits檔案中,而不是馬上修改fsimage檔案,而是每隔一段時間將edits檔案與fsimage合併,將相應資料刪除或增加資料)
注意:元資料的資訊始終有兩份,乙份儲存在磁碟中,乙份儲存在記憶體中。但是塊的位置資訊只會儲存在記憶體中,也即關機之後該資料就沒有了,但是重啟之後就會重新上報該資訊。
二、secondarynamenode(snn)
-- 它不是namenode的備份(但可以做一部分備份),它的主要工作是幫助namenode合併edits日誌,減少namenode的啟動時間。
解釋:由於對檔案的操作不會直接修改fsimage,而是在edits檔案中記錄相應操作,所以需要將edits與fsimage合併,而在合併時需要頻繁的i/o操作。如果該操作有namenode自己完成,則計算機需要分配大量資源支援它完成合併,但是namenode的主要任務是接受客戶端讀寫服務,若大量資源都去支援edits與fsimage合併,那麼讀寫服務就會變得很慢,所以namenode不做合併,而是由secondarynamenode完成,並且hdfs配置時,這兩個節點一般配置在不同的電腦上,因此不會相互占用資源。在合併完之後,會得到乙個新的fsimage檔案,將其傳送給namenode,並替換原始的fsimage檔案。
-- snn執行合併時機
(1)根據配置檔案設定時間間隔fs.checkpoint.period,預設為3600秒
(2)根據配置檔案設定edits檔案大小fs.checkpoint.size,規定edits檔案最大值預設為64mb,即當edits檔案達到64mb時,即使沒有達到3600秒,也會進行合併。
(3)合併流程:如下圖,在namenode中,edits是日誌記錄檔案,fsimage是磁碟中儲存元資料的檔案,到達合併時間後,snn會將nn(namenode)中相應兩個檔案拷貝過來(跨網路拷貝),拷貝的同時,nn中會生成乙個新的edits檔案繼續記錄使用者操作。在snn中,將拷貝過來的edits檔案和fsiamge檔案合併成乙個新的fsimage檔案,然後將新的fsimage推送給namenode,之後namenode將新的fsimage替換為原來的fsimage。下次合併,重複上述步驟。由下圖可知,snn可以對namenode做一部分備份,如果namenode掛掉,可以通過snn中上次拷貝過來的edits檔案和fsimage檔案恢復大部分資料,因此namenode和secondary namenode一般不配置在同一臺電腦上。
三、datanode(dn)
-- 儲存資料(block)
-- 啟動dn執行緒時,會向namenode匯報block位置資訊
-- 通過向namenode傳送心跳保持與其聯絡(3秒一次),如果namenode 10分鐘沒有收到dn心跳,則認為該節點已經丟失,並拷貝其上的block到其他的datanode節點上,保證最小副本數(預設為3個)。
block副本放置策略:
-- 第乙個副本:放置在上傳檔案的datanode。如果是集群外提交,檔案上傳時,隨機挑選一台磁碟不太滿,cpu不太忙的節點放置第乙個副本。
-- 第二個副本:放置在與第乙個副本不同機架的節點上(因為同一機架電源一般是相同的)。
-- 第三個副本:與第二個副本相同機架的節點。
注意:在配置檔案中,會將每台伺服器節點對應的機架編號配置在配置檔案中。
這裡會有乙個問題:為什麼第三個副本要放置在與第二個副本相同的機架上?
因為第乙個副本和第二個副本已經存放在兩個不同的機架上,保證了安全性,因此在保證安全性的前提下,要保證傳輸速度要快,而在同一機架傳輸的速度會更快,這樣既做到了安全性,又保證了傳輸速度快。
HDFS高階功能
hdfs的高階功能 1 站 補充 oracle的 站 恢復 閃回 flashback 1 閃回表 flashback table 2 閃回刪除 flashback drop 3 閃回查詢 flashback query 4 閃回事務查詢 flashback transaction query 可以撤...
HDFS快照snapshot功能
hdfs 快照是檔案系統的唯讀時間點副本。可以在檔案系統或整個檔案系統的子樹上拍攝快照。快照的一些常見用例是資料備份 防止使用者錯誤和災難恢復。hdfs 快照的實現是有效的 一旦目錄被設定為 snapshotable,就可以在任何目錄上拍攝快照。乙個快照目錄可以同時容納65,536個快照。快照目錄的...
HDFS節點內資料平衡
hadoop集群使用久了,我們會發現乙個問題,各個datanode資料不平衡了,多的達到70 80 少的達到10 20 面對這種場景,我們一般使用hdfs自帶的blancer工具對其資料進行平衡。也就是他只能保證每乙個節點的資料大小均衡。但是有的時候,你會發現節點資料平衡了但是datanode內部各...