开发者学堂课程【《实时数仓入门课程》:Hologres 数据导入/导出实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/807/detail/13891
Hologres 数据导入/导出实践
内容简介:
一、Hologres 生态
二、Hologres 实时读写接口介绍
三、Hologres 实时读写场景介绍
四、Demo 演示
五、常见问题和未来展望
一、Hologres 生态
Dataworks 数据集成支持输入
l Mysql Binlog
l SQLServer CDC
l Oracle CDC
l PolarDB
l Kafka
l Datahub
二、Hologres 实时读写接口介绍
(1)Hologres 实时读写实现原理
(2)Fixed Plan
l Insert into table values ()
l Insert into table values ()on conflict do update
l Select * from table where pk = XXX
l Delete from table where pk = XXX
l Log Stuctured Merge Teel(LSM)
l Append Only
l 全异步框架,协程(Coroutine)
(3)Holo-client
基于Jdbc实现,对读写holo最佳实践的封装,可以减轻数据集成开发工作量
数据写入
l 攒批,基于 jdbc reWriteBatchedlInserts 的 实现原理
l 数据合并,相同主键的 INSERT/DELETE 在一个批次中会合并减少请求量
l 自动提交,支持基于批行数、批字节大小和最长提交间隔自动提交
数据点查
l 提供异步点查接口
l QPS 高时自动转入攒批模式
数据 Copy
l 提供并发 Copyln 的简易接口
异常处理
l 对 holo 返回异常归类,正确在 holo 升级、扩容等场景下重试等待实例恢复
三、Hologres 实时读写场景介绍
(1)实时写入场景
l 行存&列存都支持
l 支持根据主键去重 (Exactly once)
l 支持整行数据局部更新
l 导入即可见,毫秒级延迟
l 单 Core 2W+ RPS (TPCH PartSupp 表)
l 性能随资源线性扩展
(2)实时宽表 Merge 场景
(3)实时维表 Join 场景
l 建议使用行存表
l Flink
l 替换 HBase
(4)Hologres Binlog 场景
l 实时消费 Hologres 单表的 Change log
l 支持Flink 的 CDC Source,能实现表的实时镜像同步
l Flink+Hologres,实现 ODS 到 DWD 表的实时 ETL
四、Demo 演示
l Flink 实时读写 Hologres Demo
五、常见问题及未来展望
(1)Flink Hologres Connector 常见问题
Q:作业启动失败,无法连接 Hologres
A: Hologres 实例需要与 Flink 集群在同- Region ,且使用 VPC Endpoint
Q:实时写入结果表数据不符合预期
A:通常是由回撤引起,需要正确设置 ignoreDelete 参数
Q:实时写入性能慢
A:当前高 QPS 场景的列存表局部更新开销较大,建议换成整行更新或者行存写入
Q:维表查询性能较差,且 Hologres 实例 CPU 负载高
A:通常是由于使用了列存表作为维表,建议切换至行存表
Q:实时消费 Binlog 报错
A:通常是由于表没有开启 Binlog 导致,需要重建表
(2)未来展望
l Flink One -To- Many 维表 Join
l 基于JDBC实时消费 Hologres Binlog
l Dataworks 数据集成实时消费 Hologres Binlog
l 无连接限制的 SQL 读写
相关链接
l https://github.com/aliyun/alibabacloud-hologres-connectors