在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
如何解决HBase海量数据高效入仓的问题?数据仓库的数据来源于各方业务系统,高效准确的将业务系统的数据同步到数仓是数仓建设的根本。部分业务数据存储在HBase中,这部分数据体量较大达到数十亿。大数据需要增量同步这部分业务数据到数据仓库中进行离线分析,目前主要的同步方式是通过HBase的hive映射表来实现的。
这种方式目前存在的缺陷:需要对HBase表进行全表扫描对HBase库有一定压力同步数据同步速度慢;业务方对HBase表字段变更之后需要重建hive映射表给权限维护带来一定的困难;业务方对HBase表字段的变更无法得到有效监控无法及时感知字段的新增,对数仓的维护带来一定的困难;业务方更新数据时未更新时间戳导致通过时间戳字段增量抽取时数据缺失;业务方对表字段的更新新增无法及时感知导致字段不全需要回溯数据。
基于以上背景对HBase数据增量同步到数仓的场景给出了通用的解决方案,解决了以上这些痛点。
二、解决HBase海量数据高效入仓的方案简述
1、数据入仓构建流程
2、HBase数据入仓方案实验对比
分别对以上三种实现方案进行合理性分析:
方案一:
使用HBase的hive映射表。
此种方案实现方式简单,但是不符合数仓的实现机制,主要原因有:HBase表虽然是Hadoop生态体系的NoSQL数据库,但是其作为业务方的数据库,直接通过hive映射表读取,就类比于直接读取业务方Mysql中的视图,可能会对业务方数据库造成一定压力,甚至会影响业务的正常运行,违反数仓尽可能低的影响业务运行原则。
通过hive映射表的方式从实现方式上来讲,增加了与业务方的耦合度,违反数仓建设解耦原则。所以此种方案在此实际应用场景中是不应该采取的方案。
方案二:
根据业务表中的时间戳字段,抓取增量数据。
由于HBase是基于rowKey的NoSQL数据库,所以会存在以下几个问题:需要通过Scan全表,然后根据时间戳(updateTime)过滤出当天的增量,当数据量达到千万甚至亿级时,这种执行效率就很低,运行时长很长。由于HBase表更新数据时,不像MySQL一样,能自动更新时间戳,会导致业务方没有及时更新时间戳,那么在增量抽取数据的时候,会造成数据缺失的情况。所以此种方案存在一定的风险。
方案三:
根据HBase的timeRange特性(HBase写入数据的时候会记录时间戳,使用的是服务器时间),首先过滤出增量的rowKey,然后根据这些rowKey去HBase查询对应的数据。这种实现方案同时解决了方案一、方案二的问题。同时,能够有效监控业务方对HBase表字段的新增情况,避免业务方未及时通知而导致的数据缺失问题,能够最大限度的减少数据回溯的频率。
综上采用方案三作为实现HBase海量数据入仓的解决方案。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
大数据零基础入门书籍推荐
大数据零基础入门书籍推荐,如果你选择的大数据方向不同小编推荐的书籍也不同,下面主要介绍大数据工程师、数据分析师、数据挖掘工程师就业方向的大数据零基础入门书籍,如果你还没确定选什么方向,小编推荐黑马程序员初版的《Hadoop大数据技术原理与应用》比较适合初学者学习。
10957
2019-08-08 15:40:55
线上大数据培训哪家好如何选择?
线上大数据培训哪家好应该如何选择?就线上培训这块,博学谷算是做的比较好的大数据培训平台。简单来讲,建议大家在做选择的时候,在口碑和知名度都不错的培训机构中挑选。同时多多考察大数据培训机构的课程质量、师资力量、教学模式等等方面,当然考察的方式不仅仅是听信培训机构的宣传,还要亲自体验课程,最好能和之前毕业的学员联系,深入了解培训的效果怎么样。
5975
2019-09-18 12:48:17
数据中台对企业有哪些意义和作用?
随着数据化浪潮席卷全球,数据中台也由此应运而生。众所周知,数据中台的主要作用在于把数据进行统一标准和口径之后,再进行储存和加工,从而使企业可以提供更高效的服务。简单来讲,数据中台是以节省企业成本,实现精细化运营为目标。那么数据中台对企业到底有哪些具体意义和作用呢?下面我们来具体看一下。
7662
2020-02-10 22:29:52
什么人适合学习大数据开发?学大数据难吗?
有不少应届大学毕业生和0基础人群选择学大数据,但是要选择零基础的大数据培训班,从Java基础开始学习,由浅入深掌握离线数据分析、实时数据分析和内存数据计算等重要内容。
4851
2020-11-26 15:20:18
大数据之Spark框架中RDD和DataFrame的区别
大数据之Spark框架中RDD和DataFrame的区别是什么?RDD(提供了一种高度受限的共享内存模型;DataFrame是一种分布式的数据集,并且以列的方式组合的。在spark中RDD、DataFrame是最常用的数据类型,在使用的过程中你知道两者的区别和各自的优势吗?关于如何具体的应用我们今天就好好的分析一下。
3775
2022-02-18 11:32:22