HBase0.94在flush操作时候的一个漏洞

Apache HBase安全 当使用org.apache.hadoop.hbase.security.visibility.VisibilityClient类提供的addLabels(conf, labels)方法创建标签并通过扫描或获取在授权中传递标签时,标签可以包含UTF-8字符,以及可见标签中通常使用的逻辑运算符以及常规Java符号,而不需要任何转义方法。如果没有提供足够的文件系统保护(授权和身份验证),HBase级别授权控制(ACL,可见性标签等)就没有意义,因为用户可以随时访问文件系统中的数据。标签存储在HFiles自身中。 阅读详情

基于HBase0.94版本,在高并发写操作时,运行时偶尔出现丢失数据的情况,查看了HBase的日志,出现一下信息,

WARN org.apache.hadoop.hbase.regionserver.MemStore: Snapshot called again without clearing previous. Doing nothing. Another ongoing flush or did we fail last attempt?

这个问题是HBase在flush操作时的一个bug,HBase JIRA中有对应的patch,HBASE-7671(Flushing memstore again after last failure could cause data loss)

下面对出现这个问题的原因分析一下,

我们知道HBase在memstore达到一定阈值时会进行flush操作,flush主要包括三个过程,snapshot,flush cache,commit

snapshot是对memstore中的内存对象进行快照,在快照过程中需要阻塞write操作,snapshot完成后,重置内存中的对象。

flush cache过程基于snapshot生成tmp HFile,同时在HFile中的元数据中保存seqNum,这个seqNum是基于HLog的当前region最后完成的seqNum(写数据的HLog key value 对会带上seqNum)。

commit提交flush,把storeFile加入到Store中,并清除memstore snapshot(此时判断是否需要进行compact操作)(调用Store.updateStorefiles,会对store的lock加写锁,这样其他的写数据的操作就会堵塞<读锁>);最后会向WAL确认完成本次的flush操作,把该seqNum写入到HLog中,这样表示小于该seqNum的操作都已经持久化到HFile中了,下次恢复从该位置恢复即可,便于Hlog的relay操作。

这个问题在于先前的flush cache过程因异常而snapshot未清理,后续flush在snapshot的过程中,发现当前memstore中存在snaoshot,那么就不再做snapshot了,该snapshot是基于先前的flush操作的,这样就会存在丢失后面flush的那部分数据(因最后给WAL确认的seqNum还是后面flush的那个seqNum,但实际是对先前的snapshot做操作)。

所以解决思路是在snapshot的开始的时候,若存在snapshot,则把该snapshot也加入到当前需要flush的内存区域中。




【信息科学与工程学】计算机科学与自动化——第三百零五篇 计算机系统中的各类运算操作01 编号类型领域运算操作运算类型算法算法的详细设计及数学分析参数列表及参数的数值设计应用场景 (100+条)集合运算​1集合运算关系代数并集 (Union)集合运算归并排序去重合并两个集合,去除重复元素。时间复杂度 O(n+m),n,m为两集合大小。输入:集合A, B。输出:A∪B。数据集成、多表结果合并、去重后的全量数据提取。2集合运算关系代数交集 (Intersection)集合运算哈希交集找出同时属于两个集合的元素。平均时间复杂度 O(min(n,m)),最坏 O(n*m)。输入:集合A, B。输出:A∩ 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第三百零四篇 高性能系统开发指南01

高并发:限流、熔断、降级高性能:红包拆分、多级缓存、大Key/热Key拆分、Pipeline、线程池、RocketMQ零丢失、幂等、分布式锁、集群缩容、分批入库海量数据处理:日志分表分片、跨表查询、冷热分层、大数据引擎服务器选型系统安全:网关安全、服务器安全、云存储安全、风控、监控、测试数据一致性:缓存与数据库一致性、大厂方案、蓝绿回滚、流量一致性、流程一致性项目与团队管理:流程问题、管理问题(风险、成本、人员、文档、培训)稳定性建设:上线三板斧、线上五步闭环、混沌工程、容量规划。

weixin_49199313的博客 217

HBase

HBase较重要内容

weixin_70577124的博客 538

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01

编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有

weixin_49199313的博客 191

Hadoop&hbase监控页面未授权访问漏洞处理方案验证过程实现

Hadoop&amp;hbase监控页面未授权访问漏洞处理方案验证 Hadoop:监控页面授权登录配置步骤: 1 页面弹出框授权 1.1页面弹出框授权配置 1.上传附件的jar包hadoop-http-auth-e3base.jar到$HADOOP_HOME/share/hadoop/common目录下 并分发到另外两台主机 2.修改$HADOOP_HOME/etc/hadoop/core-sit...

weixin_42621434的博客 9945

HBase源码分析之HRegionServer上MemStore的flush处理流程(二)

继上篇文章《HBase源码分析之HRegionServer上MemStore的flush处理流程(一)》遗留的问题之后,本文我们接着研究HRegionServer上MemStore的flush处理流程,重点讲述下如何选择一个HRegion进行flush以缓解MemStore压力,还有HRegion的flush是如何发起的。 ...

weixin_33826609的博客 229

数据库应用-H2database--未授权访问&命令执行漏洞

数据库应用-H2database--未授权访问&命令执行漏洞

XXokok的博客 1449

hbase内置zookeeper容器镜像升级修复漏洞

hbase内置zookeeper容器镜像升级查看镜像构建历史功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 查看镜像构建历史 由于原始hbase内置zookeeper容器镜像被扫描出漏洞,需要进行升级,首先查看镜像构建历史: do

yangyi_CSDN的博客 2019

Apache HBase RPC身份验证中间人安全措施绕过漏洞(CVE-2013-2193)

漏洞版本: Apache Group HBase 0.94.x Apache Group HBase 0.92.x 漏洞描述: BUGTRAQ ID: 61981 CVE(CAN) ID: CVE-2013-2193 HBase一个分布式、版本化、构建在Apache Hadoop和Apache ZooKeeper上的列数据库 HBase 0.92.x、0.94...

weixin_30834783的博客 234

数据库安全&Redis&CouchDB&H2database&未授权访问&CVE 漏洞

对服务进行类别划分,通过服务功能理解,如数据库有帐号密码就有爆破利用方法,也可。进行漏洞测试及服务常见的错误安全配置导致的未授权访问等。导致任意用户在可以访问目标服务器的情况下未授权访问。编写、支持网络、可基于内存亦可持久化的日志型、组合判断:利用搭建常见组合分析可能开放服务。信息来源:访问端口提示软件版本,应用信息等。端口扫描:利用服务开启后目标端口开放判断。键值存储数据库,并提供多种语言的。如果在没有开启认证的情况下,可以。漏洞,未授权访问,弱口令爆破等。注意:部分没目录权限读写权限。

2302_80396242的博客 756

H2database 未授权访问 vulhub

打开之后是一个访问的页面,我们需要用java语言驱动让这个网站主动访问其他主机并且执行命令,我们需要用到一开始写在最前面的工具进行生成rmi。我出现的一个问题就是反弹不出去,我想了想可能是要在我的外网上面java生成命令才对,但是等我反应过来,我已经把容器关掉了。在驱动选择:javax.naming.InitialContext。被反弹shell的机子:可以就用kali,或者配一台外网服务器。出现下方红色的字体就成功了,同时你的主机检测到了这个网站的访问。虚拟机:kali+docker。

c0529的博客 754

HBase 数据库安全:防范常见攻击与漏洞

1.背景介绍 HBase一个分布式、可扩展、高性能的列式存储数据库,基于 Google 的 Bigtable 设计。它是 Hadoop 生态系统的一部分,可以与 Hadoop 分布式文件系统(HDFS)集成,用于处理大规模的结构化和半结构化数据。HBase 提供了低延迟的读写访问,自动分区和负载均衡,以及数据备份和恢复等功能。 随着 HBase 的广泛应用,数据库安全变得越来越重要。在本文...

AI天才研究院 885

hbase InterruptedIOException

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1理解 HBase 中的 InterruptedIOException HBase一个开源的分布式、可扩展的 NoSQL 数据库,构建在 Hadoop 之上,主要用于处理大量的结构化与非...

weixin_42356844的博客 274

Hbaseflush刷新机制

flush刷新机制(溢写合并机制): 流程: 客户端不断将数据写入到memStore内存中, 当内存中数据达到一定阈值后, 需要将数据溢写刷新的HDFS中 形成一个storeFile文件 阈值: 128M 或者 1小时 满足任意个都会触发flush机制 内部详细流程: hbase 2.0架构 以上流程: 1) 客户端不断向memStore中写入数据, 当memStore只数据达到阈值后, 就会启动flush操作 2) 首先hbase会先关闭掉当前这个已经达到阈值的内存空间, 然后开启一个新的memSto

weixin_59295776的博客 2359

HBase的核心工作机制

​ 指的是当StoreFile不断的进行合并操作, 这个大的HFile就会变得越来越大, 当这个HFile达到一定阈值后, 就会触发Split分裂机制。思考: 请问 多个Master启动后, 如何选定谁成为Active Master呢?思考: Master是如何感知到RegionServer上线和下线呢?思考: 如果从一开始, 就有大量的并发, 如何解决呢?思考: 为啥要分裂呢?相关配置: hbase-site.xml。针对某一个表的列族开启: 优先级最高的。为什么是最终10GB呢?

yqqの博客 584

HBaseflush

flush:将写缓存中的数据,上传到hdfs上,每次flush后,每个写缓存中的列族文件都会在hdfs上产生一个存储文件。 MemStore 刷写时机: 1.当某个 memstroe 的大小达到了 hbase.hregion.memstore.flush.size(默认值 128M), 其所在 region 的所有 memstore 都会刷写。 当 memstore 的大小达到了 hbase.hregion.memstore.flush.size(默认值 128M) * hbase.hregion.mems

weixin_44911106的博客 724

HBase Flush 解析

在对hbase操作中,数据读取/写入都是发生在某个HRegion下某个Store里的files。那么究竟在写入hbase时,一个region下到底发生了什么呢? 常见的有以下三种情况: 1)、memstore flush to disk 2)、columnfamily’s files compaction 3)、region split 首先介绍一些概念:hbase一个表(table)会分割为n个

Kuzury 1万+

HBase学习笔记(四)——HBaseflush、compact机制

HBase中数据被写入 WAL 和 MemStore 后就可以说数据已经被成功写入到 Hbase 了。MemStore 中的数据达到一定的阈值,会被 Flush 成 HDFS 中的 HFile 文件。但是随着 Flush 次数的不断增多,HFile 的文件数量也会不断增多。从多个 HFile 文件中读取记录,将导致更多的 IOPS,这会使得读取时延不断增大。 Compaction 可以将一些 HFile 文件合并成为较大的 HFile 文件,也可以把所有的 HFile 文件合并成为一个大的 HFi

u011047968的专栏 2398
上一篇: 您的鼓励,我的动力!(CSDN 2013年度博客之星评选)
下一篇: 给研发做的互联网架构设计理念培训
杨步涛的博客
博客等级 码龄17年 1847粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值