[DN优化] [锁优化] [HDFS-15150] Introduce read write lock to Datanode

HDFS 读写分离(总体架构介绍) 为什么HDFS需要读写分离 当前架构: 目前HDFS在HA模式下的架构图如如下: HA同步机制简单介绍: 客户端读写都通过RPC连接Active Namenode进行操作,Standby Namenode不具有读写的功能只负责同步操作记录(Editlog)。Editlog是Active Namenode通过RPC写到由PAXOS协议实现的一组Journalnode,然后Standby Namen... 阅读详情

分析

背景:DN性能优化的一部分
目标:AutoCloseableLock 改为 ReadWriteLock

知识回顾:假设在程序中定义一个共享的数据结构,它大部分时间提供读服务,而写操作占有的时间很少,但是写操作完成之后的更新需要对后续的读服务可见。在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源。但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写(也就是说:读-读能共存,读-写不能共存,写-写不能共存)。这就需要一个读/写锁来解决这个问题。

ReentrantReadWriteLock的实现里面重要特性:1、公平性:非公平锁(默认):非公平锁的吞吐量要高于公平锁。(公平锁概念:公平锁利用AQS的CLH队列,释放当前保持的锁时,优先为等待时间最长的那个写操作分配写入锁)

代码实现

Hadoop自定义实现了一套支持try-with-resource的锁。如下:

public class AutoCloseableLock implements AutoCloseable {
   
   

  private final Lock lock;
  public AutoCloseableLock() {
   
   
    this(new ReentrantLock());
  }

  
深度优化Hadoop NameNode读写性能 在整个公司范围内,我们都在积极推行“降本增效”的理念。从开发角度出发,这意味着我们需要在负责的项目中寻找合适的优化点,通过提升性能来实现降低成本的目标。因此,我们开始考虑是否可以在HDFS上进行进一步的优化。结合在使用HDFS过程中遇到的性能瓶颈问题,我们逐步明确了接下来要实施的性能优化方案。 阅读详情

相关推荐

HDFS从Trash中删除大量小文件导致的读写受阻问题

我们一次普通的大目录删除(含有5 Million个小文件),引发了HDFS的一次持续10分钟的读写不可用的线上事故。本文对这次事故进行了详细分析,主要从HDFS的架构本身,结合事故发生时NameNode、DataNode的各种监控指标,以NameNode端的锁控制为重要关注点,分析了HDFS对文件进行物理删除操作的整个处理过程,解释事故发生的整个过程中各个指征产生的根本原因。

小昌昌的博客 1428

【精】从HDFS的文件系统锁到读写锁

通过本文,你将了解到: HDFS中的FSNamesystemLock是什么? 读写锁ReentrantReadWriteLock、写锁降级以及ReentrantReadWriteLock源码对写线程饥饿情况做的一点优化。 简要了解JDK 8的新读写锁:StampedLock。 一、HDFS中的FSNamesystemLock 了解HDFS的朋友都知道,HDFS中有一把大锁。它是HDFS中令人又爱又恨的一个存在。爱是因为:它实现方式简单,保护整个文件系统在并操作下的正确性。恨是因为:正是由于它实现方式简单

LifeIsGood 2009

【Alluxio】加锁大概流程

【Alluxio】加锁大概流程

LifeIsGood 386

ESP32-IDF HTTP服务器实战:从零搭建Web控制界面

本文详细介绍了如何在ESP32平台上使用ESP-IDF框架从零搭建HTTP服务器,并创建Web控制界面。内容涵盖环境配置、服务器基础设置、Web页面处理、GPIO控制接口实现及AJAX异步请求处理,帮助开发者快速掌握物联网设备Web控制开发。

efc123456的博客 1063

数据湖是什么?有什么优势?与数仓区别?未来的发展?

数据湖是什么?有什么优势?与数仓区别?未来的发展?一、什么是数据湖二、数据湖的发展三、数据湖有哪些优势四、数据湖应该具备哪些能力五、数据湖的实现遇到了哪些问题六、数据湖与数据仓库的区别七、为什么要做数据湖?区别在于?八、数据湖挑战九、湖仓一体十、目前有哪些开源数据湖组件 来源:大数据DT 一、什么是数据湖 数据湖是一种不断演进中、可扩展的大数据存储、处理、分析的基础设施;以数据为导向,实现任意来源、任意速度、任意规模、任意类型数据的全量获取、全量存储、多模式处理与全生命周期管理;并通过与各类外部异构数据

一个写湿的程序猿 9148

ISO 15118-3协议栈开发避坑指南:从EvseSlac状态机设计看电动汽车充电握手难题

本文深入剖析了ISO 15118-3协议栈开发中的核心挑战,特别是SLAC握手流程的实现难点。以Everest项目的EvseSlac状态机为例,详细解读了从状态机设计、多厂商PLC芯片兼容性处理,到严苛的时序与超时控制等关键工程实践,为开发者提供了一套超越协议文档的、可直接落地的避坑指南和软件实现方案。

jump7的博客 265

FPGA实现PID算法

PID 控制器表达式如下(引用某硕士论文 《基于FPGA的PID控制器研究与实现》): 其中,Kp为比例增益,Ti为积分时间常数,Td为微分时间常数,u(t)为控制量,e(t)为偏差。 在数字控制系统中,PID控制规律的实现必须用数值逼近的方法。当采样周期相当短时,用求和代替积分、用后向差分代替微分,使模拟PID离散化变为差分方程。 本文使用并行结构来实现。具有延时小,计算速度快的特点,但需要资源比较多。 利用图3.2所示并行结构实现方法 ,进一步将3.8式分解: ...

nxin168的博客 1万+

30.Labview如何读懂别人程序、修改程序?

之前写过一次教大家的文章,这次教大家如何学习别人的程序,和如何搭建一套适合自己的程序框架。这里事先说明一下:要想搭好程序框架,一定要先把自己的系统,逻辑是什么!这非常重要,是决定你程序的关键因素。废话不多扯,直接说重点。

关注我,更多技术问题欢迎私聊~ 2445

08-StarRocks性能调优FAQ

StarRocks性能调优摘要 本文提供了StarRocks数据库性能调优的常见问题解答,涵盖查询优化、索引设计、分区策略和系统配置等关键方面。主要内容包括:查询优化技巧(使用EXPLAIN分析、避免全表扫描、优化JOIN和聚合查询);索引选择与维护建议(高频查询列索引、复合索引);分区策略设计(时间分区、范围分区)及其管理方法;以及系统内存配置优化(JVM参数调整、查询内存限制设置)。这些优化措施可显著提升StarRocks的查询性能和系统效率。

欢迎来到我的博客,一起探索代码里的世界! 540

FOC 转子初始位置检测(图文详解)

什么是转子的初始位置? 其实转子的初始位置是不确定的,但是在电机启动的时候,我们需要得到电角度,这样才可以进行矢量控制;所以,这里将转子与A轴重合作为初始位置,此时电角度也恰好为零,具体如下图所示; ) 至于原理下面会详细分析,这样在转子到初始位置后,也可以得到准确的电角度,就可以实现磁场和转子的同步转动。 如何让转子运行到初始位置? 其实这是一个很简单的问题,在这里我将它放大了,简单地分析了一...

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

visio安装包

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

上一篇: Lock基础
下一篇: [DN优化] [锁优化][HDFS-15160] ReplicaMap, Disk Balancer and others use datanode readlock
王小禾
博客等级 码龄11年 80粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值