1、前言
在技术快速发展的今天,各行各业的数据量不断增加。审计行业也发生了翻天覆地的变化,身处其中的毕马威,如何利用HBase提高对客户的服务,让客户的满意度有所提升。本文将从以下三个方面(选择HBase的原因,实例剖析,总结与展望)来分析。
2、选择HBase的原因
优化方式多
对于一家大型企业来说,企业内部及全球网点的销售数据都是我们审计的目标对 象,总体来说数据量较为庞大,而传统的数据库面对海量数据可能会严重影响使用的效 率,而HBase具有多方面的优化方式,可以提高我们的查询等各方面效率;例如:1调整RowKey的散列规则。2使数据量均匀的分布在RegionServer上加速查询。3调整客户端查询缓存,调整服务端缓存大小等
应用场景契合
财务报表维度多样化,不同的维度组合可以拼接成记录的唯一标识,从而形成key- value形式。而审计人员只关系自己的需求,期望通过一定的方式快速的展示出数据,快速的对数据进行比较,进行核对。因此,我们可以通过穷举法将审计人员需要的查询条 件枚举出来,每一种枚举条件作为一类记录的标识。而HBase完全契合此场景。
功能齐全,成本低
HBase作为开源的数据库,相比较传统的数据库,具有其快速查询的效率和存储功能,且在业内又有很多成熟的案例;最重要的开源、免费,可降低公司的成本。
3、实例剖析
(1)根据财务审计人员查询条件快速返回结果
如上图所示:一家创业公司要上市,需要将它的财务报表信息,企业运营信息全部笼络起来,交由审计财务人员对它的财务报表的健康状况进行审计。我们从优化以及碰到的问题 两方面进行分析:
优化
优化存储的RowKey
一般审计人员会先看比较粗的数据,比如说公司、部门、会计科目的收入等,像这些单个维度的数据,审计人员会独立的查询出来。而且一家公司会有很多分公司,科目也会非常庞大,如果数据量大的数据放在Hbase一台机器上,会产生热点;其次查询的 时候会严重影响效率。所以我们不可能将单列的数据放入一台机器,因此我们需要将其 均匀的存入不同的机器上,为了达到这样的效果,针对RowKey的排序规则(按照字典 排序),我们用倒序,就可以将其分布到不同的机器上。
对于组合查询的情况,我们可以将其放入一台机器上进行查询,那么RowKey的设计规则应该为正序。
总而言之:我们会根据审计人员具体的业务场景设计RowKey。
调整客户端缓存
财务人员一般查询数据场景比较单一,基于这样场景,将常见的,比较简单的数据做数据量的评估,从而设置客户端缓存大小,减轻到后台与HBase的交互。
调整系统相关参数
调整RegionServer、JVM的HeapSize大小、MetaStore大小,调高RegionServer的处理线程等。这些参数的调整需要根据不同的客户,不同的业务场景,不同的阶段实时调整。
出现的问题以及解决办法
在使用过程中,发现HRegionServer的负载较高
给集群添加机器。因为审计人员会对某些觉得可能出现问题的地方进行多频次的查询,而针对审计行业 要求在规定的时间内必须出结果的特殊业务场景,不适合调几个参数用来解决查询效率,我们就需要优先在集群上添加一些机器,通过把这些热点,负载比较高的数据做一个迁移,往新的机器做一些负载的均衡,从而达到整个集群查询比较平衡的状态。
当然新加的机器不一定单独的为某个场景使用,如果其他客户的数据出现问题,我们也可以借用这台新的机器。这样就做到了资源的均衡使用,不会出现资源的线性增长 的情况。
Hbase出现查询缓慢甚至假死的现象
在使用的过程中,Zookeeper和RegionServer出现了断开的情况,针对这个问题, 除了调整参数,网络方面也可能带来影响。
(2)企业内部自动化对账
如上图所示:假如一个集团公司下面有100家子公司,子公司间会有财务往来,有时候不会报到总公司。这种情况下,集团的帐可能会出现坏账,为了避免这样的现象,审计人员对 账单进行对账:有一对一金额相同,一对多金额相同,一对多金额抵小的业务场景,针对这种情况,我们采用如下的架构:
1.历史方案
方案:采用Oracle数据库,启动定时器将Oracle的数据放到中间的内存的数据库里,将实时的数据进行对比,对比的结果放入到Redis中,WEB页面从Redis中取出数据。
分析:首先oracle带来成本问题,带来效率问题,且运维的成本也会增加,需要两种数据库运维人员。对比HBase,查询效率高,存储量大,减少运维成本等多方面优势,开始 了采用HBase方案的架构。
2.新方案
在对账的时候,有公司编码、科目编码、科目类型等,可以通过他们的组合找到唯 一 一条期末余额(基于简单的kv对的存储,kv对的查询,同时对kv查询结果的比对), 因此我们采用HBase支撑这样的业务场景。我们会把数据定时的插入到HBase里,通过 spark对数据进行功能的对账,对完帐的结果写入到HBase里,等待前端页面的查询。
4、总结与展望
扩展性
在整个的审计过程中,一家公司可能有400家子公司,400家子公司分布在全国各地,可以在内部进行分组,组和组之间要进行数据的交叉性验证,交互的话,后期可能 用HBase做为类似于消息中间件的方式来作中间的数据的交互。
资源的可用性
会根据审计人员特殊的业务场景进行RegionServer的预估,合理设计RowKey,合理利用机器资源。
研发资源
基于HBase做查询,可以降低运维成本,研发人员可以专注于对HBase的研究。
监控
任何一个稳定的系统,都缺失不了一个很好的监控系统,监控系统对我们来说无论是从数据方面,还是从整个系统运维的可持续方面都起到了不可替代的作用,所以说实现智能化监控至关重要。
**文章来自:杨瑞鑫—HBase生态+Spark社区大群
**