聊一聊 HBase 是如何写入数据的?

hi,大家好,我是大D。今天继续了解下 HBase 是如何写入数据的,然后再讲解一下一个比较经典的面试题。

Region Server 寻址

写 Hlog

写 MemStore 并返回结果

MemStore 刷盘

HBase 会根据 MemStore 配置的刷盘策略定时将数据刷新到 StoreFile 中,完成数据持久化存储。

WAL (Write-Ahead-Log) 预写日志是 HBase 的 RegionServer 在处理数据插入和删除过程中用来记录操作内容的一种日志。每次Put、Delete等一条记录时,首先将其数据写入到 RegionServer 对应的 HLog 文件中去。

而WAL是保存在HDFS上的持久化文件,数据到达 Region 时先写入 WAL,然后被加载到 MemStore 中。这样就算Region宕机了,操作没来得及执行持久化,也可以再重启的时候从 WAL 加载操作并执行。

那么,我们从写入流程中可以看出,数据进入 HFile 之前就已经被持久化到 WAL了,而 WAL 就是在 HDFS 上的,MemStore 是在内存中的,增加 MemStore 并不能提高写入性能,为什么还要从 WAL 加载到 MemStore中,再刷写成 HFile 呢?

  • 数据需要顺序写入,但 HDFS 是不支持对数据进行修改的;
  • WAL 的持久化为了保证数据的安全性,是无序的;
  • Memstore在内存中维持数据按照row key顺序排列,从而顺序写入磁盘;

所以 MemStore 的意义在于维持数据按照RowKey的字典序排列,而不是做一个缓存提高写入效率。

另外,非常欢迎大家加我VX:Abox_0226,备注「进群」,有关大数据技术的问题在群里一起探讨。

Original: https://www.cnblogs.com/datadance/p/16284653.html
Author: Data跳动
Title: 聊一聊 HBase 是如何写入数据的?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/714810/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 没有Kubernetes怎么玩Dapr?

    Dapr 被设计成一个面向开发者的企业级微服务编程平台,它独立于具体的技术平台,可以运行在”任何地方”。Dapr本身并不提供”基础设施(infr…

    技术杂谈 2023年5月31日
    095
  • 默认端口

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年5月31日
    0102
  • 在springboot中使用拦截器

    在springboot中使用拦截器 拦截器Interceptor,是SpringMVC中的核心内容,利用spring的AOP(Aspect Oriented Programming…

    技术杂谈 2023年7月11日
    085
  • 设计模式 08 代理模式

    代理模式(Proxy Pattern)属于 结构型模式 代理模式就是一个代理对象来间接访问对象,常用于无法直接访问某个对象或访问某个对象不方便的情况。 实际上代理在生活中处处都存在…

    技术杂谈 2023年7月25日
    062
  • Android进阶技术之——一文吃透Android的消息机制

    前言 为什么要老药换新汤 作为Android中 至关重要 的机制之一,十多年来,分析它的文章不断,大量的内容已经被挖掘过了。所以: 已经对这一机制熟稔于心的读者,在这篇文章中,看不…

    技术杂谈 2023年7月10日
    081
  • js替换字符串中的空格,换行符rn或n替换成<br>

    为了让回车换行符正确显示,需要将 \n 或 \r\n 替换成。同样地,将空格替换存 。这里我们通过正则表达式来替换。 一、替换所有的空格、回车换行符 javascript;gutt…

    技术杂谈 2023年5月31日
    086
  • crash命令 —— p

    参考:https://crash-utility.github.io/help_pages/p.html 用法: 查看内核中的一些全局符号的内容 p <符号名><…

    技术杂谈 2023年5月30日
    091
  • 【转】RN报错汇总

    镜像不对,检查镜像是否为taobao的镜像, iOS &#x89E3;&#x51B3;&#x65B9;&#x5F0F;: 在Podfile中添加: …

    技术杂谈 2023年6月1日
    0103
  • 【赵渝强老师】阿里云大数据ACP认证之阿里大数据产品体系

    阿里大数据产品体系是基于阿里云飞天平台上的数据处理服务。主要分为 阿里云大数据基础产品和 阿里云数加平台,其产品架构图如下所示: 一、阿里云大数据基础产品 1、云数据库——RDS(…

    技术杂谈 2023年7月24日
    090
  • Jedis案例

    案例: 案例需求: 提供index.html页面,页面中有一个省份 下拉列表 当页面加载完成后 发送ajax请求,加载所有省份 代码实现: ProvinceDao package …

    技术杂谈 2023年6月21日
    0140
  • 【转】Xcode插件管理工具Alcatraz

    Original: https://www.cnblogs.com/wi100sh/p/13093966.htmlAuthor: wi100shTitle: 【转】Xcode插件管…

    技术杂谈 2023年6月1日
    088
  • Go实现安全双检锁的方法和最佳实践

    不安全的双检锁 从其他语言转入Go语言的同学经常会陷入一个思考:如何创建一个单例? 有些同学可能会把其它语言中的双检锁模式移植过来,双检锁模式也称为懒汉模式,首次用到的时候才创建实…

    技术杂谈 2023年7月11日
    0110
  • 【笔试】2、勾股数元祖或者素勾股数

    package y2020.interview.huawei.gougushu; import java.util.ArrayList; import java.util.List…

    技术杂谈 2023年7月24日
    089
  • 批量修改SVN的用户名和密码的尝试

    起源 公司规定每6个月需要修改一次密码,否则每天都有邮件和内网提醒。因为邮箱密码和svn等一系列应用绑定,避免每次修改密码后需要手工输入修改多个svn仓库的帐号和密码。 PS.同一…

    技术杂谈 2023年6月1日
    0117
  • tcprstat和tcpstat性能监控

    tcprstat是percona用来监测mysql响应时间的。不过对于任何运行在TCP协议上的响应时间,都可以用。 下面是一个监控示例,监控分析mysql的3306端口。 根据上面…

    技术杂谈 2023年5月31日
    0114
  • http代理连接

    基于Linux服务器的http代理连接 1. 准备工作 &#x76EE;&#x6807;&#x670D;&#x52A1;&#x5668; &…

    技术杂谈 2023年6月21日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球