大數據-HDFS 文件副本和 Block 塊存儲
- 2019 年 12 月 25 日
- 筆記
1.4. HDFS 文件副本和 Block 塊存儲
所有的文件都是以 block 塊的方式存放在 HDFS 文件系統當中, 在 Hadoop1當中, 文件的 block 塊默認大小是 64M, hadoop2 當中, 文件的 block塊大小默認是 128M, block 塊的大小可以通過 hdfs-site.xml當中的配置文件進行指定
<property> <name>dfs.block.size</name> <value>塊大小 以位元組為單位</value> </property>
1.4.1. 引入塊機制的好處
- 一個文件有可能大於集群中任意一個磁碟
- 使用塊抽象而不是文件可以簡化存儲子系統
- 塊非常適合用於數據備份進而提供數據容錯能力和可用性
1.4.2. 塊快取
通常 DataNode 從磁碟中讀取塊, 但對於訪問頻繁的文件,其對應的塊可能被顯式的快取在 DataNode 的記憶體中, 以堆外塊快取的形式存在.默認情況下,一個塊僅快取在一個 DataNode的記憶體中,當然可以針對每個文件配置 DataNode 的數量.作業調度器通過在快取塊的 DataNode 上運行任務,可以利用塊快取的優勢提高讀操作的性能.
例如:
連接(join) 操作中使用的一個小的查詢表就是塊快取的一個很好的候選用戶或應用通過在快取池中增加一個 Cache Directive 來告訴 NameNode需要快取哪些文件及存多久. 快取池(Cache Pool)是一個擁有管理快取許可權和資源使用的管理性分組.
例如一個文件 130M, 會被切分成 2 個 block 塊, 保存在兩個 block 塊裡面,實際佔用磁碟 130M 空間, 而不是佔用256M的磁碟空間
1.4.3. HDFS 文件許可權驗證
HDFS 的文件許可權機制與 Linux 系統的文件許可權機制類似
r:read w:write x:execute
許可權 x 對於文件表示忽略, 對於文件夾表示是否有許可權訪問其內容 如果 Linux系統用戶 zhangsan 使用 Hadoop 命令創建一個文件, 那麼這個文件在 HDFS當中的 Owner 就是 zhangsan HDFS 文件許可權的目的, 防止好人做錯事,而不是阻止壞人做壞事. HDFS相信你告訴我你是誰, 你就是誰


