数据库
首页 > 数据库> > StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

StreamSets实战之路-21-实战篇- 如何使用StreamSets从MySQL增量更新数据到Hive

作者:互联网

1.文档编写目的


通过StreamSets实现数据采集,在实际生产中需要实时捕获MySQL、Oracle等其他数据源的变化数据(简称CDC)将变化数据实时的写入大数据平台的Hive、HDFS、HBase、Solr、Elasticserach等。本篇文章主要介绍如何使用使用StreamSets通过JDBC的方式实时抽取增量数据到Hive。

StreamSets实现的流程如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9pXIadS6-1645414916307)(https://ask.qcloudimg.com/http-save/yehe-1522219/btbrygr7jj.jpeg?imageView2/2/w/1620)]

1.环境准备

2.创建StreamSets的Pipeline流程

3.Pipeline流程测试

1.StreamSets版本为3.1.2.0

2.CM和CDH版本为5.13.1

3.MariaDB版本为5.5.44

2.环境准备


1.准备测试表和数据

[root@cdh4 ~]# mysql -uroot -p
Enter password: 
MariaDB [(none)]> use test;
MariaDB [test]> create table test_to_hive (s1 varchar(20),s2 varchar(20));
MariaDB [test]> insert into test_to_hive values ("1","aaa");
MariaDB [test]> insert into test_to_hive values ("2","bbb");
MariaDB [test]> select * from test_to_hive;

(可左右滑动)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XMDS5xrI-1645414916310)(https://ask.qcloudimg.com/http-save/yehe-1522219/ffadbqti40.jpeg?imageView2/2/w/1620)]

3.创建StreamSets的Pipline


1.创建新的管道流

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9mnOr2k1-1645414916311)(https://ask.qcloudimg.com/http-save/yehe-1522219/46oord389f.jpeg?imageView2/2/w/1620)]

配置错误日志输入路径,这里配置到本地的/tmp/sdctest(需要自己创建)目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Iwk2Grx-1645414916313)(https://ask.qcloudimg.com/http-save/yehe-1522219/7bwr2q8qjx.jpeg?imageView2/2/w/1620)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZyLmiE6T-1645414916316)(https://ask.qcloudimg.com/http-save/yehe-1522219/4qz4g35awy.jpeg?imageView2/2/w/1620)]
2.添加JDBC查询者
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fKcl6TH2-1645414916316)(https://ask.qcloudimg.com/http-save/yehe-1522219/lf83g7n94e.jpeg?imageView2/2/w/1620)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PmkPlyOL-1645414916318)(https://ask.qcloudimg.com/http-save/yehe-1522219/n2wzc8454r.jpeg?imageView2/2/w/1620)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vx6ZlK4Q-1645414916319)(https://ask.qcloudimg.com/http-save/yehe-1522219/68apoehhcu.jpeg?imageView2/2/w/1620)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dLaim1Fv-1645414916322)(https://ask.qcloudimg.com/http-save/yehe-1522219/bv9ac9gakl.jpeg?imageView2/2/w/1620)]
3.执行预览检查

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FenScjp7-1645414916322)(https://ask.qcloudimg.com/http-save/yehe-1522219/45z4l1v4yv.jpeg?imageView2/2/w/1620)]

查看结果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6GY64e2-1645414916325)(https://ask.qcloudimg.com/http-save/yehe-1522219/mmfr7e3jaf.jpeg?imageView2/2/w/1620)]

4.添加Hive Metadata

将JDBC 链接到 Hive Metadata 配置hive 的JDBC URL

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EKF44F7s-1645414916327)(https://ask.qcloudimg.com/http-save/yehe-1522219/wt2b7720rg.jpeg?imageView2/2/w/1620)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aJy4LwOv-1645414916328)(https://ask.qcloudimg.com/http-save/yehe-1522219/69qhrydml0.jpeg?imageView2/2/w/1620)]

配置数据库和要生成的表名,这里我们没有分区,删掉分区

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0sT2OsQ-1645414916329)(https://ask.qcloudimg.com/http-save/yehe-1522219/8nj31rtflh.jpeg?imageView2/2/w/1620)]

选择Avro 格式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bAf1Gj5N-1645414916330)(https://ask.qcloudimg.com/http-save/yehe-1522219/vwsj1eh0ly.jpeg?imageView2/2/w/1620)]

5.将Hive Metadata 输出到 HiveMetastore

将Hive Metadata的 Metadata 链接到Hive Metastore

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LMNEeZyu-1645414916332)(https://ask.qcloudimg.com/http-save/yehe-1522219/0m8g2p0ipu.png?imageView2/2/w/1620)]

修改配置

在这里插入图片描述

6.将Hive Metadata的data 输出到HDFS 上

将Hive Metadata的 data链接到Hadoop FS 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lJgWeNMl-1645414916334)(https://ask.qcloudimg.com/http-save/yehe-1522219/o0lhvf8ff7.png?imageView2/2/w/1620)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KtUcQpLG-1645414916335)(https://ask.qcloudimg.com/http-save/yehe-1522219/18vl2xu4t0.jpeg?imageView2/2/w/1620)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8QYppmU-1645414916336)(https://ask.qcloudimg.com/http-save/yehe-1522219/ltba7q0i4m.jpeg?imageView2/2/w/1620)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1UeaGpUA-1645414916337)(https://ask.qcloudimg.com/http-save/yehe-1522219/l0s3j0ir1v.jpeg?imageView2/2/w/1620)]

7.统一选择包版本

这里测试环境是CDH 5.13

HiveMetadata

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dIBGFvfN-1645414916338)(https://ask.qcloudimg.com/http-save/yehe-1522219/c502l0udfl.jpeg?imageView2/2/w/1620)]

Hadoop FS

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sRGWL5uE-1645414916340)(https://ask.qcloudimg.com/http-save/yehe-1522219/0fvv42816v.jpeg?imageView2/2/w/1620)]

Hive Metastore

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nSBLuVq1-1645414916342)(https://ask.qcloudimg.com/http-save/yehe-1522219/mavtsm7uqo.jpeg?imageView2/2/w/1620)]

8.校验并执行

点击校验,返回成功后点击执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gGUZ6Jsm-1645414916342)(https://ask.qcloudimg.com/http-save/yehe-1522219/ia78tldxh0.jpeg?imageView2/2/w/1620)]

执行后可以看到有2条数据输入和输出,这与我们测试数据库的数据相符合

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEnJK4iV-1645414916343)(https://ask.qcloudimg.com/http-save/yehe-1522219/tdhtph36qn.jpeg?imageView2/2/w/1620)]

去HUE 页面查看hive 表中的数据,发现已经更新进来

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ysGCuUcs-1645414916344)(https://ask.qcloudimg.com/http-save/yehe-1522219/st6to6xsd9.jpeg?imageView2/2/w/1620)]

4.Pipeline流程测试


1.去mysql 中增加数据并查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oh9c6Y91-1645414916345)(https://ask.qcloudimg.com/http-save/yehe-1522219/uu6dqaxw9g.png?imageView2/2/w/1620)]

查看管道流信息发现输入输出数量变成了4

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Huu9pADB-1645414916347)(https://ask.qcloudimg.com/http-save/yehe-1522219/x5rcba5p0m.jpeg?imageView2/2/w/1620)]

去HUE 中查看hive 表的数据,跟mysql 中同步,说明增量更新成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y8QOX4l6-1645414916348)(https://ask.qcloudimg.com/http-save/yehe-1522219/edrfx3ekok.jpeg?imageView2/2/w/1620)]

5.常见问题


1.校验的时候找不到 hive.conf.HiveConf

出现如下异常,说明包不对,参考 2.8步骤重置配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qSAmVeJp-1645414916350)(https://ask.qcloudimg.com/http-save/yehe-1522219/87rjkjq18z.jpeg?imageView2/2/w/1620)]

2.JDBC 链接不通

新建文件夹/opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras,

并赋予给用户sdc

mkdir /opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras
chown sdc:sdc /opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR-3.0.0.0/sdc-extras

(可左右滑动)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Us7nimdQ-1645414916350)(https://ask.qcloudimg.com/http-save/yehe-1522219/l3yo5txklq.jpeg?imageView2/2/w/1620)]

上传JDBC驱动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XAN1S4j-1645414916352)(https://ask.qcloudimg.com/http-save/yehe-1522219/9nithba9sa.jpeg?imageView2/2/w/1620)]

上传成功后如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vWmPTOlv-1645414916353)(https://ask.qcloudimg.com/http-save/yehe-1522219/1atycogmrn.jpeg?imageView2/2/w/1620)]

在CM中配置StreamSets包的路径

export STREAMSETS_LIBRARIES_EXTRA_DIR="/opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR/sdc-extras/"

(可左右滑动)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEbBgd7s-1645414916355)(https://ask.qcloudimg.com/http-save/yehe-1522219/trn57iq0fp.jpeg?imageView2/2/w/1620)]

如果存在权限问题还需要配置安全策略给该目录授权:

grant codebase "file:///opt/cloudera/parcels/STREAMSETS_DATACOLLECTOR/sdc-extras/-" {
  permission java.security.AllPermission;
};

(可左右滑动)
在这里插入图片描述

标签:实战篇,21,hive,Hive,sdc,test,StreamSets,Metadata
来源: https://blog.csdn.net/u013522009/article/details/123044037