写点什么

HDFS 的 block 块和副本机制

发布于: 2021 年 04 月 06 日
HDFS的block块和副本机制

hdfs 将所有的文件全部抽象成为 block 块来进行存储,不管文件大小,全部一视同仁都是以 block 块的统一大小和形式进行存储,方便我们的分布式文件系统对文件的管理


所有的文件都是以 block 块的方式存放在 HDFS 文件系统当中,在 hadoop1 当中,文件的 block 块默认大小是 64M,hadoop2 当中,文件的 block 块大小默认是 128M,block 块的大小可以通过 hdfs-site.xml 当中的配置文件进行指定

   <property>        <name>dfs.block.size</name>        <value>块大小 以字节为单位</value>//只写数值就可以    </property>
复制代码

1 抽象为 block 块的好处

  • 一个文件有可能大于集群中任意一个磁盘​ 10T*3/128 = xxx 块 2T,2T,2T 文件方式存—–>多个 block 块,这些 block 块属于一个文件

  • 使用块抽象而不是文件可以简化存储子系统

  • 块非常适合用于数据备份进而提供数据容错能力和可用性

2 块缓存

​ 通常 DataNode 从磁盘中读取块,但对于访问频繁的文件,其对应的块可能被显示的缓存在 DataNode 的内存中,以堆外块缓存的形式存在。默认情况下,一个块仅缓存在一个 DataNode 的内存中,当然可以针对每个文件配置 DataNode 的数量。作业调度器通过在缓存块的 DataNode 上运行任务,可以利用块缓存的优势提高读操作的性能。


例如:​

连接(join)操作中使用的一个小的查询表就是块缓存的一个很好的候选。 用户或应用通过在缓存池中增加一个 cache directive 来告诉 namenode 需要缓存哪些文件及存多久。缓存池(cache pool)是一个拥有管理缓存权限和资源使用的管理性分组。


例如:

​ 一个文件 130M,会被切分成 2 个 block 块,保存在两个 block 块里面,实际占用磁盘 130M 空间,而不是占用 256M 的磁盘空间

3 hdfs 的文件权限验证

​ hdfs 的文件权限机制与 linux 系统的文件权限机制类似


​ r:read w:write x:execute 权限 x 对于文件表示忽略,对于文件夹表示是否有权限访问其内容


​ 如果 linux 系统用户 zhangsan 使用 hadoop 命令创建一个文件,那么这个文件在 HDFS 当中的 owner 就是 zhangsan


​ HDFS 文件权限的目的,防止好人做错事,而不是阻止坏人做坏事。HDFS 相信你告诉我你是谁,你就是谁

4 hdfs 的副本因子

​ 为了保证 block 块的安全性,也就是数据的安全性,在 hadoop2 当中,文件默认保存三个副本,我们可以更改副本数以提高数据的安全性


​ 在 hdfs-site.xml 当中修改以下配置属性,即可更改文件的副本数

	<property>                <name>dfs.replication</name>                <value>3</value>        </property>
复制代码


发布于: 2021 年 04 月 06 日阅读数: 17
用户头像

还未添加个人签名 2021.03.07 加入

还未添加个人简介

评论

发布
暂无评论
HDFS的block块和副本机制