每年的“618”、“双11”、”双12“等促销日对“剁手党”来说是一场场的狂欢,而对于电商的运维团队来说则是一场又一场不能有丝毫松懈的战斗,会耗费大量精力和体力。在极限高并发访问的情况下,在线交易系统、支付系统等是如何经受住考验的呢?
技术夜校第五期邀请到有丰富电商运维经验,曾多次参与电商大促运维保障的大咖 云锦 给大家带来HBase运维实践的分享。他曾负责2万+服务器,在大数据,容器化方面积累了丰富的实战经验。
HBase是什么
分享伊始,云锦问了大家是否听说过HBase,现场同学反映热烈,大多数同学都有所了解。HBase是一个分布式的、面向列的开源数据库,适合于非结构化数据存储的数据库,基于列而不是基于行的模式。随着数据增长,自动分裂。它主要有3个特点:海量PB级存储、水平扩展,稀疏、多版本,数据类型单一、字节数组。
HBase的整体架构如下图:
从下往上分为三个部分,最下面为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之前,经常出现服务不可用或响应慢的情况,切换后即较平稳。
在监控类场景中,涉及时间序列数据库,底层opentsdb实际的存储是HBase。集群峰值时tbs写入是两百多万,若用传统数据库则难以支撑,而用HBase则能轻松实现,在用户做调用链性能查询时,能做到实时响应。
在订单信息类场景中,可应用于电商历史订单、私信通知、App push通知等。随着电商的订单量越来越大,历史订单达到上百亿时,用传统的数据做分库分表风险较大。历史订单查询频率较低,用HBase能轻松解决海量存储及用户的在线查询。
HBase基本操作
如何使用HBase?HBase表与传统数据库表读写和查询有哪些不同?HBase表模型由rowkey、column family(列族)、timestamp(时间戳)三部分组成。与传统数据库相比,不同在于HBase有列族的概念,列族下面的列可以随着业务场景在线添加,时间戳可以对表格的历史版本号、版本数做保留。
HBase的基本操作有:查表、建表、插入数据、查询数据get、查询数据scan、删除数据等,具体如下:
查表
建表
插入数据
查询数据get
通过rowkey进行查询→查看rowkey下某个列族的信息→查看rowkey列族某个列的信息
查询数据scan
单列族查询→多列族查询→查询表前2行数据→指定rowkey的范围查询→指定数据版本的范围查询→指定列族与某个列名查询
删除数据
指定rowkey以及列名进行删除→删除一个列族→清空表数据
HBase日常维护
在HBase运维过程中,会遇到哪些常见问题?以及如何及时发现问题,遇到问题后该如何分析定位问题?基本排查思路如下图:
HBase监控体系
业务读写响应变慢,写入阻塞,RS宕机,第一反应都应该去看监控,很多异常都可以及时的反映出来,如资源使用情况,队列使用情况,业务相互干扰情况,Compaction情况等。
监控体系如何搭建?可以从三个维度入手。第一个维度是OS层面,常见的load、CPU、内存使用率、磁盘Util、网卡流量、连接数的监控等。
第二个维度是组件层面,涉及一些性能指标,如RS TPS、RS memstore、RS queue length 、RS RPC。
第三个维度是业务/表层面,如write、read、storefiles、storesize。
监控是提前发现及定位问题,但查找问题的根因需要通过日志分析的手段来实现。
HBase-日志分析
HBase-常见问题
结尾
在分享的最后,云锦用一句话总结了整体的分享内容——在需要实时读写、随机访问、超大规模数据集时,请使用HBase!
现场的同学听了云锦的分享后,表示收获很多,对于存在的一些疑问,现场也做了互动与交流。
同学1
出现热点数据倾斜,有哪些方案?
云锦
热点问题,解决方案:rowkey采用加盐,哈希,反转,预分区等手段。
同学2
时序数据opentsdb和influxdb的底层数据库用的是什么?
云锦
opentsdb底层存储用的是HBase,influxdb存储是自身的TSM文件
同学3
如何保证高可用?
云锦
hmaster通过zookeeper做HA,hregionserver通过WAL,底层是HDFS,保证数据写入不丢失。
同学4
表数据规模达到多少,适用hbase ?
云锦
数据规模至少上亿条记录
【得物技术】
扫一扫关注公众号