每秒上千次高并发访问,HDFS优雅的抗住了

2023-10-31

V-xin:ruyuanhadeng获得600+页原创精品文章汇总PDF

目录

一、写在前面

二、问题源起

三、HDFS优雅的解决方案:

​ (1)分段加锁机制+内存双缓冲机制

​ (2)多线程并发吞吐量的百倍优化

​ (3)缓冲数据批量刷磁盘+网络优化

一、写在前面

上篇文章我们已经初步给大家解释了Hadoop HDFS的整体架构原理,相信大家都有了一定的认识和了解。

如果没看过上篇文章的同学可以看一下:《干掉几百行的大SQL,我用Hadoop》这篇文章。

本文我们来看看,如果大量客户端对NameNode发起高并发(比如每秒上千次)访问来修改元数据,此时NameNode该如何抗住?

二、问题源起

我们先来分析一下,高并发请求NameNode会遇到什么样的问题。

大家现在都知道了,每次请求NameNode修改一条元数据(比如说申请上传一个文件,那么就需要在内存目录树中加入一个文件),都要写一条edits log,包括两个步骤:

  • 写入本地磁盘。

  • 通过网络传输给JournalNodes集群。

但是如果对Java有一定了解的同学都该知道多线程并发安全问题吧?

NameNode在写edits log时的第一条原则:

必须保证每条edits log都有一个全局顺序递增的transactionId(简称为txid),这样才可以标识出来一条一条的edits log的先后顺序。


那么如果要保证每条edits log的txid都是递增的,就必须得加锁。

每个线程修改了元数据,要写一条edits log的时候,都必须按顺序排队获取锁后,才能生成一个递增的txid,代表这次要写的edits log的序号。

好的,那么问题来了,大家看看下面的图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每秒上千次高并发访问,HDFS优雅的抗住了 的相关文章

随机推荐

  • ElementUI浅尝辄止18:Avatar 头像

    用图标 图片或者字符的形式展示用户或事物信息 常用于管理系统或web网站的用户头像 在用户账户模块更换头像操作也能看到关于Avatar组件的应用 1 如何使用 通过 shape 和 size 设置头像的形状和大小
  • pyPdf和pyPdf2在合并pdf时的那个异常

    当一个pdf文件有多page的时候 它将出来见你 方法是取直接修改那个文件generic py 1 pyPdf 路径大约在这里 usr lib python2 7 site packages pyPdf generic py if data
  • Jupyter notebook的cell运行结果输出显示配置

    参考 JupyterNotebook 输出窗口的显示效果调整 1 问题描述 使用Jupyter notebook时 有时候会遇到某个cell的输出行数过长 输出显示时Jupyter notebook 会把这些输出给放进了一个带有滚动条的小窗
  • php指定某个pid运,php 按pid排序并给出深度

    arr id gt 1 pid gt 0 name gt name1 id gt 2 pid gt 0 name gt name2 id gt 3 pid gt 0 name gt name3 id gt 4 pid gt 1 name g
  • 五、elasticsearch、kibana环境搭建

    一 软件准备 jdk 8u251 linux x64 tar gz elasticsearch 6 8 18 tar gz 下载 kibana 6 8 18 linux x86 64 tar gz elasticsearch analysi
  • SSAS教程(一)——SSAS简介

    SSAS全称SQL Server Analysis Services Analysis Services 是在决策支持和商业分析中使用的分析数据引擎 它为商业报表和客户端应用程序提供了企业级语义数据模型 比如Power BI Excel R
  • 自定义Flink消费和生产Kafka消息(消费时Schema、生产时Key&Value&分区)

    当我们在消费Kafka数据时 比较常用的是SimpleStringSchema 我个人比较喜欢用的是JSONKeyValueDeserializationSchema 上述两个API可以完成绝大多数的开发场景 但是但遇到个别的特殊场景时 我
  • Qt——加载qss文件简单用法

    1 新建后缀名为 qss的通用文件 添加需要实现的样式代码 2 在资源文件中添加刚刚新建的 qss文件 3 main函数添加以下代码 int main int argc char argv QApplication a argc argv
  • 用服务器怎么修改奥的斯的速度,奥的斯服务器使用指南-20210412074643.pdf-原创力文档...

    OTIS电梯 电脑软件画面 1 2 com com com com 3 4 Disp Ent M 7 8 9 state D E F call Test F 4 5 6 Disp A sel B 开始 In out S 1 2 3 ON U
  • texture和sprite使用上的区别

    1 什么情况下使用Texture 当图片过大 不适合合成图集的时候 可以使用Texture 此时要尽量的保证图片的宽高是2的N次方 使用的地方少 当图片为2的N次方 且出现的频率不高时 可以使用Texture 例如游戏的背景和Logo 需要
  • gzip: stdin: unexpected end of file Linux解压文件出错

    root localhost jdk1 8 tar zxvf jdk 8u161 linux x64 tar gz jdk1 8 0 161 jdk1 8 0 161 javafx src zip gzip stdin unexpected
  • 【计算机网络】HTTP首部详解

    HTTP首部详解 HTTP 协议的请求和响应报文中必定包含 HTTP 首部 首部内容为客户端和服务端分别处理请求和响应提供所需要的信息 对于客户端用户来说 这些信息中的大部分内容都无需亲自查看 1 HTTP请求报文 2 HTTP响应报文 3
  • Java 动态代理简单使用

    Java简单的动态代理 项目结构 dao包 public interface UserInfodao public boolean LoginCheck String username String password void listAl
  • mongodb 查询效率_2020年9个好用的MongoDB 图形化界面工具

    市场上有许多MongoDB管理工具 这些工具可以提高MongoDB开发和管理的效率 下面我们就列举一些2020年好用的mongo管理工具 1 NoSQLBooster 用于MongoDB的NoSQLBooster 以前称为MongoBoos
  • 如何将Spotify音乐下载并保存为MP3

    Spotify歌曲采用原始的OGG Vorbis格式 具有DRM保护 可防止您下载并将其分发到其他地方以供欣赏 得益于精心设计的DRmare Spotify Music Converter for Mac 您现在可以批量下载Spotify曲
  • 【操作系统】浅谈 Linux 中的中断机制

    操作系统 浅谈 Linux 中的中断机制 参考资料 2015 SP 北京大学 Principles of Operating System 操作系统原理 by 陈向群 p7 p10 认认真真的聊聊中断 什么是软中断 认认真真的聊聊 软 中断
  • iOS实现麦克风捕获和AAC编码

    转载地址 http blog csdn net shenyi0106 article details 47004039 在Ios中 实现打开和捕获麦克风大多是用的AVCaptureSession这个组件来实现的 它可以不仅可以实现音频捕获
  • 调试破解无限dubugger

    目标网站上PM2 5实时查询 PM2 5历史数据查询 PM2 5全国城市排名 PM2 5雾霾地图 中国空气质量在线监测分析平台 真气网 首先要确定是否是虚拟机 虚拟机https www aqistudy cn 明显的特征虚拟机一般源文件上会
  • Hutool常用工具类及方法使用

    Hutool常用工具类及方法使用 依赖注入 类型转换工具类 Convert 时间工具类 DateUtil 字符串工具类 StrUtil 身份证验证工具 IdcardUtil 控制台打印 Console 依赖注入
  • 每秒上千次高并发访问,HDFS优雅的抗住了

    V xin ruyuanhadeng获得600 页原创精品文章汇总PDF 目录 一 写在前面 二 问题源起 三 HDFS优雅的解决方案 1 分段加锁机制 内存双缓冲机制 2 多线程并发吞吐量的百倍优化 3 缓冲数据批量刷磁盘 网络优化 一