加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

聊聊HBase海量数据高效入仓处理方案

发布时间:2022-03-15 00:36:05 所属栏目:大数据 来源:互联网
导读:方案背景 现阶段部分业务数据存储在HBase中,这部分数据体量较大,达到数十亿。大数据需要增量同步这部分业务数据到数据仓库中,进行离线分析,目前主要的同步方式是通过HBase的hive映射表来实现的。该种方式具有以下痛点: 需要对HBase表进行全表扫描,对HB
       方案背景

      现阶段部分业务数据存储在HBase中,这部分数据体量较大,达到数十亿。大数据需要增量同步这部分业务数据到数据仓库中,进行离线分析,目前主要的同步方式是通过HBase的hive映射表来实现的。该种方式具有以下痛点:
 
      需要对HBase表进行全表扫描,对HBase库有一定压力,同步数据同步速度慢。
 
      业务方对HBase表字段变更之后,需要重建hive映射表,给权限维护带来一定的困难。
 
 方案简述
1. 数据入仓构建流程
  
2. HBase数据入仓方案实验对比
  
分别对以上三种实现方案进行合理性分析。
 
2.1 方案一
使用HBase的hive映射表。此种方案实现方式简单,但是不符合数仓的实现机制,主要原因有:
 
HBase表虽然是Hadoop生态体系的NoSQL数据库,但是其作为业务方的数据库,直接通过hive映射表读取,就类比于直接读取业务方Mysql中的视图,可能会对业务方数据库造成一定压力,甚至会影响业务的正常运行,违反数仓尽可能低的影响业务运行原则。
 
2.2 方案二
根据业务表中的时间戳字段,抓取增量数据。由于HBase是基于rowKey的NoSQL数据库,所以会存在以下几个问题:
 
需要通过Scan全表,然后根据时间戳(updateTime)过滤出当天的增量,当数据量达到千万甚至亿级时,这种执行效率就很低,运行时长很长。
  
2.3 方案三
根据HBase的timeRange特性(HBase写入数据的时候会记录时间戳,使用的是服务器时间),首先过滤出增量的rowKey,然后根据这些rowKey去HBase查询对应的数据。这种实现方案同时解决了方案一、方案二的问题。同时,能够有效监控业务方对HBase表字段的新增情况,避免业务方未及时通知而导致的数据缺失问题,能够最大限度的减少数据回溯的频率。
  
3. 方案选择及实现原理
基于HBase数据写入时会更新TimeRange的特性,scan的时候如果指定TimeRange,那么就不需要扫描全表,直接根据TimeRange获取到对应的rowKey,然后再根据rowKey去get出增量信息,能够实现快速高效的获取增量数据。
 
另外,通过多次实验对比,及对各种方案的可行性分析,将数据同步方案同步给一站式大数据开发平台,推动大数据开发平台支持基于timeRange的增量同步功能,实现此功能的平台化、配置化,解决了HBase海量数据入仓的痛点。
 
同时,除了以上这几种解决方案之外,还可以尝试结合Phoenix使用二级索引,然后通过查询Phoenix表的方式同步到数仓,这个将在后期进行性能测试。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读