大数据技术 - 分布式文件系统 HDFS 的设计

本章内容介绍下 Hadoop 自带的分布式文件系统,HDFS 即 Hadoop Distributed Filesystem。HDFS 能够存储超大文件,可以部署在廉价的服务器上,适合一次写入多次读取的场景。但 HDFS 不适合低延迟,存储大量小文件以及修改文件内容的场景。HDFS 应用比较广泛,如:MR任务、Spark任务、Hive 数据仓库以及 Hbase 数据库,它们的底层存储都可以基于 HDFS 。本章将介绍 HDFS 集群的架构设计以及相关的重要概念。

HDFS的设计以及概念

HDFS集群是典型的 master/slave 架构,master 节点叫做 NameNode,salve 节点叫做 DataNode。最简单的 HDFS 集群便是一个 NameNode 节点和多个 DataNode 节点,HDFS 集群的架构图如下

大数据技术 - 分布式文件系统 HDFS 的设计

Block:数据块,HDFS 集群将存储的文件划分为多个分块,块作为独立的存储单元,默认大小为为 128M。如果某个文件超过集群单机存储容量,分块可以解决该问题;其次按照块进行存储、备份能简化系统的设计。默认块大小修改 hdfs-site.xml 文件中的 dfs.blocksize 配置。

NameNode:HDFS 集群的 Master 节点,维护集群文件的目录结构(命名空间)和编辑日志文件,同时在内存中记录文件各个块所在的数据节点的信息。

DataNode:HDFS 集群的 Slave 节点,负责存储实际的数据。根据需要存储和检索数据块,并定期向 NameNode 发送他们所存储的数据块列表。为了实现数据存储的高可靠,HDFS 将一个块存储在不同的 DataNode 节点, 默认是 3 个,可以通过 hdfs-site.xml 文件中的 dfs.replication 配置修改默认值。如果当前 DataNode 中的数据块损坏, 可以从其他 DataNode 节点复制一个正确的数据块。

以上是架构图中显而易见的几个重要概念,接下来将结合架构设计中的高可用、可扩展性来介绍下架构图中隐藏的几个重要概念。

联邦 HDFS:这个主要是为了解决可扩展性的问题,我们知道 NameNode 进程的内存中存放了数据与数据位置的对应关系,对于一个文件数据量多的集群来说,NameNode 的内存将成为集群规模扩大的瓶颈。因此,单一 NameNode 的集群并不可取。Hadoop 2.x 的发行版引入了联邦 HDFS 允许向集群中添加 NameNode 节点实现横向扩展。每一个 NameNode 管理命名空间中的一部分,每个 NameNode 维护一个命名空间卷(namespace volume),命名空间卷之间相互独立,一个 NameNode 失效不会影响其他 NameNode 维护的命名空间。

HDFS HA: 这个解决高可用,即 HDFS High Available。这一实现中配置了一对活动-备用(active-standby)NameNode。当活动的 NameNode 失效,备用 NameNode 会接管相应的任务,这一过程对用户透明。实现这一设计,需要在架构上做如下修改:

  1. HA 的两个 NameNode 之间通过高可用共享存储实现编辑日志的共享,目的是为了能够使备用 NameNode 接管工作后实现与主 NameNode 状态同步。QJM(日志管理器,quorum journal manager)是为提供一个高可用的日志编辑而设计的,被推荐用于大多数 HDFS 集群中。QJM 以一组日志节点的形式运行,一般是 3,每一次编辑必须写入多数日志节点,因此系统可以忍受任何一个节点丢失,日志节点便是 JournalNode。

  2. DataNode 需要同时向 2 个 NameNode 发送数据报告,因为数据块的映射信息存储在 NameNode 的内存中

  3. 客户端需要处理 NameNode 失效的问题,对用户透明

HDFS的基本操作 命令行接口

命令行接口操作 HDFS 是最简单、最方便的方式。HDFS 的命令与 Linux 本地命令非常相似,可以通过 hadoop fs help 命令查看 HDFS 所支持所有命令,接下来介绍下常用的命令

hadoop fs -put <localsrc> <dst> #将本地文件上传至 HDFS hadoop fs -ls <path> # 与 Linux ls命令类似 hadoop fs -cat <src> #查看 HDFS 文件数据 hadoop fs -text <path> # 同 cat 命令, 可以看 SequenceFile、压缩文件
hadoop fs -rm <src> # 删除 HDFS 文件或目录

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypzsz.html