实时及未来,最近在腾讯云Oceanus进行实时计算服务,以下为mysql-cdc结合维表hbase到flink到ClickHouse的实践。分享给大家~
在Oceanus控制台的【集群管理】->【新建集群】页面创建集群,选择地域、可用区、VPC、日志、存储,设置初始密码等。
若职期间未使用过VPC,日志,存储这些组件,需要先进行创建。
VPC及子网需要和下面的Mysql、ES集群使用同一个,否则需要手动打通(如对等连接)。
创建完后的集群如下:
私有网络是一块您在腾讯云上自定义的逻辑隔离网络空间,在构建MySQL、EMR,ClickHouse集群等服务时选择的网络必须保持一致,网络才能互通。否则需要使用对等连接、VPN等方式打通网络。页面地址:https://console.cloud.tencent.com/vpc/vpc?rid=8
云数据库 MySQL(TencentDB for MySQL)是腾讯云基于开源数据库 MySQL 专业打造的高性能分布式数据存储服务,让用户能够在云中更轻松地设置、操作和扩展关系数据库。页面地址:https://console.cloud.tencent.com/cdb
新建MySQL服务的页面需要注意选择的网络是之前创建好的。
创建完MySQL服务后,需要修改binlog参数,如图修改为FULL(默认值为MINIMAL)
修改完参数后,登陆MySQL创建示例所需要的数据库和数据库表。
打开SQL窗口或者点击可视化页面创建数据库及表。
create database mysqltestdb;
在新建库的基础上新建表student:
create table `student` ( `id` int(11) not null auto_increment comment '主键id', `name` varchar(10) collate utf8mb4_bin default '' comment '名字', `age` int(11) default null comment '年龄', `create_time` timestamp null default current_timestamp comment '数据创建时间', primary key (`id`) ) engine=innodb auto_increment=4 default charset=utf8mb4 collate=utf8mb4_bin row_format=compact comment='学生表'
insert into mysqltestdb.student(id,name,age) values(1,“xiaomin”,20);
EMR是云端托管的弹性开源泛 Hadoop 服务,支持 Spark、HBase、Presto、Flink、Druid 等大数据框架,本次示例主要需要使用Flume、Hive、YARN、HUE、Oozie组件。页面地址https://console.cloud.tencent.com/emr
在EMR集群中安装HBase组件。
如果生产环境,服务器配置可根据实际情况选择,示例中选择了低配服务器,网络需要选择之前创建好的VPC网络,始终保持服务组件在同一VPC下。
进入HBase Master节点
点击登录进入服务器
输入命令:
# 进入HBase命令 root@172~# hbase shell
进入hbase shell,并新建表:
# 建表语句 create ‘dim_hbase’, ‘cf’ # 插入数据 put ‘dim_hbase’,’1’,’cf:name’,’MingDeSchool’
页面地址:https://console.cloud.tencent.com/cdwch
新建集群
选择网络选择之前新建的VPC网络(依然保证各服务在同一网络)
登录clickhouse
在之前新建的EMR下选择一台云主机点击登录,最好选择带有外网IP的节点。
安装ClickHouse客户端
在此机器上安装ClickHouse客户端,clickhouse-client安装教程:https://cloud.tencent.com/document/product/1299/49824
登陆客户端
命令示例:
clickhouse-client -h用户自己的ClickHouse服务IP --port 9000
新建数据库
create database testdb on cluster default_cluster;
新建表
CREATE TABLE testdb.student_school on cluster default_cluster ( `id` Int32, `name` Nullable(String), `school_name` Nullable(String), `Sign` Int8 ) ENGINE = ReplicatedCollapsingMergeTree('/clickhouse/tables/{layer}-{shard}/testdb/ student_school, '{replica}', Sign) ORDER BY id;
按照上面操作中创建表,并向MySQL和HBase表中插入数据。
在Oceanus控制台创建SQL作业,选择响应的内置Connector。
MySQL-CDC Source:
--学生信息作为cdc源表 CREATE TABLE `student` ( `id` INT NOT NULL, `name` varchar, `age` INT, PRIMARY KEY (`ID`) NOT ENFORCED ) WITH ( 'connector' = 'mysql-cdc', -- 必须为 'mysql-cdc' 'hostname' = 'YoursIp', -- 数据库的 IP 'port' = '3306', -- 数据库的访问端口 'username' = '用户名', -- 数据库访问的用户名(需要提供 SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT, SELECT, RELOAD 权限) 'password' = 'YoursPassword, -- 数据库访问的密码 'database-name' = 'mysqltestdb', -- 需要同步的数据库 'table-name' = 'student' -- 需要同步的数据表名 );
HBase 维表
--示例使用school学校信息作为维表 CREATE TABLE dim_hbase ( rowkey STRING, cf ROW <school_name STRING>, -- 如果有多个列簇,写法 cf Row<age INT,name String> PRIMARY KEY (rowkey) NOT ENFORCED ) WITH ( 'connector' = 'hbase-1.4', 'table-name' = 'dim_hbase', 'zookeeper.quorum' = '用户自己的hbase服务器zookeeper地址,多个用逗号隔开' );
创建到ClickHouse的创建表语句
--关联后存入clickhouse表 CREATE TABLE `student_school` ( stu_id INT, stu_name STRING, school_name STRING, PRIMARY KEY (`id`) NOT ENFORCED ) WITH ( -- 指定数据库连接参数 'connector' = 'clickhouse', 'url' = 'clickhouse://yourIP:8123', -- 如果ClickHouse集群未配置账号密码可以不指定 --'username' = 'root', --'password' = 'root', 'database-name' = 'testdb', 'table-name' = ' student_school ', 'table.collapsing.field' = 'Sign' );
此例子中,只进行了简单的Join没有进行复杂的运算。详细运算逻辑可参考:
Oceanus运算符和内置函数 或者Flink官网Flink SQL开发章节
INSERT INTO student_school SELECT student.id as stu_id, student.name as stu_name, dim_hbase.cf.school_name FROM student JOIN dim_hbase ON CAST(student.school_id AS STRING) = dim_hbase.rowkey;
在ClickHouse数据库中查询数据是否正确。
select * from testdb.student_school;
云计算作为当前企业IT基础架构技术的不二之选,已走过探索实践阶段,迎来了多样...
【51CTO.com原创稿件】当前,在新冠肺炎疫情的催生下,中国数字化飞速发展,同时...
2020年9月9日,中国信息通信研究院、广东省工业和信息化厅、广东省通信管理局、...
公司简介 我们是上海简米网络科技有限公司,旗下的聚合支付品牌Ping++ 是国内领...
云服务器和云主机是当下流行的一种资源整合型的资源平台。云 服务器租用 对大家...
什么是 SSL证书 呢?我们都知道目前互联网安全威胁愈演愈烈,各类入侵、劫持事件...
堆排序基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种...
本文转载自公众号“Phodal”,希望给云架构从业者们一点新思考。 机缘巧合之下,...
OAM 与 KubeVela 项目整体捐赠进入 CNCF 让云端应用交付更加简单 2021 年 6 月 2...
1月7日,中消协召开网络消费领域算法规制与消费者保护座谈会。中消协表示,有些...