StreamSets实时同步sqlserver数据到hbase

本文重点介绍使用StreamSets Data Collector实时同步SQL Server数据到HBase的方案及实现。不涉及StreamSets的具体介绍。

关于StreamSets各种Stages的配置细节和性能优化,请自行学习官方文档

软件版本
StreamSets Data Collector3.16.0
SQL Server2008 R2 企业版
HBase2.1.0+cdh6.3.2

数据同步要点

1、SQL Server中的目标库表开启CDC。

2、构建StreamSets Pipeline,使用SQL Server CDC Client监控目标库表,实时捕获CDC数据,流入数据管道(Pipelines),经过对数据进行必要的业务处理,选择需要的CDC数据写入HBase。

CDC简介

CDC全称为Change Data Capture,是一种数据库架构设计模式,核心思想是监测并捕获数据库变动,包括数据的插入,更新,删除等,然后将这些操作按照发生顺序记录下来,提供给其他服务使用。

CDC常用于:

1、(异构)数据库之间的数据同步或备份。

2、同步业务数据库数据进入数据仓库。

数据同步操作

这里以一个示例来说明数据同步的具体操作。约定如下:

数据库服务
SQL Servertestuserid, name
HBasedefaultusercf:id, cf:name

建表:

SQL Server

CREATE TABLE test.dbo.user (
	id int NOT NULL,
	name varchar(100) NULL,
	CONSTRAINT NewTable_PK PRIMARY KEY (id)
) GO

HBase

create 'test', 'cf'

在本地文件系统创建目录

mkdir -p /opt/streamsets/sqlserver_cdc

SQL Server库表启用CDC

这里只描述主要的启用步骤,更多细节请自行学习。

注意事项

1、SQL Server自2008版本开始支持CDC,并且只有开发版和企业版支持启用CDC。

2、SQL Server启用CDC,要求SQL Server代理处于运行状态,可在SQL Server配置管理工具中启用SQL Server代理。

启用CDC

启用CDC分为两步:

1、对目标数据库启用CDC。

2、对目标表启用CDC。

对目标数据库启用CDC

启用

USE test GO
EXEC sys.sp_cdc_enable_db GO

检查启用状态

SELECT name, is_cdc_enabled
FROM sys.databases
WHERE NAME = 'test'

is_cdc_enabled值为1时,表示已开启CDC。

对目标表启用CDC

启用(以下是最简方式,更多命令说明请自行学习)

EXEC sys.sp_cdc_enable_table
@source_schema = 'dbo',
@source_name = 'user',
@role_name = NULL
GO

检查启用状态

SELECT name, is_tracked_by_cdc FROM sys.tables
WHERE object_id = object_id('dbo.user')

is_tracked_by_cdc值为1时,表示已开启CDC。

查看帮助

EXEC sys.sp_cdc_help_change_data_capture 'dbo', 'user' GO

可以看到capture_instance值为dbo_user,请记住这个值,后面会用。

构建StreamSets Pipeline

本示例用到的Stages

StageType简介
SQL Server CDC ClientOriginSQL Server CDC客户端,可以多线程获取SQL Server库表CDC数据。
Expression EvaluatorProcessor表达式评估器,用于处理数据域。
Stream SelectorProcessor流选择器,通过设定条件,可将符合不同条件的数据进行分流。
HBaseDestinationHBase存储,将数据写入HBase表。
Local FSDestination本地文件系统存储,将数据写入本地文件系统。

更多信息请自行学习官方文档

创建Pipeline

1、登陆StreamSets,进入主页,在界面左侧可以看到 Create New Pipeline 按钮,点击创建。

在这里插入图片描述

2、编辑Pipeline信息,并保存

在这里插入图片描述

3、保存之后进入Pipeline编辑界面

在这里插入图片描述

4、点击 Error Records 选项卡,配置错误记录处理方式,选择 Discard

生产环境中,请选择合适的处理方式。

在这里插入图片描述

在这里插入图片描述

配置SQL Server CDC Client

1、创建Stage。按照下图操作,选择目标Stage即可。

在这里插入图片描述

在这里插入图片描述

2、在画布上选中 SQL Server CDC Client 1,按下图进行主要配置。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置Expression Evaluator

1、创建Stage。按照下图操作,选择目标Stage即可。

在这里插入图片描述

2、在画布上选中 Expression Evaluator 1,按下图进行主要配置。

在这里插入图片描述

在这里插入图片描述

3、连接Stages。

在这里插入图片描述

配置Stream Selector

1、创建Stage。按照下图操作,选择目标Stage即可。

在这里插入图片描述

2、在画布上选中 Stream Selector 1,按下图进行主要配置。

在这里插入图片描述

在这里插入图片描述

3、连接Stages。

在这里插入图片描述

配置HBase

1、创建Stage。按照下图操作,选择目标Stage即可。

在这里插入图片描述

2、在画布上选中 HBase 1,按下图进行主要配置。

在这里插入图片描述

在这里插入图片描述

3、连接Stages。

在这里插入图片描述

配置Local FS

1、创建Stage。按照下图操作,选择目标Stage即可。

在这里插入图片描述

2、在画布上选中 Local FS 1,按下图进行主要配置。

在这里插入图片描述

在这里插入图片描述

3、连接Stages。

在这里插入图片描述

启动

至此,Pipeline构建完成,可以启动了。

在这里插入图片描述

启动之后,可以进行测试。

在SQL Server的user表中进行数据的增加、删除、更新操作,观察HBase和本地文件系统的文件变化。

没有意外的话,增加、更新的数据会同步到HBase的user表中,删除和其他操作的数据会记录到本地文件系统的文件中。

配置说明

这里对本文涉及的StreamSets Stages的相关配置进行简单的说明,更多细节请自行学习官方文档

SQL Server CDC Client

选项卡配置说明
JDBCJDBC Connection Stringjdbc配置,按照常规配置即可。
CDCTable Configs/Capture Instance NameSQL Server表的CDC捕获实例,上文提到了查看这个实例名的方法。
这个配置可以使用正则,以获取多个实例的数据。例如配置为 dbo_user%,则可以获取库中所有前缀为 dbo_user的实例的数据。
CredentialsUsername 和 PasswordSQL Server认证信息。

Expression Evaluator

选项卡配置说明
GeneralRequired Fields必要的数据域列表,缺少其中任何一个域的记录都会被发送到Error。
ExpressionsField Expressions定义输出域。增加域或者覆盖已存在的域。

Stream Selector

选项卡配置说明
GeneralRequired Fields必要的数据域列表,缺少其中任何一个域的记录都会被发送到Error。
ConditionsCondition定义条件,符合条件的数据会分流到相应的数据出口。

HBase

选项卡配置说明
GeneralStage LibraryStage库,指定Stage的库版本。
HBaseZooKeeper Quorum同HBase ZooKeeper Quorum配置。
HBaseTable NameHBase表名。
HBaseRow Key指定Row Key域。
HBaseFields域映射配置,配置数据流域和HBase表列的映射关系。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值