HBase
文章平均质量分 93
阿丸笔记
微信公众号:阿丸笔记。
Java知识图谱:https://github.com/saigu/JavaKnowledgeGraph
展开
-
硬吃一个P0故障,「在线业务」应该如何调优HBase参数?
本文从HBase「基础架构」出发,梳理各个组件、读写流程的参数调优,期望能满足「在线业务」的 高可用、低抖动 的需求。原创 2022-03-21 13:49:01 · 2677 阅读 · 0 评论 -
使用phoenix踩的坑与设计思考
本文主要介绍在压测HBase的二级索引phoenix时踩的一个坑,使用时需要特别注意,而且背后的原因也很有意思,可以看出HBase和Phoenix对元数据设计上的差异。1.问题介绍在做phoenix压测时发现一个奇怪的现象。压测请求分布非常均匀,但是有一台机器的流量、负载都明显高于其他机器。如下图所示。请求均匀资源利用率不均匀,单个节点明显偏高。2.排查思路看到这个问题的第一反应,是去看下表分布是否均匀。hbase表分布是否均匀索引表分布是否均匀令人遗憾的是,确认后hbase表原创 2020-05-21 09:09:14 · 690 阅读 · 0 评论 -
「从零单排HBase 12」HBase二级索引Phoenix使用与最佳实践
Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs对HBase数据进行增删改查,构建二级索引。当然,开源产品嘛,自然需要注意“避坑”啦,阿丸会把使用方式和最佳实践都告诉你。1.什么是PhoenixPhoenix完全使用Java编写,将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。Phoenix主要能做以下这些事情:将SQL查询编译为HBase扫描scan确定scan的开始和停止位置将scan并行执行将where子句中的谓词推原创 2020-05-18 13:02:05 · 542 阅读 · 0 评论 -
「从零单排HBase 11」HBase二级索引解决方案
HBase一个令人惋惜的地方,就是不支持二级索引。因此,社区有了很多补充方案来填补HBase的二级索引能力的缺陷。今天,我们就来看看有哪些二级索引方案,通过对比各个方案的优缺点,并结合我们的具体场景做出二级索引方案选型。1.为什么需要二级索引HBase系统单纯从解决大数据实时读写问题角度出发,重点关注于分布式存储的扩展性、容错性、读写性能等方面,为此也牺牲了很多传统关系型数据库的功能,比如事务,SQL表达与分析等。实际上,这是NoSQL最初的含义,以解决大数据的实时存取为首要目标,提供简单的Get,原创 2020-05-15 09:04:01 · 258 阅读 · 0 评论 -
「从零单排HBase 10」HBase集群多租户实践
在HBase1.1.0发布之前,HBase同一集群上的用户、表都是平等的,大家平等共用集群资源。容易碰到两个问题:一是某些业务较其他业务重要,需要在资源有限的情况下优先保证核心重要业务的正常运行二是有些业务QPS常常很高,占用大量系统资源,导致其他业务无法正常运转。这是典型的多租户问题。因此,我们需要通过资源隔离来解决多租户问题,同时,需要考虑计算型业务与存储型业务混合部署来提高集群的资源利用率。1.基本概念1.1 namespace逻辑隔离HBase命名空间 namespace 与关系数据原创 2020-05-13 09:33:52 · 343 阅读 · 0 评论 -
「从零单排HBase 09」HBase的那些数据结构和算法
在之前学习MySQL的时候,我们知道存储引擎常用的索引结构有B+树索引和哈希索引。而对HBase的学习,也离不开索引结构的学习,它使用了一种LSM树((Log-Structured Merge-Tree))的索引结构。下面,我们就结合HBase的实现,来深入了解HBase的核心数据结构与算法,包括索引结构LSM树,内存数据结构跳表、文件多路归并、读优化的布隆过滤器等。1.LSM树LSM树和...原创 2020-05-05 21:12:13 · 487 阅读 · 0 评论 -
[从零单排HBase 08]HBase可用性分析与高可用实践
HBase作为一个分布式存储的数据库,它是如何保证可用性的呢?对于分布式系统的CAP问题,它是如何权衡的呢?最重要的是,我们在生产实践中,又应该如何保证HBase服务的高可用呢?下面我们来仔细分析一下。1. 什么是分布式系统的CAP?CAP是指一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。Consistenc...原创 2020-04-26 09:52:55 · 770 阅读 · 0 评论 -
[从零单排HBase 07]如何正确管理HBase的连接,从原理到实战
本文将介绍HBase的客户端连接实现,并说明如何正确管理HBase的连接。最近在搭建一个HBase的可视化管理平台,搭建完成后发现不管什么查询都很慢,甚至于使用api去listTable都要好几秒。经过一番排查发现,是每次请求的时候,都去临时创建了一个connection,而创建connection非常耗时导致整体的rt上升。因此,就深入了解了下如何正确管理HBase的connection,...原创 2020-04-19 14:27:33 · 388 阅读 · 0 评论 -
【从零单排HBase 06】生产环境使用HBase,你必须知道的HBase最佳实践
前面,我们已经打下了很多关于HBase的理论基础,今天,我们主要聊聊在实际开发使用HBase中,需要关注的一些最佳实践经验。1.Schema设计七大原则1)每个region的大小应该控制在10G到50G之间;2)一个表最好保持在 50到100个 region的规模;3)每个cell最大不应该超过10MB,如果超过,应该有些考虑业务拆分,如果实在无法拆分,那就只能使用mob;4)跟传统的关...原创 2020-03-13 21:51:58 · 701 阅读 · 0 评论 -
【从零单排HBase 05】核心特性region split
HBase拥有出色的扩展性,其中最依赖的就是region的自动split机制。1.split触发时机与策略前面我们已经知道了,数据写入过程中,需要先写memstore,然后memstore满了以后,flush写入磁盘,形成新的HFile文件。当HFile文件数量不断累积,Region server就会触发compaction机制,把小文件合并为大的HFIle。当每次flush完成 或者 c...原创 2020-03-11 19:50:24 · 488 阅读 · 0 评论 -
【从零单排HBase 04】HBase高性能查询揭秘
先给结论吧:HBase利用compaction机制,通过大量的读延迟毛刺和一定的写阻塞,来换取整体上的读取延迟的平稳。1.为什么要compaction在上一篇 HBase读写 中我们提到了,HBase在读取过程中,会创建多个scanner去抓去数据。其中,会创建多个storefilescanner去load HFile中的指定data block。所以,我们很容易就想到,如果说HFile...原创 2020-03-10 21:05:59 · 255 阅读 · 0 评论 -
【从零单排HBase 03】深入HBase读写
在了解HBase架构的基础上,我们需要进一步学习HBase的读写过程,一方面是了解各个组件在整个读写过程中充当的角色,另一方面只有了解HBase的真实请求过程,才能为后续的正确使用打下初步基础,毕竟,除了会使用api,你还得知道怎么能写得更快,怎么查得更快。1.首次读写的基本过程在上一篇 深入HBase架构(建议收藏)中已经做了介绍。这里再重申一下。这里要解决的主要问题是,client如...原创 2020-03-10 10:21:36 · 365 阅读 · 0 评论 -
【从零单排HBase 02】全面认识HBase架构(建议收藏)
在网上看过很多HBaes架构相关的文章,内容深浅不一,直到发现了一篇MapR官网的文章https://mapr.com/blog/in-depth-look-hbase-architecture/#.VdMxvWSqqko,写得实在太sheng dong了。因此,以这篇文章作为骨架,翻译了许多原文的内容,同时对一些细节进行自己的扩展,形成本文。1.HBase架构组成从物理结构上,HBase包...原创 2020-03-07 20:46:59 · 3002 阅读 · 0 评论 -
【从零单排HBase 01】从一无所知到5分钟快速了解HBase
最近公司正好准备投入HBase,因此做了一些基础学习准备,所以先暂时停止MySQL的更新,把HBase的学习心得跟大家分享一下,接下来一段时间都会发布HBase相关内容。在学的过程中,发现跟MySQL相互对比,能更深入地了解存储组件的设计。有任何问题或者想看的知识点,欢迎留言跟我沟通。1.前言随着公司业务不断发展,开始遇见越来越多的复杂存储场景。我们在关系型数据库上已经有了比较好的技术积...原创 2020-03-05 22:13:04 · 487 阅读 · 2 评论