hbase 删除列族下的某一列_技术夜校HBase运维实践

每年的“618”、“双11”、”双12“等促销日对“剁手党”来说是一场场的狂欢,而对于电商的运维团队来说则是一场又一场不能有丝毫松懈的战斗,会耗费大量精力和体力。在极限高并发访问的情况下,在线交易系统、支付系统等是如何经受住考验的呢?

565ecb30d5f1ebaa2203ef32267e8464.png

技术夜校第五期邀请到有丰富电商运维经验,曾多次参与电商大促运维保障的大咖 云锦 给大家带来HBase运维实践的分享。他曾负责2万+服务器,在大数据,容器化方面积累了丰富的实战经验。

fc86a1725414bdb1e25cf6314b9a02fe.png

HBase是什么

分享伊始,云锦问了大家是否听说过HBase,现场同学反映热烈,大多数同学都有所了解。HBase是一个分布式的、面向列的开源数据库,适合于非结构化数据存储的数据库,基于列而不是基于行的模式。随着数据增长,自动分裂。它主要有3个特点:海量PB级存储、水平扩展,稀疏、多版本,数据类型单一、字节数组。

a29ec4880cbfe8625e3c125608c470b5.png

HBase的整体架构如下图:

94369bd438c1c151aeb8d9cfa7f948bb.png

从下往上分为三个部分,最下面为Hadoop,是一个HDMS分布式的存储系统,默认三副本,比较可靠。

HMaster和HRegionServer是一个主从架构,RegionServer主要作用是负责响应,客户端读写。在RegionServer里有Region和HLog,Hlog是预写日志,主要作用是防止某个RegionServer宕机后,可及时做恢复。HBase表的数据是分散在Region里的,随着表的数据越来越大,它可能会切分成多个Region,换言之,每个Region的数据就是表数据的一部分。Region里有store,一个Region有多少个store,取决于Region表里的数据有多少个列族。Store里有Memstore和StoreFile,Memstore是一块内存空间。架构最上面是HMaster,是响应客户端的DDL操作,如建表,删表,修改表等,以及对集群做balance,即表的数据会切分到多个Region,对Region做负载均衡。

Zookeeper是Client端的源数据寻阻入口,Client端请求Zookeeper达到meta表所在的RegionServer,最终根据用户的请求,与具体的RegionServer做交互。Client是操作HBase集群的入口。

HBase应用场景

HBase在监控、在线服务、订单信息等场景均有应用。

在线服务类场景中,以电信上网详单为例,电信用户庞大,每个用户上网流量详单的数据需要实时保存,需要底层数据库有较高吞吐,其次用户在做查询时,要求低延迟响应,随机读写。在切换HBase之前,经常出现服务不可用或响应慢的情况,切换后即较平稳。

3c012cb71886029d9e6ac178e018c33d.png

在监控类场景中,涉及时间序列数据库,底层opentsdb实际的存储是HBase。集群峰值时tbs写入是两百多万,若用传统数据库则难以支撑,而用HBase则能轻松实现,在用户做调用链性能查询时,能做到实时响应。

c53b73de24a6772790fab5bbbabda50b.png

在订单信息类场景中,可应用于电商历史订单、私信通知、App push通知等。随着电商的订单量越来越大,历史订单达到上百亿时,用传统的数据做分库分表风险较大。历史订单查询频率较低,用HBase能轻松解决海量存储及用户的在线查询。

b351de54e17ec703512ce51a7ec85afb.png

HBase基本操作

如何使用HBase?HBase表与传统数据库表读写和查询有哪些不同?HBase表模型由rowkey、column family(列族)、timestamp(时间戳)三部分组成。与传统数据库相比,不同在于HBase有列族的概念,列族下面的列可以随着业务场景在线添加,时间戳可以对表格的历史版本号、版本数做保留。

HBase的基本操作有:查表、建表、插入数据、查询数据get、查询数据scan、删除数据等,具体如下:

查表

05e935adc87041a00ca292286366730c.png

建表

669eb9425a64e8604d75ed9e75432b98.png

插入数据

f44e3a3cd6cd01704a896f1d7fea4a64.png

查询数据get

通过rowkey进行查询→查看rowkey下某个列族的信息→查看rowkey列族某个列的信息

0502597bf0c766fbec75fbe427af32a2.png

查询数据scan

单列族查询→多列族查询→查询表前2行数据→指定rowkey的范围查询→指定数据版本的范围查询→指定列族与某个列名查询

b159639be3edb9d424a81c12fc5f3324.png

删除数据

指定rowkey以及列名进行删除→删除一个列族→清空表数据

40d0a2597a68a3000a577e26375bcaea.png

HBase日常维护

在HBase运维过程中,会遇到哪些常见问题?以及如何及时发现问题,遇到问题后该如何分析定位问题?基本排查思路如下图:

91cc0d95948fa6e2b2e4832b1c4c4e67.png

HBase监控体系

业务读写响应变慢,写入阻塞,RS宕机,第一反应都应该去看监控,很多异常都可以及时的反映出来,如资源使用情况,队列使用情况,业务相互干扰情况,Compaction情况等。

监控体系如何搭建?可以从三个维度入手。第一个维度是OS层面,常见的load、CPU、内存使用率、磁盘Util、网卡流量、连接数的监控等。

第二个维度是组件层面,涉及一些性能指标,如RS TPS、RS memstore、RS queue length 、RS RPC。

第三个维度是业务/表层面,如write、read、storefiles、storesize。

监控是提前发现及定位问题,但查找问题的根因需要通过日志分析的手段来实现。

HBase-日志分析

dd45a2498d0a2042e9b2c6d364b4e2d5.png

HBase-常见问题

f4c3add33274f9422a77ad4d5580969a.png

结尾

在分享的最后,云锦用一句话总结了整体的分享内容——在需要实时读写、随机访问、超大规模数据集时,请使用HBase!

现场的同学听了云锦的分享后,表示收获很多,对于存在的一些疑问,现场也做了互动与交流。

97bbf4e5968b43f2de00c34144f012a9.png

同学1

出现热点数据倾斜,有哪些方案?

云锦 

热点问题,解决方案:rowkey采用加盐,哈希,反转,预分区等手段。

d0265e5ab309746117a1f32696644686.png 8c275becac78eb929350764c36e2a4fb.png

同学2

时序数据opentsdb和influxdb的底层数据库用的是什么?

云锦

opentsdb底层存储用的是HBase,influxdb存储是自身的TSM文件

d0265e5ab309746117a1f32696644686.png 14af02617e1daee1ea23e7943004f453.png

同学3

如何保证高可用?

云锦

hmaster通过zookeeper做HA,hregionserver通过WAL,底层是HDFS,保证数据写入不丢失。

d0265e5ab309746117a1f32696644686.png 3d52a1709eebe56d34b4319f0015908c.png

同学4

表数据规模达到多少,适用hbase ?

云锦

数据规模至少上亿条记录

d0265e5ab309746117a1f32696644686.png 66241577c4889d93fa3a2af065ec3b55.png

【得物技术】

扫一扫关注公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>