生活随笔
收集整理的這篇文章主要介紹了
HDFS相关概念
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
博客內(nèi)容來自《Hadoop權威指南:大數(shù)據(jù)的存儲與分析》第4版,記錄一下幫助自己理一下思路
一、數(shù)據(jù)塊
hdfs的塊(block)比磁盤的數(shù)據(jù)塊大很多,磁盤數(shù)據(jù)塊一般為512字節(jié),而hdfs的塊默認大小為128M。hdfs上的文件被分為多個分塊作為獨立的存儲單元,如果一個文件大小小于hdfs一個分塊的大小,這個文件并不會占取整個塊的空間。hdfs中塊這么大的原因:hdfs中將塊設置得很大,其目的是為了最小化尋址開銷,如果塊足夠大,從磁盤傳輸數(shù)據(jù)的時間會明顯大于定位這個塊開始位置的時間。這樣的話,chuan傳輸一個由多個塊組成的大文件的時間就會取決于磁盤的傳輸速率對hdfs中的塊進行抽象的好處 - 一個文件的大小可以大于網(wǎng)絡中任意一個磁盤的容量,文件中所有的塊并不需要存儲在同一個磁盤上,因此他們可以利用集群上任意一個磁盤存儲。
- 使用抽象塊作為存儲單元而非整個文件,大大簡化了存儲子系統(tǒng)的設計。將存儲子系統(tǒng)的管理對象設置為塊,可以簡化存儲管理,因為塊的大小是固定的,所以計算單個磁盤能存儲多少塊就比較容易;同時也消除了對元數(shù)據(jù)的顧慮,因為塊只存儲大塊的數(shù)據(jù),而元數(shù)據(jù)并不需要與塊一起存儲,其他系統(tǒng)可以單獨管理元數(shù)據(jù)。
- 塊非常適合用于數(shù)據(jù)備份,提供數(shù)據(jù)容錯能力和提高可用性。每個塊會復制到幾個相互獨立的機器中,默認為3個,這樣就可以確保在塊、磁盤或機器發(fā)生故障后數(shù)據(jù)不會丟失。
二、namenode和datanode
hdfs有兩類節(jié)點,以管理節(jié)點--工作節(jié)點模式運行,即一個namenode和多個datanode
namenode:namenode 是管理節(jié)點,管理系統(tǒng)的命名空間,維護文件系統(tǒng)數(shù)和樹內(nèi)所有的文件和目錄;namenode 也記錄每個文件中各個塊所在的數(shù)據(jù)節(jié)點信息,但是不會永久保存塊的位置信息,這些信息會在客戶端啟動時根據(jù)數(shù)據(jù)節(jié)點信息重建。datanode:文件系統(tǒng)中的工作節(jié)點,受客戶端或namenode的調(diào)度,根據(jù)需要存儲并檢索數(shù)據(jù)塊,并且定期向namenode發(fā)送他們所存儲的塊的列表。namenode容錯機制:如果運行namenode服務的機器損壞,文件系統(tǒng)上的所有文件都會丟失,因為并不知道如何根據(jù)namenode的塊重建文件,hadoop為namenode提供了兩種容錯機制備份哪些組成組成文件系統(tǒng)元數(shù)據(jù)持久狀態(tài)的文件。也就是hadoop通過配置使namenode在多個文件系統(tǒng)上保存元數(shù)據(jù)的持久狀態(tài),這種寫操作是實時同步的,而且是原子操作。運行一個輔助nemanode,但是不能被用作namenode,它的重要作用是定期合并編輯日志與命名空間鏡像,防止編輯日志過大。它會保存合并后的命名空間鏡像的副本,在namenode發(fā)生故障時啟用。?三、塊緩存
通常datanode從磁盤中讀取數(shù)據(jù),但是對于訪問頻繁的數(shù)據(jù),其對應的塊可能被顯式地緩存在datanode的內(nèi)存中,以堆外緩存的形式存在。作業(yè)調(diào)度器通過在緩存塊的datanode上執(zhí)行任務,可以利用塊緩存的有時提高讀操作的性能。
轉(zhuǎn)載于:https://www.cnblogs.com/frankxx/p/9280686.html
總結
以上是生活随笔為你收集整理的HDFS相关概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。