【HDFS】 双Buffer数据结构:EditsDoubleBuffer

缓冲(Buffer)机制是对数据持久化的延迟,以减少不必要的IO,从而提高数据落盘的效率。
一般需要使用双缓冲区的地方都是由于“生产者”和“消费者”供需不一致所造成的。
两个缓冲区可以交换,互相变成对方的角色。

HDFS引入双Buffer的背景及带来的收益

每次客户端的RPC请求NameNode修改一条元数据,都要写edits log。
为了保证元数据的可靠性,防止在断电的时候元数据错乱。HDFS会把edits log持久化到后端存储设备后才给客户端返回RPC响应。

另外HDFS NameNode的设计目标是能够高并发地处理来自客户端RPC请求。因此一定会有多线程同时操作共享资源,那这里就会涉及到线程安全问题。

NameNode在写edits log时,需要保证每条edits log都有一个全局顺序递增的transaction Id(简称为txid),这样才可以识别每一条edits log的先后顺序。要保证每条edits log的txid都是递增的,就必须得加锁。

多个线程修改了元数据,要写描述自己操作的edits log的时候,都必须排队获取锁后,生成一个递增的txid,代表这次要写的edits log的序号。

试想一下,如果每次都在一个加锁的代码块里做下面的操作,那性能会有多糟糕:

synchronized(xxx) {

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/7008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习——3.梯度计算与梯度下降

基本概念 梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模&#xff0…

404 Not Found - GET https://registry.npmjs.org/fs-promises

具体错误 npm install fs-promises npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/fs-promises - Not found npm ERR! 404 npm ERR! 404 fs-promises* is not in this registry. npm ERR! 404 You should bug the author to publish it (or …

Vue、React实现excel导出功能(三种实现方式保姆级讲解)

第一种:后端返回文件流,前端转换并导出(常用,通常公司都是用这种方式) 第二种:纯后端导出(需要了解) 第三种:纯前端导出(不建议使用,数据处理放…

rocky9 安装docker

一,Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有…

算法竞赛——从C/C++到Java

一、基础语法部分(请自行复习相关语法) 1.1 数组的定义 1.2 输入输出方式(必要时需要快读和快写) 二、Java中模拟结构体数组的实现方案 public class Main {public static void main(String[] args) {// TODO Auto-generated m…

Apache RabbitMQ 的所有组件以及他是如何保证顺序消费消息的

一、Apache RabbitMQ定义 Apache RabbitMQ 是一个开源消息队列系统,基于 Erlang 语言开发,实现了高级消息队列协议(AMQP)。RabbitMQ 提供了多种消息传递机制,包括点对点(direct)、发布/订阅&am…

mybatis配置获取自增主键

mybatis配置获取自增主键 【/n】 01 使用场景 当需要刚刚插入数据库的数据对应的新增主键时,通过配置xml文件,使数据库返回新增主键id,并把主键id与类参数对应 02 涉及配置 注解TableId(type IdType.AUTO):在类主键id通过配…

【CTF MISC】XCTF GFSJ0512 give_you_flag Writeup(图像处理+QR Code识别)

give_you_flag 菜狗找到了文件中的彩蛋很开心,给菜猫发了个表情包 解法 图片的最后一帧好像闪过了什么东西。 用 Photoshop 打开,检查时间轴。 找到一张二维码,但是缺了三个角(定位图案),无法识别。 找一…

对于模板,编译器不会执行任何自动类型转换

作为一个模板,编译器不会执行任何自动类型转换。当编译器无法推断函数模板的模板参数时应当在尖括号中告诉编译器要使用哪种类型作为模板参数。 编译器无法知道你想要模板参数具有第一个函数参数的类型,或第二个函数参数的类型,或者有时是第…

从简单逻辑到复杂计算:感知机的进化与其在现代深度学习和人工智能中的应用(上)

文章目录 引言第一章:感知机是什么第二章:简单逻辑电路第三章:感知机的实现3.1 简单的与门实现3.2 导入权重和偏置3.3 使用权重和偏置的实现实现与门实现与非门和或门 文章文上下两节 从简单逻辑到复杂计算:感知机的进化与其在现代…

Linux 磁盘管理命令df du dd

文章目录 3.Linux 磁盘管理命令3.1 df:显示报告文件系统磁盘使用信息案例练习 3.2 du:显示目录或者文件所占的磁盘空间案例练习 3.3 dd:磁盘操作案例练习 3.Linux 磁盘管理命令 3.1 df:显示报告文件系统磁盘使用信息 作用&#x…

Superset二次开发之XAxis 功能优化

背景: 以柱状图(来自Echarts 插件)为例,如果X轴data数据过长,影响图表体验,为此需要省略部分内容 superset-frontend\plugins\plugin-chart-echarts\src\Timeseries\transformProps.ts import {getBaselineSeriesForStream,getPadding,getTooltipTimeFormatter,getXAxis…

[开发|鸿蒙] 鸿蒙OS开发环境搭建(笔记,持续更新)

搭建开发环境流程: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/installation_process-0000001071425528-V2 鸿蒙DevEco Studio 3.1.1 Release仅支持windows和mac系统 运行环境要求 为保证DevEco Studio正常运行,建议电脑配置…

16_Scala面向对象编程_函数

文章目录 1.声明Scala函数2.访问伴生对象3.空对象直接用的方法4.构造对象--通过object获取单例对象--直接new--scala独有apply()方式--scala有参构造--scala构造方法两大类使用辅构造如下上述代码主构造为辅助构造方法甚至可以多个多个辅助构造形参内容不能重不使用辅助构造和使…

EasyExcel导出工具类

目录 工具类 头部实体类&#xff08;要和工具类在同一个module或项目下&#xff09; 日期转换器 工具类 /*** 导出Excel工具类*/ public class EasyExcelUtil<T> {/*** 单sheet&#xff08;Map写入&#xff09;* param response 响应对象* param headList 头部集合* p…

Redis(五) Redis锁

结合前四期 Redis(一) Redis简介(Redis(一) Redis简介-CSDN博客) Redis(二) 可编程性(Redis(二) 可编程性-CSDN博客) Redis(三) 事务与发布订阅(Redis(三) 事务与发布订阅-CSDN博客) Redis(四) 主从、哨兵、集群环境搭建(Redis(四) 主从、哨兵、集群环境搭建-CSDN博客) (本文代…

[leetcode] 64. 最小路径和

文章目录 题目描述解题方法动态规划java代码复杂度分析 相似题目 题目描述 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#…

有什么好用的思维导图软件?6个软件教你快速进行思维导图的制作

有什么好用的思维导图软件&#xff1f;6个软件教你快速进行思维导图的制作 以下是六款常用且功能强大的思维导图软件&#xff0c;它们可以帮助您快速制作思维导图&#xff1a; 迅捷画图: 迅捷画图是一款在线思维导图工具&#xff0c;具有直观易用的界面和丰富的功能。用户可…

智驾重感知轻地图路线

1、前言 在自动驾驶中使用HD Map的优点显而易见&#xff1a;超视距感知能力、高精度、高丰富度。其局限性同样很明显&#xff1a;高成本、高覆盖度、低鲜度、受限法规等。比如&#xff0c;2022年&#xff0c;在地图法规收紧&#xff0c;和感知能力增强的双重背景下&#xff0c;…

你对后端系统的安全性有何理解

人生难免经受挫折 风雨过后就是彩虹 生活难免遭受苦难 雨过天晴终有阳光 一、后端安全性 后端安全性是指在开发和运行后端应用程序时&#xff0c;确保应用程序和其中存储的数据免受恶意攻击和不当访问的能力。以下是我对后端安全性的理解&#xff1a; 1. 认证和授权&#xff1a…