本文原創,轉載注明作者和原文鏈接!
一:總結注意點:

到現在為止學習到的角色:三個NameNode、SecondaryNameNode、DataNode
1.存儲的是每一個文件分割存儲之后的元數據信息。具體的信息有:
2.而且NameNode的存儲是內存存儲的,不會有和磁盤的數據交換的過程,這樣的話提高了整體的集群的效率,但是這個數據都是需要持久化的,因為不持久化的話,數據是不安全的,加假如哪一天hadoop集群中的NameNode那台服務器掛了的話,里面的元數據如果只是存儲在內存中的就全部的丟失了,這樣會導致所有的DataNode中的塊數據都會報廢掉,因為都不知道哪個結點的那個塊是屬於原始存儲的哪個文件了,所以nameNode中會有一個元數據持久化的過程。
具體的持久化過程:在集群format也就是搭建的過程中,會產生一個fsimage,之后在啟動集群之后,會根據客戶端的指令,產生一個edits log文件,之后集群系統會有機制去限制edits log文件的大小,不超過某個可以我們規定的大小,每天HDFSClient客戶端發送指令的時候,edits log日志文件都會記錄,直到達到系統中的checkpoint點,NameNode會將edits log文件和fsimage交給SecondaryNameNode去將兩者有效的結合,之后回交給NameNode,NameNode會將之前擁有的那個edits log文件刪除掉,當產生第二主節點返回結合體之后,會將之前的fsimage替換掉,這就是一次edits log文件和fsimage結合的過程,具體的可以看結合過程 另一篇博文hadoop學習筆記(一):NameNade持久化和DataNode概念。
3.只要是已經存儲到HDFS分布式文件存儲系統中的數據塊之后,就不能改變大小了,因為如果改變其中某個文件分割成的某塊數據的話,其他的副本都要變,這樣就會無形之中給集群添加很多壓力。
4.具體的文件塊的大小:對於同一個源數據來說的話,他所分割的各個塊的大小都必須是一樣的,但是對於不同的源文件的之間的話,分割存儲時候分割成的塊的大小可以是不一樣的
5.DataNode 中具體存儲的源文件的block數據塊,就是在服務器中的文件目錄中存儲的,並沒有涉及到內存存儲的問題
6.DataNode也會存儲一部分元數據信息:如每一個數據塊都會有一個md5 信息,用於每次下載數據塊的時候去和上傳的時候存儲的那個MD5碼進行比較,來判斷這塊數據塊是不是還是完整的,如果上傳的時候的MD5和下載的時候的MD5碼是一樣的,則就認為是可用的塊。
7.具體的數據塊需要多少個副本,這個可以根據這個塊的使用量去定,如果這個塊的訪問量高的話,可以多存儲副本,相反可以少存儲副本,但是一本默認的副本的數量是3塊
8.hadoop這個集群,都計算的框架向文件的存儲位置進行移動的,而不是文件想計算框架移動,因為前者的資源消耗更低
9.在集權運行的過程中,NameNode和DataNode是時刻保持着心跳的聯系的,DataNode會隔多長時間向主結點匯報自己身上存儲的塊的狀態信息,以保證客戶端訪問主結點的時候,主結點能夠正確的告訴客戶端你要找的數據在哪太dataNode結點之上。
10.安全模式:指的即時fsimage和edits log文件的對於NameNode狀態恢復機制
二、HDFS文件權限的分配問題

其中的POSIX標准和window‘linux系統的那種文件的權限策略差不多,但是還是有區別的,因為HDFS是文件系統,而后面的window和linux是操作系統,
具體的hdfs的權限:當訪問HDFS的時候,有什么權限的人訪問,就會賦予這個人在HDFS系統中什么樣的操作權限。
三 、安全模式

