大数据-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相信你告诉我你是谁, 你就是谁