我是靠谱客的博主 成就外套,最近开发中收集的这篇文章主要介绍hbase shell 查看列名_技术夜校HBase运维实践,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

d7f5907d84c82a63a86f31ff67f6b3f9.png

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

a753e8e6090f4609b62f284aa5c28792.png

HBase是什么

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

771ce38339dd7463df512381146a1249.png

HBase的整体架构如下图:

e01fc21b9ffc004e07ff63774a6930ee.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之前,经常出现服务不可用或响应慢的情况,切换后即较平稳。

2d494ea31c83f112f320b0a2d8639395.png

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

9cd2a99e41d4ac3bf3e3428f40b8dfcd.png

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

f12adf30f02a3c335b131113f7083cc7.png

HBase基本操作

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

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

查表

f5c5fcaec81a53d93d307eaed22a58d9.png

建表

2f5eec002a978a2c8c4f336a87cc480b.png

插入数据

dc7b0b49572c42d8eb037d58c54cd123.png

查询数据get

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

f5d881286a3162d665020a40d07d63da.png

查询数据scan

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

d446643ba3b0e7005f740b55720fad51.png

删除数据

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

f139e0c0c4cb3167afa60210e020730a.png

HBase日常维护

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

6c47ff26245bab47579c765f00952092.png

HBase监控体系

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

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

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

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

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

HBase-日志分析

599eadaf34e31ba111700af4254093a6.png

HBase-常见问题

5f9584e3c26525e98bbb02c0453c4b47.png

结尾

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

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

971f9126eedb0b93aeb112e91d28ac94.png

同学1

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

云锦 

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

fcb09c6cf8669a19626dd3518ef7f0f6.png 2a55a2a908587cbfeee4fbdc98a831da.png

同学2

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

云锦

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

fcb09c6cf8669a19626dd3518ef7f0f6.png 87b6be82d035322ccd19f4fa9aae9d1e.png

同学3

如何保证高可用?

云锦

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

fcb09c6cf8669a19626dd3518ef7f0f6.png 2734f2a327bf99d0de9dc2b64c39d80a.png

同学4

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

云锦

数据规模至少上亿条记录

fcb09c6cf8669a19626dd3518ef7f0f6.png d76318a4661bad81999ad83b955edf1d.png

【得物技术】

扫一扫关注公众号

最后

以上就是成就外套为你收集整理的hbase shell 查看列名_技术夜校HBase运维实践的全部内容,希望文章能够帮你解决hbase shell 查看列名_技术夜校HBase运维实践所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部