当前位置:网站首页>Tapdata 开源项目基础教程:功能特性及实操演示
Tapdata 开源项目基础教程:功能特性及实操演示
2022-08-04 11:31:00 【InfoQ】
- MongoDB => MySQL 的实时同步任务,包括自动建表与实时数据同步
- MongoDB => MySQL + 自定义函数 + 自动模型推演 + 建表的任务,可以按照自定义函数的逻辑自动推断表模型
- MySQL=> PG + DDL 同步的任务,可以自动同步数据, 也可以自动同步表模型变更
一、项目简介
- 基于 CDC 的无侵入数据源实时采集
- 异构数据模型自动推断与转换
- 数据处理,流式计算,缓存存储一体架构
- 一键将模型发布为数据服务的闭环能力
二、使用说明
- 环境准备: Linux + Docker(当前版本仅支持 Linux 和 Docker 环境,基于非 Docker 的和非 Linux 的环境正在适配中,很快会和大家见面)
- 下载源码: git clone [email protected]:tapdata/tapdata.git && cd tapdata
- 通过一个命令,一键编译所有组件并启动服务: bash build/quick-dev.sh
- 代码库主要组成部分(目录)
- assets:用于存储我们的图片、logo 等静态资源
- build:主要用于存放我们用来打包、编译或测试的脚本,不是框架的主要组成部分
- connectors common:数据源的通用对象以及类的定义
- plugin-kit:供开发者使用,如果开发者想在框架上开发一个自己的数据源,就可以用到这里的一些 API 方法
- tapshell:目前 Tapdata 的开源项目没有暴露 UI 界面,整个系统的交互使用都是通过 tapshell 来运行的,是一个基于 Python 的交互式命令行工具
- bin:我们后续会在这里放一些类似于启动/停止的脚本
- connectors:目前 Tapdata 支持的数据源都在这里:
- 开源数据库 Apache Doris
- 测试用数据库 Dummy
- ES/Kafka/MySQL/PG/OceanBase/RabbitMQ/RocketMQ……
- dist:每次打包时的成品目录
- engine:引擎,做计算时的一个主要仓库,可以用来做数据的读取、转换,以及聚合计算
- manager:管理端,开发者的任务管理、日志上报、监控等信息都是通过这个组件来完成的。我们也是通过 manager 来完成任务的持久化(engine 本身仅运行任务,不做持久化)
- README:一个中文版,一个英文版
- 编译说明:先把 plugin-kit 和 connectors common 编译完(编译出我们基本依赖的对象),再完成 engine 引擎编译,继续完成 manager 编译后,整个服务就可以跑起来了。最后通过 build 里的 DockerFile 打包成一个 All-in-One 的镜像,我们最终运行的是这个镜像。在运行之后,我们还需要把 connectors 下面的所有数据源注册到系统中去。
- 数据源注册:如果想要注册一个新的数据源,可以通过 accesstoken 来完成
- 动态注册一个开发完成的数据源插件
- 列出系统当前支持的数据源:show connectors
- 注册 MongoDB 数据源插件
- 列出系统当前支持的数据源: show connectors
- 新建一个 MongoDB 数据源DataSource("mongodb",uri).save()
- 校验并保存数据源
- 新建所需的全部数据源, 校验并保存数据源DataSource("mysql",host).port(username).password(db).save()DataSource("postgresql",host).port(username).password(db).schema($schema).save()
- 检查数据源配置, 检查表加载情况
三、功能示例及任务操作演示
- MongoDB: 4.2,包含一张表:car
- MySQL: 8.0.22,空库
- PG: 12.6,空库
- 新建表同步任务并运行p = Pipeline('mongo=>mysql')p.readFrom(mongodb.car).writeTo(mysql.car)p.start()
- 查看任务运行状况:show jobs
- 监听实时状态:monitor job mongo=>mysql
- 查看运行日志:logs job mongo=>mysql
- 在源与目标查看数据情况
- 做一个变更,查看数据是否同步
- 定义 UDF(User Defined Function):加一些字段,删除一个已存在的数据
- 新建表同步任务,增加 UDF 节点并运行p = Pipeline('mongo=>mysql_with_udf')p.readFrom(mongodb.car).processor(pp).writeTo(mysql.car_with_udf)p.start()*补充说明:与上一个任务的不同之处在于,这里在读写之间增加了一个处理器(processor),对 record 做了一些变换的同时,按照 UDF 定义增减了字段,变换了类型。
- 监听实时状态:monitor job mongo=>mysql
- 查看运行日志:logs job mongo=>mysql
- 查看建表情况
- 新建表同步任务,配置支持 DDL 并运行p = Pipeline('mysql=>pg_with_ddl')p.readFrom(mysql.car_ddl, ddl=True).writeTo(pg.car_ddl)p.start()*补充说明:DDL 任务是默认不开启的,如果想要同步 DDL,可以通过执行 ddl=True 打开。
- 监听实时状态:monitor job mongo=>mysql
- 查看运行日志:logs job mongo=>mysql
- 查看建表情况
- 源端进行多次 DDL,查看目标是否同步:
- 源字段类型调整
- 源字段重命名
- 新增 / 删除字段
- 通过 logs job + 任务名来查看任务运行状况;
- 通过 monitor job + 任务名来查看该任务的运行指标信息,包括 input/output/update 的数据量等;
- 通过show/use 来查看表信息、表结构
- 获得 Tapdata 开源 Issue、需求的特殊优先级
- 第一时间收获社区最新资讯(包括但不限于开发计划、核心技术、业务场景等)
- 参与活动、领取开源体验官新手任务、获得商务双肩包、潮牌 T 恤等更多好礼
- 有机会受邀加入 Tapdata Committer Program,成为正式的 Tapdata Committer
- 有机会直接参与并影响 Tapdata 的未来走向
边栏推荐
- 【LeetCode】700.二叉搜索树
- 临床研究方法学,到现场,到数据真实发生的地方 | 对话数智 x 张维拓
- 200ppi转以太网通过4Gwifi在医药设备移动平台(平板电脑、手机)
- WPF 截图控件之画笔(八)「仿微信」
- Xilinx VIVADO 中 DDR3(Naive)的使用(2)读写设计
- vscode插件设置——Golang开发环境配置
- 将博客搬至CSDN
- BOSS 直聘回应女大学生连遭两次性骚扰:高度重视求职者安全,可通过 App 等举报
- MySQL 45 讲 | 11 怎么给字符串字段加索引?
- Zikko launches new Thunderbolt 4 docking station with both HDMI2.1 and 2.5GbE
猜你喜欢
HyperLynx仿真(一)LineSim简单介绍
深度强化学习与APS的一些感想
*iframe*
萌宠来袭,如何让“吸猫撸狗”更有保障?
The sword refers to the Great Wall Cannon?Official spy photos of Changan's new pickup
The use of DDR3 (Naive) in Xilinx VIVADO (3) simulation test
【黄啊码】MySQL入门—1、SQL 的执行流程
终于有人把分布式机器学习讲明白了
Leetcode刷题——构造二叉树(105. 从前序与中序遍历序列构造二叉树、106. 从中序与后序遍历序列构造二叉树)
Redis查询缓存
随机推荐
win8和win10下,visual studio 2008 调试出现无响应的卡死问题解决
CVPR 2022 | 从人体网格预测骨架,是真正的生理学骨架!
*iframe*
BOSS直聘回应女大学生连遭两次性骚扰:高度重视求职者安全 可通过App等举报
A topic of map
蒲丰投针学习笔记
Using .NET to simply implement a high-performance clone of Redis (2)
BOSS 直聘回应女大学生连遭两次性骚扰:高度重视求职者安全,可通过 App 等举报
秒云成功入选《2022爱分析 · 银行数字化厂商全景报告》,智能运维能力获认可
POJ1094Sorting It All Out题解
MTBF是什么意思?交换机做MTBF有什么要求?MTTF、MTBF和MTTR的区别是什么?
子查询
深度学习------pytorch实现cifar10数据集
临床研究方法学,到现场,到数据真实发生的地方 | 对话数智 x 张维拓
节流函数(每隔一段时间就会执行一次)
【RISC-V】Trap和Exception
Leetcode刷题——构造二叉树(105. 从前序与中序遍历序列构造二叉树、106. 从中序与后序遍历序列构造二叉树)
表的完整性约束;非外键约束
Xilinx VIVADO 中 DDR3(Naive)的使用(3)仿真测试
Leetcode - using sequence traversal features first completed 114. The binary tree to the list