写点什么

Apache HBase 数据上云实践

  • 2022-11-22
    江苏
  • 本文字数:1826 字

    阅读完需:约 6 分钟

导读:本文介绍了一种基于快照的离线批加载上云方案,兼顾高效、稳定等特点,适用于海量数据迁移上云场景,供大家参考。

对大部分企业而言,IT 系统及基础设施的更新换代、IT 成本居高不下资源利用率低、IT 资源管理困难、存储扩展性差等原因,是制约遇到的发展的一大难题。为了解决这些发展难题,大批量企业产生了云计算的需求。在企业拥抱云计算过程中,就有部分企业用户需要将自己搭建维护的 HBase 集群数据迁移到云上,进而使用云 HBase 支持数据存储业务。

1、HBase 数据上云困难

HBase 数据上云主要有两个困难点。第一个困难是海量数据下高效性无法得到保证。较多情况下,HBase 用户使用分布式 Scan 来读取数据,然后使用客户端批量写入云上 HBase,原理见图 1。也有用户会将分布式 Scan 读取的数据分别生成 HFile,然后使用离线批加载生成数据。上述读取数据方法效率低下,一般在每小时几十 GB。对于单表几十 TB 数据量,单表上云耗时几十天,效率低下问题突出。

第二个数据上云困难点在于,长时间 Scan 数据对用户搭建 HBase 集群稳定性构成挑战。Scan 获取数据方式占用 Region 资源,产生巨量的读写 I/O,需要较多的 CPU 和网络资源。用户往往是在自建 HBase 集群在某方面达到瓶颈情况下转而使用云 HBase 服务支持业务。因此,“带病”集群在占用大量 CPU 资源、高 I/O 读写等情况下,内存资源常常使用殆尽。这时集群往往出现意想不到的问题,甚至崩溃。轻则数据上云失败,重则导致用户现有业务崩掉。


2、数据上云方案

HBase 数据上云低效、稳定性差问题亟待解决。问题病根在于使用 HBase 的 Client API 获取数据。采取绕过 HBase 方法,通过读取 HDFS HFile 来获取、解析数据后,在云上环境的 HDFS 中生成 HFile,最后离线加载数据。

容易发现的是,解决问题最关键在于如何获取源 HBase 集群中的 HFile 文件。经过调研,主要有两个方法,一是 HDFS 层面获取,用户给出 HBase 表数据 HDFS 路径。先过滤路径下的非 HFile 文件,再读取解析文件。但是该方案存在获取数据不完整的风险,如用户在上云过程中突然做了个快照,那么路径下的 HFile 文件可能会移动到其他目录,又或者表某个 region flush 产生一个新的 HFile 文件,再或者上云过程中表偶然产生合并或者分裂。当然可以关闭表来解决上述问题,但前提条件是业务能接受 HBase 停服。由于上述不可预知因素,缺乏一个“标记点”来标识哪些数据是已经获取到,哪些数据是未获取到。

另一个方法 HBase 层面获取,在获取数据前先做个快照,快照是一系列文件名称列表,不涉及数据拷贝。原理如图 2 所示。


图 2

基于解析快照获取 HFile 文件数据的方法,同时为了兼容不同版本 HBase,照顾用户的一些额外需求,如用户对存储成本敏感,再如用户定制化增删改查数据,同时考虑社区活跃度,基于解析快照获取 HFile 文件数据的方法,我们使用 Spark 开发了一整套数据上云工具。图 3 是原理框图, 图 4 是工具运行流程图。通过快照获取数据方法,具有数据完整性特点。这种获取数据的方法也不会涉及 HBase 层面的大量 IO 操作,具有高效且稳定性特点。


图 3



图 4

3、数据上云实践

在用户数据上云案例中,用户对上云有如下几个要求:一是上云过程中不得对原有集群的产生任何影响,例如不能降低读写性能;二是数据迁移保证数据完整性;三是增量数据迁移时间限制在小时级别。

用户的数据量单表 14TB,每天的数据增量在 50GB 左右。对于单表 14TB 的数据,完成上云大约耗时 13 个小时,耗时由原先的天级别减少到小时级别。使用工具对增量数据迁移上云,耗时在分钟级别。在历史数据上云过程中,原有集群也在正常对外服务。上云工具的效率和稳定性得到检验。

在帮助用户完成数据上云后,我们也积累了一些经验。在完成某张表迁移上云任务后,一定要把快照及时删除掉,否则可能会发生数据拷贝,影响集群稳定性。在连接用户 HDFS 集群获取快照信息时,社区快照 InputFormat 不支持 Kerberos 认证,所以我们也开发了支持 Kerberos 认证的 InputFormat。在 Kerberos 认证过程中,因为表分区多达 1000 多个,每个 InputFormat 都会与 Kerberos 认证服务器连接,因此在认证过程中时常发生 Timeout。

为了解决这个问题,我们再次优化 InputFormat 代码,使用 Delegation token 认证方式减少与认证服务器连接次数,最终解决这个 TimeOut 问题。在读取 HFile 过程中,默认的并发度是和表分区数关联,即一个并发可能会读多个甚至几十个 HFile 文件。此处应该根据分区数据量,动态配置优化每个 region 的并发读数量。

4、总结

基于快照的离线批加载上云方案兼顾了高效、稳定等特点,适用于海量数据迁移上云场景。

用户头像

移动云,5G时代你身边的智慧云 2019-02-13 加入

移动云大数据产品团队,在移动云上提供云原生大数据分析LakeHouse,消息队列Kafka/Pulsar,云数据库HBase,弹性MapReduce,数据集成与治理等PaaS服务。 微信公众号:人人都学大数据

评论

发布
暂无评论
Apache HBase 数据上云实践_HBase_移动云大数据_InfoQ写作社区