2022年Hadoop分布式文件系统架构和设计要点 .pdf
《2022年Hadoop分布式文件系统架构和设计要点 .pdf》由会员分享,可在线阅读,更多相关《2022年Hadoop分布式文件系统架构和设计要点 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、前提和设计目标1、硬件错误是常态,而非异常情况,HDFS 可能是有成百上千的server 组成,任何一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是HDFS 的核心架构目标。2、跑在 HDFS 上的应用与一般的应用不同,它们主要是以流式读为主,做批量处理;比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。3、HDFS 以支持大数据集合为目标,一个存储在上面的典型文件大小一般都在千兆至 T 字节,一个单一 HDFS 实例应该能支撑数以千万计的文件。4、HDFS应用对文件要求的是write-one-read-many访问模型。一个文件经过创建、写,关闭之后就不需要改变。这
2、一假设简化了数据一致性问题,使高吞吐量的数据访问成为可能。典型的如MapReduce 框架,或者一个 web crawler 应用都很适合这个模型。5、移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好,HDFS 提供给应用这样的接口。6、在异构的软硬件平台间的可移植性。二、三、二、Namenode 和 Datanode 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -HDFS 采用 master/slave架构。一个 HDFS 集群是有一个 Na
3、menode 和一定数目的 Datanode 组成。Namenode 是一个中心服务器,负责管理文件系统的 namespace和客户端对文件的访问。Datanode 在集群中一般是一个节点一个,负责管理节点上它们附带的存储。在内部,一个文件其实分成一个或多个 block,这些 block 存储在 Datanode 集合里。Namenode 执行文件系统的 namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体 Datanode 节点的映射。Datanode在 Namenode 的指挥下进行 block的创建、删除和复制。Namenode 和 Datanode 都是设
4、计成可以跑在普通的廉价的运行 linux的机器上。HDFS 采用 java 语言开发,因此可以部署在很大范围的机器上。一个典型的部署场景是一台机器跑一个单独的Namenode 节点,集群中的其他机器各跑一个Datanode 实例。这个架构并不排除一台机器上跑多个 Datanode,不过这比较少见。单一节点的 Namenode 大大简化了系统的架构。Namenode 负责保管和管理所有的 HDFS 元数据,因而用户数据就不需要通过Namenode(也就是说文件数据的读写是直接在Datanode 上)。三、文件系统的 namespace HDFS 支持传统的层次型文件组织,与大多数其他文件系统类似
5、,用户可以创建目录,并在其间创建、删除、移动和重命名文件。HDFS 不支持 user quotas 和访问权限,也不支持链接(link),不过当前的架构并不排除实现这些特性。Namenode 维护文件系统的 namespace,任何对文件系统 namespace和文件属性的修改都将被Namenode 记录下来。应用可以设置 HDFS 保存的文件的副本数目,文件副本的数目称为文件的 replication因子,这个信息也是由 Namenode 保存。四、数据复制 HDFS 被设计成在一个大集群中可以跨机器地可靠地存储海量的文件。它将每个文件存储成block 序列,除了最后一个block,所有的
6、block 都是同样的大小。文件的所有block 为了容错都会被复制。每个文件的block大小和 replication因子都是可配置的。Replication因子可以在文件创建的时候配置,以后也可以改变。HDFS 中的文件是 write-one,并且严格要求在任何时候只有一个writer。Namenode 全权管理 block 的复制,它周期性地从集群中的每个Datanode 接收心跳包和一个Blockreport。心跳包的接收表示该 Datanode 节点正常工作,而 Blockreport包括了该 Datanode 上所有的 block 组成的列表。名师资料总结-精品资料欢迎下载-名师精
7、心整理-第 2 页,共 7 页 -1、副本的存放,副本的存放是HDFS 可靠性和性能的关键。HDFS 采用一种称为rack-aware 的策略来改进数据的可靠性、有效性和网络带宽的利用。这个策略实现的短期目标是验证在生产环境下的表现,观察它的行为,构建测试和研究的基础,以便实现更先进的策略。庞大的HDFS 实例一般运行在多个机架的计算机形成的集群上,不同机架间的两台机器的通讯需要通过交换机,显然通常情况下,同一个机架内的两个节点间的带宽会比不同机架间的两台机器的带宽大。通过一个称为 Rack Awareness 的过程,Namenode 决定了每个 Datanode 所属的 rack id。一
8、个简单但没有优化的策略就是将副本存放在单独的机架上。这样可以防止整个机架(非副本存放)失效的情况,并且允许读数据的时候可以从多个机架读取。这个简单策略设置可以将副本分布在集群中,有利于组件失败情况下的负载均衡。但是,这个简单策略加大了写的代价,因为一个写操作需要传输 block 到多个机架。在大多数情况下,replication因子是 3,HDFS 的存放策略是将一个副本存放在本地机架上的节点,一个副本放在同一机架上的另一个节点,最后一个副本放在不同机架上的一个节点。机架的错误远远比节点的错误少,这个策略不会影响到数据的可靠性和有效性。三分之一的副本在一个节点上,三分之二在一个机架上,其他保存
9、在剩下的机架中,这一策略改进了写的性能。2、副本的选择,为了降低整体的带宽消耗和读延时,HDFS 会尽量让 reader 读最近的副本。如果在reader 的同一个机架上有一个副本,那么就读该副本。如果一个 HDFS 集群跨越多个数据中心,那么 reader 也将首先尝试读本地数据中心的副本。3、SafeMode Namenode 启动后会进入一个称为SafeMode的特殊状态,处在这个状态的Namenode 是不会进行数据块的复制的。Namenode 从所有的 Datanode 接收心跳包和 Blockreport。Blockreport包括了某个 Datanode所有的数据块列表。每个bl
10、ock 都有指定的最小数目的副本。当 Namenode 检测确认某个 Datanode 的数据块副本的最小数目,那么该 Datanode 就会被认为是安全的;如果一定百分比(这个参数可配置)的数据块检测确认是安全的,那么Namenode 将退出 SafeMode状态,接下来它会确定还有哪些数据块的副本没有达到指定数目,并将这些block 复制到其他 Datanode。五、文件系统元数据的持久化名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -Namenode 存储 HDFS 的元数据。对于任何对文件元数据产生修改的操作,Namenode 都使用一个称为 Editlog的事
11、务日志记录下来。例如,在HDFS 中创建一个文件,Namenode 就会在 Editlog中插入一条记录来表示;同样,修改文件的 replication因子也将往 Editlog插入一条记录。Namenode 在本地 OS的文件系统中存储这个 Editlog。整个文件系统的namespace,包括 block 到文件的映射、文件的属性,都存储在称为 FsImage的文件中,这个文件也是放在Namenode所在系统的文件系统上。Namenode 在内存中保存着整个文件系统namespace和文件 Blockmap的映像。这个关键的元数据设计得很紧凑,因而一个带有4G内存的 Namenode足够支
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Hadoop分布式文件系统架构和设计要点 2022 Hadoop 分布式 文件系统 架构 设计 要点
限制150内