HBase实践 | HBase TB级数据规模不停机迁移最佳实践

2024-09-06 21:38

本文主要是介绍HBase实践 | HBase TB级数据规模不停机迁移最佳实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

有关HBase集群如何做不停服的数据迁移一直都是云HBase被问的比较多的一个问题,目前有许多开源的工具或者HBase本身集成的方案在性能、稳定性、使用体验上都不是很好,因此阿里云提供了BDS迁移服务,可以帮助云上客户实现TB级数据规模不停机迁移


支持场景

  • HBase大版本升级, 1.x升级2.x

  • 集群配置升级,8核16G升级为16核32G

  • 集群网络环境变更,经典网络迁移到VPC

  • 异地跨机房迁移

  • HBase业务拆分


方案介绍

开源方案

HBase不停机迁移主要包括三个部分:表结构的迁移、实时数据同步、历史全量数据迁移。

  • 表结构迁移

对于表结构迁移来说,开源的DataX还是HBase本身都不提供表结构迁移的功能,只能进行手动建表,手动建表会存在几个问题:

  1. 如果源集群表数据较多,客户手动建表比较麻烦

  2. 手动建表可能忽略表分区,导致目标表分区很不合理,迁移完之后影响请求RT

  • 实时数据同步

对于实时数据同步来说,有两种现有的方案:客户端应用双写、HBase Replication

  1. 客户端应用双写需要业务方对客户端代码进行改造,并且双写会放大毛刺,只要有一个集群出现问题就会影响业务写入,对于实时要求性比较强的业务是不能接受的

  2. HBase Replication 对于大集群或者写入压力比较大的集群来说,存在如下几个问题:

    1. 同步的逻辑集成在RegionServer当中,RegionServer读写和同步会相互影响

    2. 不同的RegionServer同步的压力可能是不同的,不抗热点

    3. 如果遇到同步积压,往往RegionServer的负载已经很高不太容易通过调整线程来解决,只能等低峰期慢慢消化或者增加RegionServer节点

  • 全量数据迁移

对于全量数据迁移来说,可以使用DataX、HBase CopyTable、HBase创建和导出快照

  1. DataX走的API层面的迁移,对于源集群大表的全表Scan和目标表大量的Put都会对集群业务产生影响,增加业务的读写毛刺,另外API层面的迁移比文件层的拷贝会多占用50%以上的流量

  2. HBase创建和导出快照,快照的创建和导出都是在源集群上完成,会影响源集群稳定性,创建快照会暂用源集群的存储资源,对一张大表创建完快照,然后进行major compaction可能会导致HDFS容量水位迅速上涨,可能会写满HDFS


阿里云的方案

为了解决了开源方案存在的不足,支持TB、PB级别的数据迁移,我们阿里内部自研了一套迁移同步服务BDS,来满足阿里云上不同客户的需求。

640?wx_fmt=png

对于HBase集群相互迁移,BDS支持表结构迁移、全量数据迁移以及增量数据同步

  • 表结构迁移

    • 自动创建目标表并保证分区一致,避免迁移后表单分区数据量过大,影响目标表读写RT

    • 以表级别为粒度,支持批量提交

  • 全量数据迁移

    • 走文件层的数据文件拷贝比通常API层的数据迁移通常能节省50%以上的流量

    • 自动处理Region Split、HFile Compaction

    • 单节点迁移速度可达到100MB/s,节点数支持水平扩展,能够满足支持TB、PB级别的数据迁移

    • 迁移速度可以动态配置

  • 增量数据同步

    • 异步解析源集群HDFS上的WALs并在目标集群进行回放,增量同步不会和源集群HBase进行交互

    • 有完善的错误重试机制,实时监控任务速度和进度,支持任务失败报警

    • 同步吞吐动态可配

稳定性保障

BDS稳定性

  1. BDS采用的是分布式的架构,master通过zk监听worker节点是否存活,如果节点宕机会对任务进行重分配,完善的failover机制

  2. 完善的监控体系、报警机制,监控表迁移的进度,迁移了多大的数据量,迁移的速率,实时同步的延迟等信息,对于需要人为介入的异常进行报警

  3. BDS支持任务断点续传

源集群业务稳定性

  1. 对于实时的数据同步,开源的方案走的是HBase Replication,同步逻辑集成在RegionServer中,RegionServer本身的读写和数据同步相互影响。BDS和HBase集群解耦,独立部署,避免对HBase集群CPU、内存等机器资源的占用

  2. 全量数据迁移、实时数据同步只访问源集群的HDFS,全程不会和HBase做交互,尽量避免对源集群业务产生的影响

  3. 可以动态调整全量数据迁移和实时数据同步的迁移速率

迁移步骤

下图为集群迁移的基本步骤

640?wx_fmt=png

  • 购买及环境准备

    • 购买BDS迁移服务

    • 不同网络环境需要打通BDS到各个集群的网络

  • 提交迁移任务

    • 登陆BDS操作页面

    • 录入源集群和目标集群的信息

    • 开启增量同步通道,同步源集群实时写入数据到目标集群

    • 提交历史数据迁移任务,迁移历史存量数据文件

  • 验证

    • 业务验证

    • 业务切换


案例

迁移规模

网路环境:相同VPC集群版本:自建HBase1.x迁移到云HBase1.x集群规模:集群20台RegionServer数据规模:数据总量30+T,迁移20+表,日增几百G要求:不停服迁移,尽可能避免读在线业务的影响


环境准备
步骤1:计算BDS服务的规模

BDS单节点(4cores 8G)的迁移最大速度 50MB/s ~ 100MB/s,增量同步任务单机能最多处理5台RS的日志, 单节点日志迁移速度最大50 ~ 60MB/s。源集群有20台节点, 日增数据几百G,写入量也不是很大,BDS每个节点同时能够处理5个RS的日志,因此,BDS至少需要4个Worker节点。

步骤2:购买BDS集群

详见《BDS服务开通》,开通了BDS之后,需要配置BDS访问的白名单,然后配置页面登陆的账户密码,进行BDS操作页面的登陆。

步骤3:关联HBase集群

购买BDS集群之后,需要关联源集群和目标集群。对于目标云HBase集群来说,BDS控制台提供了自动关联集群的功能,不需要手动的录入集群的信息。

640?wx_fmt=png

控制台点击关联集群会罗列出所有BDS所绑定的VPC下的云HBase集群,选择对应的目标集群进行绑定,绑定完成之后,可以在BDS HBase数据源页面看到绑定的集群信息。

640?wx_fmt=png

对于自建HBase,需要绑定ip和hostname的映射关系并手动录入集群信息。自建HBase集群机器使用的主机名可能是BDS不识别的,因此在录入自建HBase集群信息之前,需要配置集群主机名和ip的映射关系到BDS。查看自建集群的/etc/hosts,将/etc/hosts信息copy到配置项中,在BDS上录入集群ip和hostname的映射关系。

640?wx_fmt=png

回到HBase数据源页面,添加数据源。

640?wx_fmt=png

640?wx_fmt=png

录入自建集群的HDFS地址、HBase的版本、HBase根目录、HBase连接信息,点击添加会对网络连通性、HBase版本进行校验,源集群和目标集群都验证通过之后,就可以配置迁移任务。

配置迁移任务

当上面的所有前置条件都配置完成后,就可以开始迁移任务配置。下面详细介绍下具体的迁移步骤。

步骤1:创建实时数据同步通道

首先登陆BDS界面,点击任务管理选择HBase实时数据同步,选择创建HBase同步通道,进入通道创建的页面。

640?wx_fmt=png

选择源集群和目标集群,按照表为粒度批量提交要迁移的表,创建同步通道。BDS在提交同步通道的时候自动检测目标表是否存在,不过不存在创建目标表,保证原表和目标表完全一致。这里推荐使用BDS自动建表保证目标集群和源集群的分区一致。同步通道创建完成之后,我们查看同步通道的进度。

640?wx_fmt=png

总结一项可以查看整个通道的总延迟,BDS处理的最大最小耗时,读写总流量和速率表信息详情可以查看表put、delete操作总次数,表开始同步的时间点和最近更新的时间点。日志信息详情主要罗列了各个日志同步的进度,点位和速率。

步骤2:提交历史任务迁移

增量数据同步通道完成之后,接下来提交全量数据迁移任务,在任务管理里面我们选择HBase历史数据批量迁移,进入历史数据管理页面,点击创建任务,进入全量数据创建页面,选择对应的源集群和目标集群,输入需要迁移的表,点击创建。

640?wx_fmt=png

全量数据迁移任务提交后,BDS会去验证目标表是否存在,不存在就自动创建目标表,任务开始之后我们可以查看各个表迁移的进度和速率。

640?wx_fmt=png

步骤3:业务验证

当全量数据迁移完成,实时同步的延迟在业务可控范围之内(比如源集群和目标集群同步延迟1秒以内),业务可以进行数据的抽样校验,以及开始部分业务灰度。

步骤4:业务切流

验证通过之后,找个业务低峰期进行业务切流,切流过程中可能遇到问题,回切流量到源集群,为了防止流量切回源集群出现源集群少数据情况,需要业务在切流之前开启目标集群到源集群的实时同步通道,将切流后的实时写入数据同步回源集群。

步骤5:释放BDS资源

业务稳定在新集群上运行了一段时间之后,没有发现问题,便可以中断BDS实时同步的通道,释放掉BDS资源。

欢迎点赞+收藏+转发朋友圈素质三连

640?wx_fmt=jpeg

文章不错?点个【在看】吧! ?

这篇关于HBase实践 | HBase TB级数据规模不停机迁移最佳实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143194

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识