hbase优化分析

Hadoop生态中的时序分析:HBase时序数据存储优化方案 时序数据(Time Series Data)是指按照时间顺序记录的一系列数据点,广泛应用于物联网、金融交易、系统监控等领域。随着大数据时代的到来,时序数据的规模呈爆炸式增长,传统的关系型数据库已难以满足海量时序数据的存储和分析需求。本文旨在探讨如何在Hadoop生态系统中,利用HBase这一分布式NoSQL数据库高效存储和处理时序数据,并提出一系列经过实践验证的优化方案。本文首先介绍时序数据的特性和HBase的基本原理,然后深入分析HBase在时序数据存储中的关键挑战。 阅读详情

目录:
1.表设计
2.写表操作
3.读表操作
4.HBase服务器端优化
5.Hbase客户端优化
6.HDFS相关优化

1.表设计:

1.1 表预分区(创建预分区)
默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。一种可以加快批量写入速度的方法是通过预先创建一些空的regions,这样当数据写入HBase时,会按照region分区情况,在集群内做数据的负载均衡。

1.2 RowKey(快速访问习惯)
● 通过单个row key访问:即按照某个row key键值进行get操作;
● 通过row key的range进行scan:即通过设置startRowKey和endRowKey,在这个范围内进行

1.3 Column Family(减少IO压力)
不要在一张表里定义太多的column family。目前Hbase并不能很好的处理超过2~3个column family的表。因为某个column family在flush的时候,它邻近的column family也会因关联效应被触发flush,最终导致系统产生更多的I/O

原因:
由于不同的列族会共享region,所以有可能出现,一个列族已经有1000万行,而另外一个才100行。当一个要求region分割的时候,会导致100行的列会同样分布到多个region中。这样就出现了基数问题。(如果表存在多个列族,列族A有100万行,列族B有10亿行,那么列族A可能会被分散到很多个Region上,这会导致扫描列族A的性能低下)

某个column family在flush的时候,它邻近的column family也会因关联效应被触发flush,最终导致系统产生更多的I/O,  flush同一个region

1.4 Max Version (节省硬盘资源)
创建表的时候,可以通过HColumnDescriptor.setMaxVersions(int maxVersions)设置表中数据的最大版本,如果只需要保存最新版本的数据,那么可以设置setMaxVersions(1)。

1.5 Time To Live (节省硬盘资源)
创建表的时候,可以通过HColumnDescriptor.setTimeToLive(int timeToLive)设置表中数据的存储生命期,过期数据将自动被删除,例如如果只需要存储最近两天的数据,那么可以设置setTimeToLive(2 * 24 * 60 * 60)。

2.写表操作:

2.1多Htable并发写
static final Configuration conf = HBaseConfiguration.create();
static final String table_log_name = “user_log”;
wTableLog = new HTable[tableN];
for (int i = 0; i < tableN; i++) {
wTableLog[i] = new HTable(conf, table_log_name);
wTableLog[i].setWriteBufferSize(5 * 1024 * 1024); //5MB
wTableLog[i].setAutoFlush(false);
}

2.2 Htable参数设置
2.2.1 Auto Flush(批量插入)
通过调用HTable.setAutoFlush(false)方法可以将HTable写客户端的自动flush关闭,这样可以批量写入数据到HBase,而不是有一条put就执行一次更新,只有当put填满客户端写缓存时,才实际向HBase服务端发起写请求。默认情况下auto flush是开启的。

2.2.2 Write Buffer
通过调用HTable.setWriteBufferSize(writeBufferSize)方法可以设置HTable客户端的写buffer大小,如果新设置的buffer小于当前写buffer中的数据时,buffer将会被flush到服务端。其中,writeBufferSize的单位是byte字节数,可以根据实际写入数据量的多少来设置该值。

2.2.3 Wal Flag
在HBae中,客户端向集群中的RegionServer提交数据时(Put/Delete操作),首先会先写WAL(Write Ahead Log)日志(即HLog,一个RegionServer上的所有Region共享一个HLog),只有当WAL日志写成功后,再接着写MemStore,然后客户端被通知提交数据成功;如果写WAL日志失败,客户端则被通知提交失败。这样做的好处是可以做到RegionServer宕机后的数据恢复。
因此,对于相对不太重要的数据,可以在Put/Delete操作时,通过调用Put.setWriteToWAL(false)或Delete.setWriteToWAL(false)函数,放弃写WAL日志,从而提高数据写入的性能。
值得注意的是:谨慎选择关闭WAL日志,因为这样的话,一旦RegionServer宕机,Put/Delete的数据将会无法根据WAL日志进行恢复。

2.3 批量写
通过调用HTable.put(Put)方法可以将一个指定的row key记录写入HBase,同样HBase提供了另一个方法:通过调用HTable.put(List)方法可以将指定的row key列表,批量写入多行记录,这样做的好处是批量执行,只需要一次网络I/O开销,这对于对数据实时性要求高,网络传输RTT高的情景下可能带来明显的性能提升。

2.4 多线程并发写
在客户端开启多个HTable写线程,每个写线程负责一个HTable对象的flush操作,这样结合定时flush和写buffer(writeBufferSize),可以既保证在数据量小的时候,数据可以在较短时间内被flush(如1秒内),同时又保证在数据量大的时候,写buffer一满就及时进行flush。下面给个具体的例子
for (int i = 0; i < threadN; i++) {
Thread th = new Thread() {
public void run() {
while (true) {
try {
sleep(1000); //1 second
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (wTableLog[i]) {
try {
wTableLog[i].flushCommits();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
};
th.setDaemon(true);
th.start();
}

3.读表操作

3.1 多Htable并发读
static final Configuration conf = HBaseConfiguration.create();
static final String table_log_name = “user_log”;
rTableLog = new HTable[tableN];
for (int i = 0; i < tableN; i++) {
rTableLog[i] = new HTable(conf, table_log_name);
rTableLog[i].setScannerCaching(50);
}
setScannerCaching(50),设置每次扫描50行(需要客户端的内存),默认的是10行
hbase-site.xml

hbase.client.scanner.caching
10

3.2 HTable 参数设置
3.2.1 HTable.setScannerCaching(int scannerCahingNum)
可以设置HBase scanner一次从服务端抓取的数据条数,默认情况下一次一条,通过将此设置成一个合理的值,可以减少Scan过程中Next()的时间开销,代价是scanner需要通过客户端的内存来维持这些被cache的行记录,数据量太大导致本地客户端发生OOM
通常情况下,默认的scan缓存设置就可以正常工作的。但是在一些大scan(一次scan可能需要查询几万甚至几十万行数据)来说,每次请求100条数据意味着一次scan需要几百甚至几千次RPC请求,这种交互的代价无疑是很大的。因此可以考虑将scan缓存设置增大,比如设为500或者1000就可能更加合适。笔者之前做过一次试验,在一次scan扫描10w+条数据量的条件下,将scan缓存从100增加到1000,可以有效降低scan请求的总体延迟,延迟基本降低了25%左右。
优化建议:大scan场景下将scan缓存从100增大到500或者1000,用以减少RPC次数

3.2.2 Scan Attribute Selection
Scan 时指定需要的Column Family ,可以减少网络传输数据量,否则默认scan操作会返回整行所有Column Family 的数据
优化原理:HBase是典型的列族数据库,意味着同一列族的数据存储在一起,不同列族的数据分开存储在不同的目录下。如果一个表有多个列族,只是根据Rowkey而不指定列族进行检索的话不同列族的数据需要独立进行检索,性能必然会比指定列族的查询差很多,很多情况下甚至会有2倍~3倍的性能损失。
优化建议:可以指定列族或者列进行精确查找的尽量指定查找

3.2.3
通过scan取完数据后,记得要关闭ResultScanner,否则RegionServer可能会出现问题(对应的Server资源无法释放)

3.3 批量读
通过调用HTable.get(Get)方法可以根据一个指定的row key获取一行记录,同样HBase提供了另一个方法:通过调用HTable.get(List)方法可以根据一个指定的row key列表,批量获取多行记录,这样做的好处是批量执行,只需要一次网络I/O开销,这对于对数据实时性要求高而且网络传输RTT高的情景下可能带来明显的性能提升。
优化原理:HBase分别提供了单条get以及批量get的API接口,使用批量get接口可以减少客户端到RegionServer之间的RPC连接数,提高读取性能。另外需要注意的是,批量get请求要么成功返回所有请求数据,要么抛出异常。
优化建议:使用批量get进行读取请求

离线批量读取请求是否设置禁止缓存?
优化原理:通常离线批量读取数据会进行一次性全表扫描,一方面数据量很大,另一方面请求只会执行一次。这种场景下如果使用scan默认设置,就会将数据从HDFS加载出来之后放到缓存。可想而知,大量数据进入缓存必将其他实时业务热点数据挤出,其他业务不得不从HDFS加载,进而会造成明显的读延迟毛刺
优化建议:离线批量读取请求设置禁用缓存,scan.setBlockCache(false)

3.4 多线程并发读(有点难)
在客户端开启多个HTable读线程,每个读线程负责通过HTable对象进行get操作。下面是一个多线程并发读取HBase,获取店铺一天内各分钟PV值的例子:

4.HBase服务器端优化

  1. 读请求是否均衡?
  优化原理:极端情况下假如所有的读请求都落在一台RegionServer的某几个Region上,这一方面不能发挥整个集群的并发处理能力,另一方面势必造成此台RegionServer资源严重消耗(比如IO耗尽、handler耗尽等),落在该台RegionServer上的其他业务会因此受到很大的波及。可见,读请求不均衡不仅会造成本身业务性能很差,还会严重影响其他业务。当然,写请求不均衡也会造成类似的问题,可见负载不均衡是HBase的大忌。
  观察确认:观察所有RegionServer的读请求QPS曲线,确认是否存在读请求不均衡现象
  优化建议:RowKey必须进行散列化处理(比如MD5散列),同时建表必须进行预分区处理

  2. Handler设置
  快速配置, 修改hbase-site.xml的hbase.regionserver.handler.count配置项

  1. <property>  
  2. <name>hbase.regionserver.handler.count</name>  
  3. <value>100</value>  
  4. </property>  

原理:
该配置定义了每个Region Server上的RPC Handler的数量,Region Server通过RPC Handler接收外部请求并加以处理,所以提升RPC Handler 的数量可以在一定程度上提高Hbase接收能力,这个数值取决于节点的硬件情况,需要来回调试

5.Hbase客户端优化

HBase中rowkey是索引,任何对全表的扫描或是统计都需要用到scan接口,一般都是通过next()方法获取数据。而每一个next()调用都会为每行数据生成一个单独的RPC请求,这样会产生大量的RPC请求,性能不会很好。

1.减少RPC调用的方法

如果执行一次RPC请求就可以获取多行数据,那肯定会大大提高系统的性能。这一块主要分为面向行级的缓存以及面向列级的缓存:

1)面向行级的缓存
我们可以通过使用扫描缓存方法来实现,不过这个缓存默认是关闭的,要用得打开。在表的层面使用时,这个表所有的扫描实例的缓存都会生效,在扫描层面也只会影响当前的扫描实例。
用户可以使用HTable.setScannerCaching()方法设置表级的扫描缓存,以及使用Scan.setCaching()方法设置扫描级的缓存。

2)面向列级的批量
用户可以使用Scan.setBatch()方法设置返回多少列。
通过组合使用扫描器缓存和批量大小的方式,可以让用户方便的控制扫描一个范围内的行健时所需要的RPC调用次数。

ps:

scanner需要通过客户端的内存来维持这些被cache的行记录,合理设置catching大小,防止出现OOM;
cache使用的内存计算公式为:并发数×cache数×单个result大小。

6.HDFS相关优化

HDFS作为HBase最终数据存储系统,通常会使用三副本策略存储HBase数据文件以及日志文件。从HDFS的角度望上层看,HBase即是它的客户端,HBase通过调用它的客户端进行数据读写操作,因此HDFS的相关优化也会影响HBase的读写性能。这里主要关注如下三个方面:

  1. Short-Circuit Local Read功能是否开启?
  优化原理:当前HDFS读取数据都需要经过DataNode,客户端会向DataNode发送读取数据的请求,DataNode接受到请求之后从硬盘中将文件读出来,再通过TPC发送给客户端。Short Circuit策略允许客户端绕过DataNode直接读取本地数据。
  优化建议:开启Short Circuit Local Read功能
  (hdfs-site.xml)

<property>
<name>dfs.client.read.shortcircuit</name>
<value>true</value>
</property>
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>

  2. Hedged Read功能是否开启?
  优化原理:HBase数据在HDFS中一般都会存储三份,而且优先会通过Short-Circuit Local Read功能尝试本地读。但是在某些特殊情况下,有可能会出现因为磁盘问题或者网络问题引起的短时间本地读取失败,为了应对这类问题,社区开发者提出了补偿重试机制 – Hedged Read。该机制基本工作原理为:客户端发起一个本地读,一旦一段时间之后还没有返回,客户端将会向其他DataNode发送相同数据的请求。哪一个请求先返回,另一个就会被丢弃。
  优化建议:开启Hedged Read功能

战舰V3移植CANopenNode并驱动电机全流程 第三部分是电机的对象字典(也就是节点的OD)中的索引,长度2个字节。索引发送的是小段模式,比如这一部分为0X40 0X60,实际操作的索引地址为0X6040。第一部分是COB-ID,长度1个字节,电机的node-ID默认为0x01,所以报文ID一直是601。第五部分是要写入的数据,数据发送的时候是小端模式,低字节数据先发送,长度由第二部分决定。配置定时器6,时间为1ms,根据公式计算得到参数PSC取72-1,ARR取1000-1。第二部分是CMD,长度1个字节,其实就是数据部分的长度, 阅读详情

相关推荐

深入解析Pytest 底层源码

Pytest 的底层架构是一个基于 pluggy钩子机制的微内核架构。其核心流程是一个固定的链条,链条上的每个环节都通过钩子向外暴露,允许插件介入。这种设计使得 Pytest 极其灵活和强大。启动: 解析配置,加载所有插件(包括核心插件)。收集: 遍历文件系统,发现测试用例,并生成Item对象。执行: 对每个Item,依次执行setup->call->teardown协议。报告: 在整个过程中,通过不同的钩子收集信息,最终生成报告。

monk all the way 619

HBase性能优化方法总结

在HBase中,数据在更新时首先写入WAL 日志(HLog)和内存(MemStore)中,MemStore中的数据是排序的,当MemStore累计到一定阈值时,就会创建一个新的MemStore,并且将老的MemStore添加到flush队列,由单独的线程flush到磁盘上,成为一个StoreFile。默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分。三者的优先级越来越高。

运维仙人 1572

IT资产管理(三)之GLPI资产录入

glpi 在 10 版本之后已经有自带的 glpi-agent 代理程序可自动获取服务器、电脑等的信息并进行自动录入和更新,不再依赖 10 版本之前的 fusioninventory 插件或者第三方资产统计平台 OCS Inventory 等

予挚之的博客 2986

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

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

大数据星球-浪尖 765

团结引擎+OpenHarmony 记录 (持续更新中)

获取不到的原因是因为二者不在同一个线程中,所以数据没有同步。而 globalThis.context 数据进行了同步。(TuanjieMainWorkerHandler.ts中可以看到)在进行绘制 UI 的时候 ,如果组件有 Native API 就可能不会显示出来,例如 web 控件就不能展示出来,刚加上权限的时候 会报错 因为缺少 reason ,添加上就不会报错了。只有纯 UI 控件是可以展示出来的,注释掉 web控件后就可以。

m_cainiaokuaifei的博客 1491

基于Hadoop生态的大数据异常检测平台搭建

批处理:用Spark MLlib的LOF(局部异常因子,适合高密度数据)、(单类支持向量机,适合高维数据);流处理:用Flink ML的(实时聚类,检测离群点)、ADWIN(自适应滑动窗口,处理概念漂移)。数据层:用Flume/Kafka采集数据,HDFS存储,Hive管理元数据;计算层:用Spark处理离线批数据,Flink处理实时流数据;算法层:用孤立森林(批)、3σ原则(流)检测异常;可视化层:用Grafana做仪表盘,Prometheus+Alertmanager报警。这个平台能处理。

软件工程实践的博客 933

面试官:HBase 有哪些优化点?

  1. Minor 操作只用来做部分文件的合并操作以及包括 minVersion=0 并且设置 ttl 的过期版本清理,不做任何删除数据、多版本数据的清理工作。   2. Major 操作是对 Region 下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。...

linjingyg的博客 856

保姆级教程:用GROMACS的FEP方法计算小分子结合自由能(附完整mdp配置)

本文提供了一份详细的GROMACS自由能微扰(FEP)计算教程,涵盖从系统准备、参数配置到结果分析的全流程。通过具体案例演示如何计算小分子结合自由能,包括λ窗口设计、动力学参数优化及并行化执行技巧,帮助研究者克服FEP计算中的常见问题,获得可靠的自由能数据。

weixin_30598225的博客 353

HBase客户端访问超时原因及参数优化

默认的HBase客户端的参数配置是没有做过优化的,所以对于低延时响应的HBase集群,需要对客户端的参数进行优化。1.      hbase.rpc.timeout以毫秒计算的所有HBase RPC超时,默认为60s。该参数表示一次RPC请求的超时时间。如果某次RPC时间超过该值,客户端就会主动关闭socket。 如果经常出现java.io.IOException: Connection rese

DataFlow范式 2万+

Cursor赋能Qt C++:从环境配置到项目构建的AI开发新范式

本文详细介绍了如何利用Cursor工具链提升Qt C++开发效率,从智能环境配置到CMake项目构建的全流程实践。通过AI辅助编程、Qt生态优化及高级调试技巧,开发者可快速完成从传统开发到AI驱动的新范式转换,显著缩短项目搭建时间并提升代码质量。

weixin_30329623的博客 546

安装anaconda3时出现错误:Failed to link extracted packages to D:\anaconda!...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1481

Hbase参数调优

zookeeper.session.timeout: 默认值90000毫秒(90s)。当某个RegionServer挂掉后,90s之后Master才能察觉到。可适当减少此值,尽可能块的检测regionServer故障,可调整值20-30s。也可以调整中间等待多少秒后重试,以及重试次数。hbase.client.pause(默认值100ms) 等待多少秒hbase.client.retries.number(默认15次) 重试次数。

硅谷工具人 1193

OPENSSL使用方法

预备知识KEY 通常指私钥。CSR 是 Certificate Signing Request 的缩写,即证书签名请求,这不是证书,只是包含申请证书的基本信息。生成证书时要把这个提交给权威的证书颁发机构,颁发机构审核通过之后,再根据这些申请信息生成相应的证书。CRT 即 certificate的缩写,即证书。 X.509 是一种证书格式。对X.509证书来说,认证者总是CA或由CA指定的人,一份...

zxm8513优快云博客 1212

HBASE的读延迟分析及其优化

一 HBASE的概述 HBASE的简介 HBASE的起源与Google的论文的BigTable论文的,现在是Apache的顶级项目之一。HBAS不同于是一般的关系型的数据库,它是一个的非结构化的数据存储的数据库,而且和redis这个类按照key-value的存储数据形式的非结构化数据库的有点不同是,hbase是基于列进行存储的接近实时的数据库。 HBASE的结构和功能 Hbase的结构: 数据库存储是基于region进行分布式存储数据; 支持HDFS文件系统进行存储数据;...

qq_25735725的博客 1623

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

UART接口24位ADC:ADS122U04与PIC18工业测温系统实战解析

在工业过程控制与HVAC系统中,温度测量的精度和稳定性直接决定控制质量。传统MCU内置ADC受分辨率、基准温漂和噪声限制,难以满足冷冻水供回水温差等微小信号检测需求。ΔΣ ADC凭借过采样和数字滤波架构,配合可编程增益放大器与低温漂基准,成为高精度温度采集的关键器件。同时,UART接口相比SPI具有更强的抗干扰能力和传输距离优势,尤其适合分布式工业现场。通过集成内部温度传感器与激励电流源,可简化RTD、热电偶和NTC的调理电路设计,结合两点标定与冷端补偿,能将系统误差压缩至±0.3℃以内。本文以ADS122

weixin_34268169的博客 398

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HBase优化 | HBase写吞吐场景资源消耗量化分析及优化

目录 1概述 1 2 HBase 写链路简要分析 2 3 Flush&amp;Compaction 2 4系统开销定量分析 3 4.1 系统变量 4 4.2 磁盘容量开销量化分析 5 4.3 网络开销量化分析 6 5总结 13 6参考文献 13   1概述 HBase 是一个基于 Google BigTable 论文设计的高可靠性、高性能、可伸缩的分布式存储系统。 网上关于...

Jackie_ZHF的博客 854

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

HBase 写吞吐场景资源消耗量化分析及优化

一、概述 HBase 是一个基于 Google BigTable 论文设计的高可靠性、高性能、可伸缩的分布式存储系统。 网上关于 HBase 的文章很多,官方文档介绍的也比较详细,本篇文章不介绍 HBase 基本的细节。 本文从 HBase 写链路开始分析,然后针对少量随机读和海量随机写入场景入手,全方面量化分析各种资源的开销, 从而做到以下两点:  在这里相信有许多想要学习大数据的同学,...

weixin_44386969的博客 395

Apache HBase 查询优化:索引设计与查询计划分析

在大数据场景下,Apache HBase 作为分布式列存储数据库,其查询性能直接影响业务系统的响应速度和用户体验。本文将深入探讨 HBase 的查询优化策略,重点分析索引设计原则和查询计划优化技巧,帮助开发者构建高性能的 HBase 应用。 ## HBase 查询架构基础 ### 数据存储模型 HBase 采用列式存储架构,数据按行键(RowKey)排序存储,每个单元格包含多个版本。理解这一...

gitblog_00447的博客 898

HBase写吞吐场景资源消耗量化分析及优化

一. 概述 HBase 是一个基于 Google BigTable 论文设计的高可靠性、高性能、可伸缩的分布式存储系统。 网上关于 HBase 的文章很多,官方文档介绍的也比较详细,本篇文章不介绍HBase基本的细节。 本文从 HBase 写链路开始分析,然后针对少量随机读和海量随机写入场景入手,全方面量化分析各种资源的开销, 从而做到以下两点: 在给定业务量级的情况下,预先评估好集群的合理规模 在 HBase 的众多参数中,选择合理的配置组合 二. HBase 写链路简要分析 HBase 的写入链路基于

萌兔兔MMQ!! 545

HBase一次客户端读写异常解读分析与优化全过程(干货)

大数据时代,HBase作为一款扩展性极佳的分布式存储系统,越来越多地受到各种业务的青睐,以求在大数据存储的前提下实现高效的随机读写操作。对于业务方来讲,一方面关注HBase本身服务的读写性能,另一方面也需要更多地关注HBase客户端参数的具体意义。这篇文章就从一个具体的HBase客户端异常入手,定位异常发生的原因以及相应的客户端参数优化。 案发现场 最近某业务在使用HBase客户端读取数...

统木木的博客 1043

hbase 学习(十四)Facebook针对hbase的优化方案分析

使用hbase的目的是为了海量数据的随机读写,但是在实际使用中却发现针对随机读的优化和gc是一个很大的问题,而且hbase的数据是存储在Hdfs,而Hdfs是面向流失数据访问进行设计的,就难免带来效率的下降。下面介绍一下Facebook Message系统在HBase online storage场景下的一个案例(《Apache Hadoop Goes Realtime at Facebook》,...

weixin_33860737的博客 81

Hbase工作原理分析及优化

逻辑架构 架构图 组件说明 Client 提供了访问HBase的一系列API接口,如Java Native API、Rest风格http API、Thrift API、scala等,并维护cache来加快对HBase的访问 Zookeeper 保证任何时候,集群中只有一个master 存贮所有Region的寻址入口。 实时监控Region server的上线和下线信息,并实时通知Master 存储HBase的schema和table元数据 .

weixin_43913430的博客 519

Hbase高级特性及其优化分析

Hbase高级特性及其优化分析

克终的博客 557

大数据开发技术HBase优化与特点分析

高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对Hmaster的高可用配置。 关闭HBase集群(如果没有开启则跳过此步) [atguigu@hadoop102 hbase]$ bin/stop-hbase.sh 在conf目录下创建backup-masters文件 [atguigu@hadoop102 hbase

m0_58371965的博客 1188
上一篇: MySQL 对于千万级的大表优化流程
下一篇: HbaseFilter
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值