主要内容:
HBASE介绍
HBASE数据热点
HBASE常见故障处理
HBASE压缩
1.2关系型数据库和hbase的区别
1、数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。
2、数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。
3、存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的。
4、数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——Rowkey。
5、数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。
6、可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩
1.3 HABSE架构变化
HBASE 1.0以前
HBASE1.0以后
HBase 表的数据是按照Rowkey来分散到不同Region,不合理的Rowkey设计会导致热点问题。热点问题是大量的Client直接访问集群的一个或极少数个节点,而集群中的其他节点却处于相对空闲状态。
Hbase是根据Rowkey来进行检索的,检索支持3种方式:
1、通过单Rowkey访问,即按照某个Rowkey键值进行get操作,获取唯一记录。
2、通过Rowkey的range进行scan,即通过是指startRowkey和endRowkey,在这个范围进行扫描。这样可以指定条件获取一批记录。
3、全表扫描,即直接扫描整张表中所有的记录。(该方法效率特别低)
1、salting(加盐)
在Rowkey前面加入随机数,具体就是给Rowkey前面分配一个随机前缀,以使得它和之前的排序不同。但是会对写造成了一定的负面影响,会增加写时的吞吐量。
2、加入Hashing
Hashing的原理就是计算Rowkey的hash值,然后取hash的部分字符和原来的Rowkey进行拼接。这里的hash包含比如MD5这种类似的算法。
3、Reversing(反转)
Reversing的原理是反转一段固定长度或者全部的键。
4、Rowkey的长度。
Rowkey可以是任意字符,越短越好,但是不要超过16个字节,存为byte[]字节数组,一般设计成定长。
regionserver进程时常出现异常下线的情况
检查分析:
(1)检查日志
(2)该主机收到的告警短信
该主机出现某个磁盘写数据繁忙的情况,出现这类情况就要从datanode入手(因为该磁盘sdg为datanode数据盘)。
(3)检查对比nmon日志
图一为问题主机DISKBUYS报表图,由图一wavg偏高,说明磁盘的繁忙程度相比于同一集群的其他主机更高。
(4)根据nmon图分析为主机磁盘问题
通知主机方检查主机,最终检查出其中一个hadoop数据盘有问题,更换完后问题解决,如上图可以看出之前坏的主机nmon的DISKBUYS无异常。
1、查看Hbaseui
通过hbaseui界面查看hbase请求量大部分时间处于10000以下,甚至还在几百(此集群平时正常时候请求量大部分在7w-12w左右)
2、日志信息
Numberof regions in transition: 0...ERROR: RegionServer:xxx主机,2302,1546020590497Unable to fetch region information.org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeoutwhile waiting for channel to be ready for connect. ch :java.nio.channels.SocketChannel[connection-pendingremote=主机名/ip:2302]
(体现为regionserver无法提供handler为master提供信息。导致同步meta表出错。)
3、通过netstat-anp|grep 2302 命令查看链接状况出现SYN_RECV(半连接)
4、问题处理过程
登录堡垒机,执行 hbase hbck,查看有无 ConnectTimeoutException 报错,如发现相关报错,保留页面信息,访问问题主机ip:2301页面,右键另存为当前网页,点击界面Debugdump和MetricsDump链接分别保存信息,登录故障主机,保留信息,通过netstat-anp|grep2302查看连接状态,通过jps查看regionserver进程,jstack -l rsPID >/tmp/jstack.${time},如果发现报错,登录rstimeout主机通过hbase-daemon.shstopregionserver停止regionserver,观察请求量是否恢复,待集群恢复正常后,讨论是否重新拉起故障regionserver。
1、情景再现
采用压缩优化解决方案,用最少的投资承载更多的数据存储,实现降本增效的目标,适用于类似此种一次写入、少量查询的温冷数据场景。入库时采用SNAPPY压缩,不影响数据入库效率,在业务闲时,修改数据压缩方式为GZ,降低存储资源消耗。
2、具体实现步骤
(1)disablesnappy_test
(2)altersnappy_test ,NAME=>cf,COMPRESSION => GZ
(3)enablesnappy_test
(4)major_compactsnappy_test
3、测试结果
表名 | 压缩前大小(snappy) | 压缩后大小(GZ) | 压缩比 | 压缩时间 |
snappy_test | 380.9G | 207.5G | 大约35% | 大约1小时15分钟major完全执行完 |
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/130111.html
摘要:大家好,我是冰河有句话叫做投资啥都不如投资自己的回报率高。马上就十一国庆假期了,给小伙伴们分享下,从小白程序员到大厂高级技术专家我看过哪些技术类书籍。 大家好,我是...
摘要:京东云监控响应实践京东云运维平台为数万台机器提供监控,部署,机器管理,权限管理,安全管理,审计和运营分析等功能,为京东云所有的业务在各类异构网络环境下提供标准和统一的运维支撑能力。 showImg(https://segmentfault.com/img/bVbsKlQ); 微服务本身并没有一个严格的定义,不过从很多人的反馈来看,大家都达成了这样一个共识:微服务是一种简单的应用,大概有...
摘要:一大数据平台介绍大数据平台架构演变如图所示魅族大数据平台架构演变历程年底,我们开始实践大数据,并部署了测试集群。因此,大数据运维的目标是以解决运维复杂度的自动化为首要目标。大数据运维存在的问题大数据运维存在的问题包括部署及运维复杂。 一、大数据平台介绍 1.1大数据平台架构演变 showImg(https://segmentfault.com/img/bVWDPj?w=1024&h=...
阅读 1346·2023-01-11 13:20
阅读 1684·2023-01-11 13:20
阅读 1132·2023-01-11 13:20
阅读 1860·2023-01-11 13:20
阅读 4100·2023-01-11 13:20
阅读 2704·2023-01-11 13:20
阅读 1385·2023-01-11 13:20
阅读 3597·2023-01-11 13:20