大數據-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相信你告訴我你是誰, 你就是誰