HDFS的副本放置策略及机架感知

简介: 副本放置策略的基本思想是:第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太满或者太忙的node)。第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。第三个副本和第二个在同一个机架,随机放在不同的node中。

HDFS副本放置策略

副本放置策略的基本思想是:

  • 第一个block副本放在和client所在的node里(如果client不在集群范围内,则这第一个node是随机选取的,当然系统会尝试不选择哪些太满或者太忙的node)。
  • 第二个副本放置在与第一个节点不同的机架中的node中(随机选择)。
  • 第三个副本和第二个在同一个机架,随机放在不同的node中。
  • 如果还有更多的副本就随机放在集群的node里。

Hadoop的副本放置策略在可靠性(block在不同的机架)和带宽(一个管道只需要穿越一个网络节点)中做了一个很好的平衡。下图是备份参数是3的情况下一个管道的三个datanode的分布情况。


网络异常,图片无法展示
|


数据写入流水线复制

当客户端向 HDFS 文件写入数据的时候,一开始是写到本地临时文件中。

假设该文件的副本系数设置为 3 ,当本地临时文件累积到一个数据块的大小时,客户端会从 Namenode 获取一个 Datanode 列表用于存放副本。

然后客户端开始向第一个Datanode传输数据,第一个 Datanode 一小部分一小部分 (4 KB) 地接收数据,将每一部分写入本地仓库,并同时传输该部分到列表中第二个 Datanode 节点。第二个 Datanode 也是这样,一小部分一小部分地接收数据,写入本地仓库,并同时传给第三个 Datanode 。

最后,第三个 Datanode 接收数据并存储在本地。因此,Datanode 能流水线式地从前一个节点接收数据,并同时转发给下一个节点,数据以流水线的方式从前一个Datanode复制到下一个Datanode。

机架感知

大型Hadoop集群以机架的形式来组织的,同一个机架上不同节点间的网络状况比不同机架之间更为理想。

另外,NameNode设法将数据块副本保存在不同的机架上以提高容错性。

网络拓扑


网络异常,图片无法展示
|


有了机架感知,NameNode就可以画出上图所示的datanode网络拓扑图。D1,R1都是交换机,最底层是datanode。因此,H1的rackid=/D1/R1/H1,H1的parent是R1,R1的parent是D1。这些rackid信息可以通过topology.script.file.name配置。有了这些rackid信息就可以计算出任意两台datanode之间的距离。

  • distance(/D1/R1/H1,/D1/R1/H1)=0  相同的datanode
  • distance(/D1/R1/H1,/D1/R1/H2)=2  同一rack下的不同datanode
  • distance(/D1/R1/H1,/D1/R1/H4)=4  同一IDC下的不同datanode
  • distance(/D1/R1/H1,/D2/R3/H7)=6  不同IDC下的datanode

注意:

  1. 当没有配置机架信息时,所有的机器Hadoop都默认在同一个默认的机架下,以名为"/default-rack",这种情况下,任何一台datanode机器,不管物理上是否属于同一个机架,都会被认为是在同一个机架下。
  2. 一旦配置topology.script.file.name,就按照网络拓扑结构来寻找datanode。topology.script.file.name这个配置选项的value指定为一个可执行程序,通常为一个脚本。


相关文章
|
11月前
|
存储 分布式计算 Hadoop
HDFS 修改副本数&fsck命令
HDFS 修改副本数&fsck命令
516 0
|
5月前
|
存储 固态存储 文件存储
[hadoop3.x]HDFS存储类型和存储策略(五)概述
[hadoop3.x]HDFS存储类型和存储策略(五)概述
112 1
|
2月前
|
分布式计算 流计算
美团 Flink 大作业部署问题之Checkpoint Replicate Service 跨 HDFS 集群的副本制作是如何实现的
美团 Flink 大作业部署问题之Checkpoint Replicate Service 跨 HDFS 集群的副本制作是如何实现的
|
分布式计算 负载均衡 算法
紧急扩散!HDFS3.X 系列的 EC 纠删码策略有个安全隐患 HDFS-16420,极端情况下会造成数据丢失!
紧急扩散!HDFS3.X 系列的 EC 纠删码策略有个安全隐患 HDFS-16420,极端情况下会造成数据丢失!
|
存储 大数据
大数据数据存储的分布式文件系统的HDFS的核心机制理解的副本策略
在 Hdfs 中,数据的复制和原理是基于块的分布式存储。
97 1
|
监控 开发工具 开发者
网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记
快速学习网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动
网站流量日志 Flume收集--hdfs--基于文件闲置策略滚动| 学习笔记
|
存储 缓存 分布式计算
Hadoop中HDFS的读写流程(面试重点)、为什么搜不到BlockPlacementPolicyDefault、网络拓扑-节点距离计算、机架感知(副本存储节点选择)
Hadoop中HDFS的读写流程(面试重点)、为什么搜不到BlockPlacementPolicyDefault、网络拓扑-节点距离计算、机架感知(副本存储节点选择)
Hadoop中HDFS的读写流程(面试重点)、为什么搜不到BlockPlacementPolicyDefault、网络拓扑-节点距离计算、机架感知(副本存储节点选择)
|
存储 分布式计算 资源调度
带你入坑大数据(二) --- HDFS的读写流程和一些重要策略
HDFS的读写流程分析,高可用和联邦的一些简短说明
|
2月前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
67 1

热门文章

最新文章