[Hbase] Hbase优化之禁用wal以及Hfile应

HBase生产踩坑实录:LSM树、ZooKeeper超时与JVM内存陷阱 LSM树是现代KV存储的核心数据结构,其通过MemStore与SSTable分层设计实现高效写入,但背后隐藏着Compaction触发不可控、读写资源争抢、GC停顿放大等系统性风险。ZooKeeper作为分布式协调基石,其会话超时机制在真实IO与GC压力下极易失效,成为集群雪崩的导火索。而JVM堆内存配置若未区分MemStore、BlockCache与对象生命周期,将直接导致CMS并发失败与长时间Stop-The-World。这些并非配置疏漏,而是HBase 0.94.x架构在高负载下的固有行为模式。本文基 阅读详情

 

1、WAL:write-ahead log 预写日志

灾难恢复,一旦服务器崩溃,通过重放log,即可恢复之前的数据(内存中还没有刷写到磁盘的数据);如果写入wal操作失败,整个操作就认为是失败。
因此,如果开启wal机制,写操作性能会降低;
如果关闭wal机制,数据在内存中未刷写到磁盘时,server突然宕机,产生数据丢失。

解决办法:不开启wal机制,手工刷新memstore的数据落地

//禁用WAL机制
put.setDurability(Durability.SKIP_WAL) 

在数据写操作之后,调用flushTable操作,代替wal机制:

  def flushTable(table:String,conf:Configuration):Unit={
    var connection: Connection = null
    var admin:Admin=null

    connection=ConnectionFactory.createConnection(conf)

    try{
      admin=connection.getAdmin
      //将数据从MemStore刷写到磁盘中
      admin.flush(TableName.valueOf(table))

    }catch{
      case e:Exception=>e.printStackTrace()
    }finally {
      if(null!=admin){
        admin.close()
      }
    }    
  }

2、利用HFile

直接使用Spark将DF/RDD的数据生成HFile文件,数据load到HBase里面。

注意:
<1> HFile在所有的加载方案里面是最快的,不过有一个前提——数据是第一次导入,表是空的,如果表中已经有了数据,HFile再导入到hbase的表中会触发split操作;

<2>输出部分key和value的类型必须是: < ImmutableBytesWritable, KeyValue>或者< ImmutableBytesWritable, Put>

//1.元数据DataFrame
//这里使用mapPartitions方法
val hbaseInfoRDD = logDF.rdd.mapPartition
异步fifo的UVM验证(最终最终版) 更新了refmdl以及scb 阅读详情

相关推荐

Linux 4.19、Linux 5.10、Linux 6.1 三个版本详细分析

Linux 4.19发布日期:2018年10月22日LTS 状态:是长期支持版本,官方支持到2024年12月。Linux 5.10发布日期:2020年12月13日LTS 状态:LTS 版本,官方支持到2026年12月。Linux 6.1发布日期:2022年12月11日LTS 状态:不是官方的LTS版本,但通常社区会为新的版本提供一定时间的支持。定位:稳定性和长期支持,广泛用于多种平台,尤其是嵌入式系统和服务器。主要优势:稳定性高,广泛的硬件支持,核心功能可靠。

小灰灰的博客 5824

hbase记录日志wal_禁用预写日志记录wal以强制提交核心数据

hbase记录日志walWrite-Ahead Logging has been the default journaling mode for Core Data SQLite stores since iOS 7 and OS X Mavericks. Journaling in Core Data is best explained as the way data transactions ...

weixin_26711867的博客 973

3dmax插件神器-019-全模种树.mse

3dmax插件神器-019-全模种树.mse

HBase踩过的坑——持续更新

1.HBase数据热点问题 问题描述: 在某一个时刻,电池数据表的以某些规则开头的数据,比如M12******,这些电池一直在上报数据,由于HBase的存储是按照字典顺序排序的,所有某一时刻,相似规则的数据落在了同一个region上,造成了数据热点。 解决方法: 我们采取的是rowkey散列+预分区的方式:http:...

weixin_34375054的博客 804

HBase 预写日志 (WAL)

  HBase数据格式包括Log结构参考上一篇日志WAL最重要的作用是灾难恢复,一旦服务器崩溃,通过重放log,我们可以恢复崩溃之前的数据。如果写入WAL失败,整个操作也将认为失败。 图6  WAL   基本流程:首先,客户端初始化一个可能对数据改动的操作,如put(Put),delete(Delete) 和 incrementColumnValue()。这些操作将被封装在...

爱上一条鱼的专栏 1007

Trafodion禁用WAL日志

Trafoidon底层存储引擎使用HBase。在某些情况下,为了提高写入数据的性能,我们考虑关闭HBase WAL日志。 我们可以在创建表的时候单独针对特定的表关闭WAL日志。 示例如下: CREATE TABLE if not exists TRAFODION.SEABASE.TEST_WAL ( ID INT, APN V...

yangpengpeng2015的博客 438

day02(hBase)

hbase

yygyj的博客 1214

HBase 中的 WAL(Write-Ahead Log)是什么?它在数据持久化中的作用是什么?

如需进一步优化性能,可通过调整 WAL 的持久化模式或合并小文件(Log Rolling)来实现。是一种核心机制,用于确保数据的持久性和故障恢复能力。”的机制,平衡了性能与数据安全。WALHBase 实现数据可靠性的基石,通过“

weixin_45422672的博客 827

深入理解 HBase Compaction 机制

HBase有很多话题可以聊,包括读写路径上涉及到的一些数据结构,性能优化以及优化读写做的一些设计等。今天要探讨的Compaction机制就是HBase架构上做的一个重要优化

Focus on Lakehouse 1万+

HBase性能优化与实践(详细)

1. HBase客户端优化 和大多数系统一样,客户端作为业务读写的入口,姿势使用不正确通常会导致本业务读延迟较高实际上存在一些使用姿势的推荐用法,这里一般需要关注四个问题: 1) scan缓存是否设置合理? 优化原理:在解释这个问题之前,首先需要解释什么是scan缓存,通常来讲一次scan会返回大量数据,因此客户端发起一次scan请求,实际并不会一次就将所有数据加载到本地,而是分成多次RPC请求进行加载,这样设计一方面是因为大量数据请求可能会导致网络带宽严重消耗进而影响其他业务,另一方面也有可能因为数

一瓶绿茶三元钱 765

hbase优化:客户端、服务端、hdfs

在Num(Region of Table) < Num(RegionServer)的场景下切分部分请求负载高的Region并迁移到其他RegionServer。是否使用布隆过滤器:任何业务都该设置Bloomfilter,通常设置为row就可以,除非确认业务随机查询类型为row+cf,可以设置为rowcol。在业务可以接受的情况下开启异步批量提交,使用方式:setAutoFlush(false)检查RowKey设计以及预分区策略,保证写入请求均衡。WAL是否需要同步写入。3.列簇:是否过多、

weixin_43015677的博客 1599

万字长文详解HBase读写性能优化

01HBase优化1. HBase客户端优化和大多数系统一样,客户端作为业务读写的入口,姿势使用不正确通常会导致本业务读延迟较高实际上存在一些使用姿势的推荐用法,这里一般需要关注四个问题:1) scan缓存是否设置合理?优化原理:在解释这个问题之前,首先需要解释什么是scan缓存,通常来讲一次scan会返回大量数据,因此客户端发起一次scan请求,实际并不会一次就将所有数据加载到本地,而是分成多...

大数据星球-浪尖 765

Hbase+Spring boot实战分布式文件存储-第4章-HBase优化策略

4-1 HBase优化策略一:服务端优化策略 什么会导致HBase的性能下降1.JVM内存分配与GC回收策略 这个是大部分java用程序都会遇到的问题,这里不再阐述2.与HBase运行机制相关的部分配置不合理 HBase写入时当memstore达到一定的大小会flush到磁盘保存成HFile,当HFile小文件太多会执行compact操作进行合并,对HBase来说,当每一个store只包含一个...

muyingmiao的专栏 862

四、HBase调优

一、优化策略: 导致HBase性能下降的因素: Jvm内存分配与GC回收策略 与HBase运行机制相关的部分配置不合理 表结构设计及用户使用方式不合理 二、HBase概念: 1、HBase数据存储过程: HBase写入时当MEMStore达到一定的大小会flush到磁盘保存成HFile,当HFile小文件太多会执行compact操作进行合并。 对HBase来说,每个Store...

qq_1306238492的博客 288

HBase客户端、服务器端、列簇设计、HDFS相关优化HBase写性能优化切入点,写异常问题检查点

首先考虑业务是否需要写WAL,通常情况下大多数业务都会开启WAL机制(默认),但是对于部分业务可能并不特别关心异常情况下部分数据的丢失,而更关心数据写入吞吐量,比如某些推荐业务,这类业务即使丢失一部分用户行为数据可能对推荐结果并不构成很大影响,但是对于写入吞吐量要求很高,不能造成数据队列阻塞。假设忽然来了一批大汉,要定制超大汉堡,好了,所有的窗口都工作起来,而且因为大汉堡不好制作导致服务很慢,这样必然会导致其他排队的用户长时间等待,直至超时。另外需要注意的是,批量put请求要么全部成功返回,要么抛出异常。

一个写湿的程序猿 572

HBase读写流程深度解析:从客户端到RegionServer的数据之旅

本文深度解析HBase读写流程,从客户端到RegionServer的数据处理全过程。详细介绍了元数据定位、数据检索、写入路径及后台机制如Compaction和Region Split,并提供了性能调优的实战经验,帮助开发者优化HBase集群性能。

weixin_30733003的博客 435

大数据HBase(二)

根据实际数量、集群的规模等确定分区数。建表时就创建好分区,防止表中数据被划分到不同分区。如果不指定,默认一个分区,随着表的变大,系统会自动拆分。

qq_44273739的博客 475

HBase读写路径的工作机制

出处:http://wuyudong.com/1946.html HBase 写路径工作机制 在HBase 中无论是增加新行还是修改已有的行,其内部流程都是相同的。HBase 接到命令后存下变化信息,或者写入失败抛出异常。默认情况下,执行写入时会写到两个地方:预写式日志(write-ahead log,也称HLog)和MemStore。HBase 的默认方式是把写入动作记录在这两个地方,以保证...

weixin_33982670的博客 138
上一篇: 你真的知道什么是“大数据”吗?
下一篇: Hadoop之Yarn
大数据基础入门教程
博客等级 码龄7年 136粉丝 226原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值