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