Hadoop的文件基本系统介绍

HDFS基本介绍

HDFS 是 Hadoop Distribute File System 的简称,意为:Hadoop 分布式文件系统。是 Hadoop 核心组件之一,作为最底层的分布式存储服务而存在。

分布式文件系统解决的问题就是大数据存储。它们是横跨在多台计算机上的存储系统。分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。
在这里插入图片描述
简记:将多个节点上的容量汇总到一起,拼接成一个大的文件系统,在一个节点上传数据,在其他的节点上都能够访问使用

HDFS 使用 Master 金额 Slave 结构对集群进行管理。一般一个 HDFS 集群只有一个 NameNode 和一定数目的 DataNode 组成。NameNode 是 HDFS 集群主节点,DataNode 是 HDFS 集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。
在这里插入图片描述
NameNode(Master)管理者 _ 只负责管理,管理集群内各个节点。
SecondaryNameNode 辅助管理者 _ 只负责负责 NameNode 管理工作
DateNode(Slave)工作者,是负责工作,周期想NameNode汇报,进行读写数据

1)HDFS 集群包括,NameNode 和 DataNode 以及Secondary NameNode。
2)NameNode 负责管理整个文件系统的元数据,以及没一个路径(文件)所对应的的数据块信息。
3)DataNode 负责管理用户的文件数据块,,每一个数据块都可以在多个 datanode 上存储多个副本。
4)Secondary NameNode 用来监控 HDFS 状态的辅助后台程序,每隔一段时间获取 HDFS 元数据的快照。最主要作用是辅助 NameNode 管理元数据信息。
在这里插入图片描述

HDFS分块存储

HDFS 将所有的文件全部抽象成为 block 块来进行存储,不管文件大小,全部一视同仁都是以 block 块的统一大小和形式进行存储,方便我们的分布式文件系统对文件的管理。
所有的文件都是以 block 块的方式存放在 HDFS 文件系统当中,在 Hadoop1 当中,文件的 block 块默认大小是64M,Hadoop2 当中,文件的 block 块大小默认就是128M,block 块的大小可以通过 hdfs-site.xml 当中的配置文件进行指定

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

在这里插入图片描述
事实上,128只是个数字,数据超过128M,便进行切分,如果没有超过128M,就不用切分,有多少算多少,不足128M的也是一个快。这个快的大小就是100M, 没有剩余28M这个概念。

抽象成数据块的好处

  1. 一个文件有可能大于集群中任意一个磁盘 20T/128 = xxx 块,这些 block 块属于一个文件
  2. 使用块抽象而不是文件,可以简化存储子系统。
  3. 块非常适合用于数据备份进而提供数据容错能力和可用性

块缓存

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

HDFS副本机制

HDFS 视硬件错误为常态,硬件服务器随时有可能发生故障。
为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可以配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。
数据副本默认保存三个副本,我们可以更改副本数以提高数据的安全性。
在 hdfs-site.xml 当中修改一下配置属性,即可更改文件的副本数。

<property>
      <name>dfs.replication</name>
      <value>3</value>
</property>

低版本 Hadoop 副本节点选择

第一个副本在 client 所处对处的节点上。如果客户端在集群外,随机选一个。
第二个副本和第一个副本位于不相同机架随机节点上。
第三个副本和第二个副本位于相同机架上,节点随机。
在这里插入图片描述
Hadoop2.7.2 副本节点选择
第一个副本在client所处节点上,如果客户端在集群外,随机选一个。
第二个副本和第一个副本位于相同机架,节点随机。
第三个副本位于逻辑距离最近的不相同机架上,节点随机。
在这里插入图片描述

名字空间(NameSpace)

HDFS 支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件。

NameNode 负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被 NameNode 记录下来。

HDFS 会给客户端提供一个统一的目录树,客户端通过路径来访问文件,形如:
hdfs://namenode:port/dir-b/dir-c/file.data。

NameNode 功能

一般吧目录结构及文件分块位置信息叫做元数据。NameNode 负责维护整个 HDFS 文件系统的目录树结构,以及每一个文件所对应的 block 块信息(block 的id,及所在的 DataNode 服务器)。

NameNode 节点负责确定指定的文件块到具体的 DataNode 节点的映射关系。在客户端与数据节点之间共享数据。
在这里插入图片描述
管理 DataNode 节点的状态报告,包括 DataNode 节点的健康状态报告和其所在节点上数据块状态报告,以便能够及时处理失效的数据节点。
在这里插入图片描述

DataNode 功能

文件的各个 block 的具体存储管理由 DataNode 节点承担。每一个 block 都可以在多个 DataNode 上。DataNode 需要定时向 NameNode 汇报自己持有的 block 信息。存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)。

向 NameNode 节点报告状态。每个 DataNode 节点会周期性地向 NameNode 发送心跳信息和文件状态报告。

心跳是每三秒一次,心跳返回结果带有 NameNode 给该 DataNode 的命令如复制快数据到另一台机器,或删除某个数据块。如果超过十分钟没有收到某个 DataNode 的心跳,则认为该节点不可用。

DataNode 启动后向 NameNode 注册,通过后,周期性(1小时)的向 NameNode 上报所有的块信息。
在这里插入图片描述
执行数据的流水线复制。当文件系统客户端从 NameNode 服务器进程获取到要进行复制的数据块列表后,完成文件块及其块副本的流水线复制。

一个数据块在 DataNode 上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个元数据包括数据块的长度,块数据的校验和,以及时间戳。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值