hbase
大数据玩家
致力于大数据源码研究、底层原理研究!
展开
-
HBase原理|HBase内存管理之MemStore进化论
Java工程中内存管理总是一个绕不过去的知识模块,无论HBase、Flink还是Spark等,如果使用的JVM堆比较大同时对读写延迟等性能有较高要求,一般都会选择自己管理内存,而且一般都会选择使用部分堆外内存。HBase系统中有两块大的内存管理模块,一块是MemStore ,一块是BlockCache,这两块内存的管理在HBase的版本迭代过程中不断进行过各种优化,接下来笔者结合自己...转载 2019-10-23 14:47:04 · 833 阅读 · 0 评论 -
HMaster因zookeeper连接超时自杀
缘由 hbase在上线一段时间后,发现HMaster经常会自杀挂掉,具体报错如下报错2019-06-14 11:24:07,242 WARN [master/ms-fibo-test-dataserver4/172.16.201.239:16000-EventThread] client.ConnectionManager$HConnectionImplementatio...原创 2019-06-14 12:34:40 · 2448 阅读 · 0 评论 -
一次region过多导致HBase服务宕机事件
具体情况是,甲方有10个节点的HBase集群,主要业务表共10张,region总数达23000+,平均每台RegionServer(RS)的region数量2300左右,每台RS堆内存配置96G(初始配置32G,节点内存256G)。在业务正常运行几个月后,所有RS突然宕机。问题分析 因为集群region数量太多了,导致每个region的memstore空间...转载 2019-04-15 12:08:26 · 1524 阅读 · 0 评论 -
HBase最佳实践之Region数量&大小
Region数量 通常较少的region数量可使群集运行的更加平稳,官方指出每个RegionServer大约100个regions的时候效果最好,理由如下: HBase的一个特性MSLAB,它有助于防止堆内存的碎片化,减轻垃圾回收Full GC的问题,默认是开启的。但是每个MemStore需要2MB(一个列簇对应一个写缓存memstore)。所以如果每个region有2个famil...转载 2019-04-15 11:40:48 · 1275 阅读 · 1 评论 -
hbase region拆分的三种方式
我们都知道,region在数据量大到一定程度的时候,会进行拆分(最开始由一个变成二个),而拆分的方式有三种,包括预拆分、自动拆分、手动强制拆分。下面就来介绍介绍拆分的方式。预拆分 预拆分(pre-splitting)就是在建表的时候就定义好了拆分点的 算法,所以叫预拆分。 预拆分一部分的作用能减少rowkey热点,另外一部分能减轻region切分时...原创 2019-04-15 10:04:31 · 5033 阅读 · 0 评论 -
hbase修复元数据
新版本的 hbck 可以修复各种错误,修复选项是:(1)-fix,向下兼容用,被-fixAssignments替代(2)-fixAssignments,用于修复region assignments错误(3)-fixMeta,用于修复meta表的问题,前提是HDFS上面的region info信息有并且正确。(4)-fixHdfsHoles,修复region holes(空洞,某个区...原创 2019-04-11 18:23:10 · 1385 阅读 · 0 评论 -
HBASE(Memstore的专属JVM策略MSLAB)
现在要提到一个全新的策略MSLAB,虽然它目的也是减少Full GC, 但是它的意义不止于此。就像我之前说的,堆内存足够大的时候发生Full GC 的停留时间可以长达好几分钟。解决这个问题不能完全靠JVM的GC回收 策略,最好的解决方案是从应用本身入手,自己来管好自己的内存空 间。 随着硬件科技的进步,现在的服务器内存可以达到32GB、64GB甚至 100GB,...原创 2019-04-11 14:32:23 · 1058 阅读 · 0 评论 -
HBASE手动触发major_compact
定时器执行脚本:#!/bin/bashsource /etc/profilesh ./hbase shell <<EOFmajor_compact 'table_name'EOFmajor_compact语法:语法:#Compact all regions in a table:hbase> major_compact 't1'#Comp...原创 2019-04-10 19:04:53 · 4766 阅读 · 0 评论 -
HBase原理 | HBase内部探险
一.数据模型1.重要概念回顾 Namespace(表命名空间):将多个表分到一个组进行统一管理。 Table(表):一个表由一个或者多个列族组成;数据属性比如:超时时间(TTL),压缩算法(COMPRESSION)等,都在列族的定义中定义;定义完列族后表是空的,只有添加了行,表才有数据。 Row(行):一个行包含了多个列,这些列通过列族来分类;行中的数据所属列族只能从...转载 2019-02-19 11:36:01 · 210 阅读 · 0 评论 -
Hbase写流程
写过程1.Client访问ZK,根据ROOT表获取meta表所在Region的位置信息,并将该位置信息写入Client Cache。 (注:为了加快数据访问速度,我们将元数据、Region位置等信息缓存在Client Cache中。)2.Client读取meta表,再根据meta表中查询得到的Namespace、表名和RowKey等相关信息,获取将要写入Region的位置信息(此过程即R...原创 2019-02-22 15:26:05 · 155 阅读 · 0 评论 -
HBase实战 | HBase Rowkey 设计指南
RowKey 到底是什么 我们常说看一张 HBase 表设计的好不好,就看它的 RowKey 设计的好不好。可见 RowKey 在 HBase 中的地位。那么 RowKey 到底是什么?RowKey 的特点如下: 类似于 MySQL、Oracle中的主键,用于标示唯一的行; 完全是由用户指定的一串不重复的字符串; HBase 中的数据永远是根据 Rowkey...原创 2019-02-22 14:04:07 · 278 阅读 · 0 评论 -
HBase 读流程解析与优化的最佳实践
一、前言 本文首先对 HBase 做简单的介绍,包括其整体架构、依赖组件、核心服务类的相关解析。再重点介绍 HBase 读取数据的流程分析,并根据此流程介绍如何在客户端以及服务端优化性能,同时结合有赞线上 HBase 集群的实际应用情况,将理论和实践结合,希望能给读者带来启发。如文章有纰漏请在下面留言,我们共同探讨共同学习。二、 HBase 简介 HBase 是一个分布...转载 2019-02-22 10:44:42 · 175 阅读 · 0 评论