HDFS Pipeline Recovery

后端分布式系列:分布式存储-HDFS 异常处理与恢复 在前面的文章 《HDFS DataNode 设计实现解析》中我们对文件操作进行了描述,但并未展开讲述其中涉及的异常错误处理与恢复机制。本文将深入探讨 HDFS 文件操作涉及的错误处理与恢复过程。读异常与恢复读文件可能发生的异常有两种: 读取过程中 DataNode 挂了 读取到的文件数据损坏 HDFS 的文件块多副本分散存储机制保障了数据存储的可靠性,对于第一种情况 DataNode 挂了只需要失败 阅读详情

pipeline 写入的三个阶段


1.pipeline setup:Client 发送一个写请求沿着 pipeline 传递下去,最后一个 DataNode 收到后发回一个确认消息。Client 收到确认后,pipeline 设置准备完毕,可以往里面发送数据了。


2.data streaming:Client 将一个 block 拆分为多个 packet 来发送(默认一个 block 64MB,太大所以需要拆分)。Client 持续往 pipeline 发送 packet,在收到 packet ack 之前允许发送 n 个 packet,n 就是 Client 的发送窗口大小(类似 TCP 滑动窗口)


3.close:Client 在所有发出的 packet 都收到确认后发送一个 Close 请求,
pipeline 上的 DataNode 收到 Close 后将相应 replica 修改为 FINALIZED 状态,并向 NameNode 发送 block 报告。NameNode 将根据报告的 FINALIZED 状态的 replica 数量是否达到最小副本要求来改变相应 block 状态为 COMPLETE。

 

HDFS Pipeline Recovery

 

从 pipeline setup 错误中恢复

在 pipeline 准备阶段发生错误,分两种情况:

  1. 新写文件:Client 重新请求 NameNode 分配 block 和 DataNodes,重新设置 pipeline。
  2. 追加文件:Client 从 pipeline 中移除出错的 DataNode,然后继续。

从 data streaming 错误中恢复

  1. 当 pipeline 中的某个 DataNode 检测到写入磁盘出错(可能是磁盘故障),它自动退出 pipeline,关闭相关的 TCP 连接。
  2. 当 Client 检测到 pipeline 有 DataNode 出错,先停止发送数据,并基于剩下正常的 DataNode 重新构建 pipeline 再继续发送数据。
  3. Client 恢复发送数据后,从没有收到确认的 packet 开始重发,其中有些 packet 前面的 DataNode 可能已经收过了,则忽略存储过程直接传递到下游节点。

从 close 错误中恢复

到了 close 阶段才出错,实际数据已经全部写入了 DataNodes 中,所以影响很小了。Client 依然根据剩下正常的 DataNode 重建 pipeline,让剩下的 DataNode 继续完成 close 阶段需要做的工作。

以上就是 pipeline recovery 三个阶段的处理过程,这里还有点小小的细节可说。
当 pipeline 中一个 DataNode 挂了,Client 重建 pipeline 时是可以移除挂了的 DataNode,也可以使用新的 DataNode 来替换。这里有策略是可配置的,称为 DataNode Replacement Policy upon Failure,包括下面几种情况:

  1. NEVER:从不替换,针对 Client 的行为
  2. DISABLE:禁止替换,DataNode 服务端抛出异常,表现行为类似 Client 的 NEVER 策略
  3. DEFAULT:默认根据副本数要求来决定,简单来说若配置的副本数为 3,如果坏了 2 个 DataNode,则会替换,否则不替换
  4. ALWAYS:总是替换

 

hdfs--lease recovery和block recovery源码分析 append操作在namenode这端主要逻辑在FSNameSystem的appendFileInternal函数中处理,内部会调用 前言 在DFSClient写文件的时候,对于文件的每一个block,生成一个pipeline,然后按照这个pipeline进行数据传输,但是可能在数据传输过程中,DFSClient发生中断,例如断网等,此时该block在NameNode中处于Under... 阅读详情

相关推荐

【HDFS】BlockConstructionStage的几种状态:PIPELINE_SETUP_APPEND、PIPELINE_SETUP_CREATE、TRANSFER_RBW等

【HDFS】BlockConstructionStage的几种状态:PIPELINE_SETUP_APPEND、PIPELINE_SETUP_CREATE、TRANSFER_RBW等

LifeIsGood 337

HDFS 命令

显示目录信息 hadoop fs -ls / 创建目录 hadoop fs -mkdir -p /pys/mkdirtest 剪切文件 本地目录 HDFS目录 hadoop fs -moveFromLocal ./test.txt /pys/ 拷贝文件 本地目录 HDFS目录 hadoop fs -copyFromLocal ./test.txt /pys/ hadoop fs -put ./test.txt /pys/ 拷贝文件到本地 HDFS目录 本地目录 hadoop fs

pys52055的博客 323

【HDFS】FsDatasetImpl系列文章(八):recoverRbw方法

【HDFS】FsDatasetImpl系列文章(八):recoverRbw方法

LifeIsGood 485

虚拟机HDFS警告解决办法:WARN hdfs.DataStreamer: Excluding datanode DatanodeInfoWithStorage

查看防火墙状态,输入命令:systemctl status firewalld。设置“SELINUX=disabled” ,再次执行上传文件就不会出现警告了。禁用防火墙:systemctl disable firewalld。停止防火墙:systemctl stop firewalld。

梁辰兴的博客 3620

【HDFS】什么情况下会处于BlockConstructionStage.PIPELINE_CLOSE状态?

【HDFS】什么情况下会处于BlockConstructionStage.PIPELINE_CLOSE状态?

LifeIsGood 333

【HDFS】FsDatasetImpl系列文章(五):recoverClose方法

【HDFS】FsDatasetImpl#recoverClose方法

LifeIsGood 504

PySpark 问题排查

将定义并注册UDF的代码和引用该UDF的代码写在同一个模块中,问题解决。在模块A中定义并注册了 Spark UDF,并在模块B中引用该 UDF。通过 PySpark SQL 处理离线数据,遇到报错。

xiamuyingu的专栏 590

【HDFS】FsDatasetImpl系列文章(二):createTemporary方法

【HDFS】FsDatasetImpl#createTemporary方法

LifeIsGood 266

hdfs pipeline recovery流程解析

PipelineRecovery 流水线是由DataNode串联而成的,就像一条水管,数据(Packets)从一端流进去,依次经过流水线上的各个DataNode,当最后一个DataNode收到数据,将会发出ACK(Acknowledge)给前一个 DataNode,前一个DataNode收到ACK后又会向前一个DataNode发送ACK。回复(ACK)相反地从尾端流回执行写操作的客户端。那么,只要是流水线上一个DataNode宕机了,都会导致整个PipeLine的DataStream无法正常运转。就像.

breakout_alex的博客 841

从零到一:如何用GraphRAG Visualizer打造你的第一个3D知识图谱

本文详细介绍了如何使用GraphRAG Visualizer从零开始构建3D知识图谱,涵盖环境准备、Parquet数据处理、可视化操作及高级分析功能。通过简洁的步骤和实用技巧,帮助用户快速掌握这一强大的知识图谱可视化工具,提升数据分析和关系挖掘效率。

rock5的博客 219

图信号处理中的多尺度分析:图小波变换与图傅里叶变换的对比与应用

本文深入探讨了图信号处理中的多尺度分析方法,重点对比了图小波变换(GWT)与图傅里叶变换(GFT)的技术特点与应用场景。通过分析图的拓扑结构,GWT展现出强大的局部洞察力,适用于异常检测和社区发现;而GFT则擅长全局频率分析,适合趋势分析和信号去噪。文章结合实战案例,为读者提供了方法选型指南和前沿进展,帮助开发者在生物信息学、社交网络分析等领域高效应用这些技术。

weixin_30369041的博客 406

【Pipeline】 Recovery

分享一波大数据&Java的学习视频和书籍: ### Java与大数据资源分享 本文来学习Pipeline Recovery的相关知识。 当client写文件时,数据是以block的形式相继顺序写入的。HDFS把block又拆分成很多packet把这些packet传播到write pipeline中的Datanodes。如下图所示: write pipeline有三个过程: 1...

LifeIsGood 453

在 SAP BTP 中为 SAP AI Core 创建 Service Instance 和 Service Key 的完整实战指南

摘要:本文详细介绍了在SAP BTP上创建AI Core服务实例和密钥的关键步骤,这是实现ABAP系统与Gen AI大语言模型集成的核心技术环节。文章通过一个制造业财务问答场景的案例,系统梳理了从前提条件准备、架构理解到具体操作的全过程,重点解析了service instance创建、X.509证书配置等关键节点。特别强调了Extended计划选择、证书格式等易错点,为ABAP开发人员实现Gen AI场景提供了实用指南。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 271

HDFS 中向 DataNode 写入数据失败了怎么办

如果向DataNode写入数据失败了怎么办? 如果这种情况发生,那么就会执行一些操作: ① Pipeline数据流管道会被关闭,ACK queue中的packets会被添加到data queue的前面以确保不会发生packets数据包的丢失 ② 在正常的DataNode节点上的以保存好的block的ID版本会升级——这样发生故障的DataNode节点上的block数据会在节点恢复正常后被删除,失效...

wj1298250240的博客 2714

把 sy-* 带进 ABAP CDS:ABAP 7.50 里的环境信息新姿势($session 与 @Environment.systemField 实战)

摘要:ABAP 7.50在CDS视图中引入两种获取环境信息的方式:1)直接使用$session会话变量读取用户、客户端和系统语言;2)通过@Environment.systemField注解参数,由Open SQL自动注入系统字段。$session方式简单但依赖Open SQL访问路径,非ABAP环境下可能失效;注解参数方案更工程化,依赖关系明确且支持测试。建议ABAP体系内优先使用$session,对外接口采用参数化方案。两种方式各有适用场景,正确选择可避免潜在风险。(148字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 152

【教程4>第5章>第28节】基于帧同步+相位同步+位同步的QPSK调制解调通信系统整体性能分析

综上所述:1.SNR<10db时,整体性能下降,当SNR=0db时,系统无法正常工作。2.gardner环性能达到2.5e-5时偏可以正常工作,增加之后无法正常工作。3.当相位偏差大于pi/4的时候,对最后的性能会有一定影响。

FPGA/MATLAB学习教程/源码/项目合作开发 556

Hadoop笔记 HDFS读写流程

HDFS读写流程

baidu_41586315的博客 684

2022中山大学计算机技术专硕考研初试、复试经验帖

个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧。可以帮助节省时间! 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 机试 笔试 面试 关于选导师 个人感言

zik的博客 1万+

写入hdfs_[知识讲解篇]一篇文章说明白HDFS的恢复机制

作者 | 王sir说运维1背景知识需要先知道1.文件存储在HDFS中是怎么存储的?HDFS 中文件的存储方式是将文件block进行切分,默认一个 block 64MB(这个值在hadoop2.x中是128M)。若文件大小超过一个 block 的容量(64M)就会被切分为多个 block,这些block会根据存储策略存储在不同的 DataNode 上。若文件大小小于一个 block 的容...

weixin_35790607的博客 353

Codex 实战 Skills:如何用 Skill 让 AI 模拟人工点击,自动完成复杂的前端表单测试

本文介绍如何构建基于Selenium WebDriver的AI Agent技能,实现自动化UI测试流程。主要内容包括: 环境搭建:配置无头Chrome浏览器环境,使用WebDriver Manager自动管理驱动 核心技能开发:通过ID、CSS Selector、XPath等策略定位元素,实现显式等待机制 交互模拟:使用ActionChains模拟鼠标悬停等复杂操作 稳定性优化:解决异步加载问题,确保测试可靠性 Skill封装:将功能模块化,使AI能通过自然语言指令操作Web界面 该方案突破了传统自动化测试

yueyeguzhuo的专栏 149

自动驾驶领域自动化数据标注应用

自动驾驶领域自动化数据标注应用 1. 背景介绍 1.1 自动驾驶技术的发展 自动驾驶技术近年来取得了长足的进步,吸引了众多科技公司和传统车企的投入。自动驾驶系统需要感知周围环境、做出决策并控制车辆,是一个极具挑战的任务。其中,环境感知是自

AI天才研究院 2214

Understanding HDFS Recovery Processes (Part 1)

Having a good grasp of HDFS recovery processes is important when running or moving toward production-ready Apache Hadoop. An important design requirement of HDFS is to ensure continuous and correct

Mac Track 1066

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

深入理解 HDFS 错误恢复

我们从动态的角度来看 hdfs 先从场景出发,我们知道 hdfs 的写文件的流程是这样的: 数据以 pipeline 的方式写入 hdfs ,然后对于读取操作,客户端选择其中一个保存块副本的 DataNode 来读数据.考虑这样两个场景: hbase rs 在写 wal log 的时候.如果一个 rs 挂了.那么这个 rs 会转移并且通过读取 wal log 来恢复之前的状态.如果这个rs ...

weixin_29271263的博客 348

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

从DFSOutputStream的pipeline写机制到Streamer线程泄漏问题

前言之前一段时间写了篇文章DataNode数据处理中心DataXceiver从大的方向了解了下datanode读写操作的过程.但是并没有具体细粒度的去关注读写操作中的细节以及可能存在的问题,本篇文章算是对这方面的一个补充吧.尽管本文所涉及的范围面看起来很窄,但是所呈现出来的结果一定会让你有所收获的.DFSOutputStream写数据以及周边相关类,变量本文主要阐述的datanode写数据的过程,

走在前往架构师的路上 7782

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Understanding HDFS Recovery Processes (Part 2)

source: http://blog.cloudera.com/blog/2015/03/understanding-hdfs-recovery-processes-part-2/ Having a good grasp of HDFS recovery processes is important when running or moving toward productio

BIT工匠 854

hdfs杂记

Replica状态 /** Replica is finalized. The state when replica is not modified. */ FINALIZED(0), /** Replica is being written to. */ RBW(1), /** Replica is waiting to be recovered. */ RWR(2), /** Rep...

frankxie的空间 350
上一篇: java面试-JVM内存区域划分
下一篇: Git Checkout提示Another git process seems to be running in this repository...
zhtttylz
博客等级 码龄10年 18粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值