這篇文章主要為大家展示了“Hadoop中HDFS的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Hadoop中HDFS的示例分析”這篇文章吧。
hadoop是一個適合大數據處理的分布式的存儲以及計算平臺,我個人感覺稱他為平臺是 非常貼切的,因為不管是hive、hbase等這類產品都是需要依賴hadoop的兩個核心hdfs和mapreduce。hdfs和mapreduce是hadoop平臺的基礎核心,其中hdfs是負責大數據的分布式存儲,而mapreduce是數據處理的計算框架。下面就開始記錄hdfs,mapreduce后面再記錄咯。
對于HDFS,我個人感覺就是架構在操作系統平臺上面的一個文件管理系統,跟操作系統的文件系統不同的是他具有了對文件的自動的分布式管理的能力,不過這一切對于用戶來說都是透明的,比如我們向hdfs put一個文件時他會根據我們的設置對該文件產生replication,這里只是說他的分布式存儲,為了更適合大數據的處理,hdfs也有自己的機制。
當集群啟動的時候,默認進入安全模式。默認30秒會自動退出。
在安全模式下,只能讀,不能寫。
dfsadmin -safemode get|enter|leave
如果遇到集群剛剛啟動,就立刻執行寫操作,系統會報錯。
安全模式給了系統一個初始化的時間。
clrQuota 取消
setSpaceQuota 限制某個目錄的空間大小。
clrSpaceQuota 取消
hdfs dfs -count -q /lisi 查看配置設置的值
分布式的文件系統,意味著數據存儲在很多節點上。
NameNode用來管理元數據本身。DataNode用來管理數據本身。
管理元數據的節點。管理著文件(夾)的元數據,如權限、所有者、所在組、大小、最后訪問時間、最后修改時間、名稱、配額。
客戶端在訪問數據的時候,首先和NameNode打交道。元數據信息位于fsimage文件中,fsimage是hdfs狀態的體現。當集群啟動的時候,fsimage中的信息加載到內存中。
edits中保存的是操作日志。edits是hdfs 事務的體現。
在hdfs-site.xml中,配置dfs.namenode.name.dir的值,是多個都好分隔的目錄列表。fsimage內容就會同時存儲在多個目錄中,實現數據安全。
在hdfs-site.xml中,配置dfs.namenode.edits.dir的值,是${dfs.namenode.name.dir}。
如果機器宕機,以上方案就無效了。實現NameNode的HA功能。
實現數據的存儲。很多的節點,每個節點都是DataNode。
DataNode存儲數據的時候,都是以block形式存儲。
block是DataNode存儲數據的基本單位,類似于快遞公司的包裹。
為了節省空間,一般只會規定包裹的最大尺寸,不會規定標準尺寸,hdfs的block也是這個原理。block的最大尺寸是128MB,沒有最小尺寸。
當一個12k的數據存放到一個block中時,該block只占用12k的磁盤物理空間。
在前面看fsimage的內容時,發現每個文件都有block對應。fsimage的內容在集群運行時,存放在內存中。每個文件會產生至少一個block。當小文件非常多的時候,對Namenode節點的內存產生什么影響?多耗費內存,造成內存壓力大。 所以hdfs不適合存儲大量的小文件
當namenode -format命令執行的時候,在namenode節點和datanode節點的VERSION中都會產生一個namespaceID值,并且這兩個值必須相同。如果再次執行格式化,那么namenode會產生一個新的namespaceID,但是datanode不會產生新的值。
讀寫與生活的舉例:去客戶現場解決問題,我(客戶端)需要去詢問項目經理(namenode)客戶的地址等信息,項目經理告訴我(block location等),我就可以去客戶現場,我告訴客戶解決了,客戶需要確認解決了才是真正的解決,我再去跟項目經理報告。
Hdfs的讀寫其實跟普通的文件系統讀寫基本上一樣,只是多了一個中間的注冊。就像我們單身的時候花錢自己怎么花都可以,但是結了婚就需要先通過媳婦那才可以咯
Namenode維護者兩張表(從namenode源碼得知),一張是文件與block塊的映射(blockid,可以在fsimage文件中看到,存在本地磁盤),另一張是block塊和磁盤的映射(體現為inode,既是每一個塊與塊所在datanode磁盤的位置,在每次hdfs啟動時都要重新生成,其實就是每次啟動進入安全模式的時候datanode向namenode報告的塊信息)即:filename—blocksequence block—node 前者是靜態的(一旦改變會影響數據的信息不對應) 后者是動態的(分布式情況下,節點宕機是常態,則需要更新對應關系)
Slaves文件只是在集群啟動的時候使得能夠一起啟動datanode節點,即使slaves文件不正常,也只是在啟動namenode時無法啟動datanode,手動啟動datanode時也是可以正常使用的,因為他們的vision文件中的namespaceID是相同的
以上是“Hadoop中HDFS的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。