开发者社区> 阿里云实时计算Flink> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Flink SQL 功能解密系列 —— 阿里云流计算/Blink支持的connectors

简介: Connector 是连接外部数据和blink计算框架的桥梁,也是流计算的入口和出口。目前,blink支持了集团内部绝大多数的上下游(如下图),详细的接入方法可以见官方文档,本文主要阐述connector设计和使用上需要注意的问题。
+关注继续查看

Blink Connectors

总览

Connector 是连接外部数据和blink计算框架的桥梁,也是流计算的入口和出口。目前,blink支持了集团内部绝大多数的上下游(如下图),详细的接入方法可以见官方文档,本文主要阐述connector设计和使用上需要注意的问题。
undefined

Source插件

1. source connector控制消费位点

blink读取上游数据时,会记录消费位点和控制消费速度。结合blink checkPoint机制,source connector会周期性的把当前消费位点存储到rocksDB中。在发生failover的时候,source connector会从上一次成功消费的位点开始重追数据,保证at least onceexcatly once的计算语义(取决于任务配置)。这也要求上游插件能够支持从特定位点恢复读,否则将不能保证上游数据的完整性。
因此,blink来取metaq采用的也是pull模式,自己记录消费位点和控制消费,metaq控制台记录的消费进度和消息堆积也是不准确的,只需要关心blink source的delay指标和tps指标即可。
(blink source connector目前也支持notify,但由于notify不支持数据回溯的特性,在发生failover时不能保证数据的准确性,请尽量使用其它类型的上游存储插件。)

2. 上游分区变化时需要重启job

TT、metaQ、Sls、Datahub都存在分区的概念,blink在读取上游数据的时候,会记录每一个分区的消费进度。在上游分区发生变化时,blink会抛出异常,需要重新启动job(有时候还需要调整source的并发度)。

3. 字段解析

  • 普通字段解析
    Blink SQL用户目前在bayes平台只需要定义好读取的字段和数据类型,source connector便会自动地将源头数据转换成特定的数据类型,非常方便。并且,对于存在metaq中对象序列化的类型,可以定义为binary类型,blink支持通过自定义的source方式来解析。
  • 属性字段获取
    metaq等一些上游消息中,除了消息体外,还会存在特殊的标记信息,比如sls中带入的tag消息,metaq带入的messageId字段。不同于galaxy需要使用propety_get函数获取,在blink中,可以像普通字段一样定义property字段,只需要在后面加上header关键字即可。比如 __ip__ varchar header 即可拿到sls属性中对应的字段。

sink插件

1. 日志型和KV型下游

根据sink插件的性质,可以分为两类: 一类是像TT,SlS,Metaq这种没有key,不会更新已写入数据的日志型存储;另一类是像hbase、rds等,需要根据key进行插入和更新的KV型存储。

2. 基于主键去重和批量写

对于KV型存储,为了减少对下游系统的输出压力。blink默认会缓存一段时间或一定数量的数据后根据primary key字段进行去重(跟minibatch的思想也比较类似),然后再批量写入到下游系统。

比如定义了一张hbase表

create table hbase_output(
  rk  varchar,
  rk1 varchar,
  rk2 varchar,
  f bigint,
  PRIMARY KEY(rk)
) with (
  type='alihbase',
  zkQuorum='hbasetestmaster1.et2sqaxxxxxxx',
  zkNodeParent='/hbase-et2sqa-perf',
  columnFamily='cf',
  tableName='blink_hbase_test',
  bufferSize='1000',  -- 定义来多少条数据时触发一次写入
  batchSize='100',      -- 每次写入时batch的大小
  batchWriteTimeoutMs='2000' -- 定义过多久时间触发一次写入
);

当有一组数据到达同一个worker时,如
1,2,3,3
1,2,4,3
1,1,3,3
1,3,5,4
2,4,5,6
sink插件会把根据primary key和先后到达的顺序把数据聚合成两条
1,3,5,4
2,4,5,6


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云国际版StarRocks X Flink CDC,打造端到端实时链路
作为一款全平台极速 MPP 架构,StarRocks 提供了多种性能优化手段与灵活的建模方式,在预聚合、宽表和星型/雪花等多种模型上,都可以获得极致的性能体验。通过 StarRocks 结合 Flink 构建开源实时数仓的方案,可以同时提供秒级数据同步和极速分析查询的能力。同时,通过 StarRocks 主键模型,也可以更好地支持实时和频繁更新等场景。
0 0
实时计算 Flink 与你相约阿里云|学习笔记(二)
快速学习实时计算 Flink 与你相约阿里云
0 0
实时计算 Flink 与你相约阿里云 | 学习笔记
快速学习实时计算 Flink 与你相约阿里云,介绍了实时计算 Flink 与你相约阿里云系统机制, 以及在实际应用过程中如何使用。
0 0
【采坑-Flink消费kafka中的数据】阿里云ECS/VMware之zookeeper和kafka单机/集群环境
【采坑-Flink消费kafka中的数据】阿里云ECS/VMware之zookeeper和kafka单机/集群环境
0 0
阿里云Flink x Hologres:构建企业级一站式实时数仓
阿里云Flink x Hologres:构建企业级一站式实时数仓
0 0
阿里云实时计算 Flink 版 x Hologres: 构建企业级一站式实时数仓
阿里云 Flink、阿里云 Hologres 构建实时数仓上所具备的核心能力以及二者结合的最佳解决方案。
0 0
某电商基于阿里云Flink的实时风控实践
客户成功基于阿里云实时计算 Flink 版的企业级CEP能力落地实时风控解决方案,更近一步基于阿里云Flink实现"精准营销"。
0 0
首批+唯一!阿里云实时计算 Flink 版通过信通院大数据产品稳定性测试
阿里云实时计算 Flink 版通过分布式流处理平台稳定性专项测评,阿里云成为「首批+唯一」通过该稳定性专项评测的厂商。
0 0
文章
问答
来源圈子
更多
实时计算 Flink 版(Alibaba Cloud Realtime Compute for Apache Flink,Powered by Ververica)是阿里云基于 Apache Flink 构建的企业级、高性能实时大数据处理系统,由 Apache Flink 创始团队官方出品,拥有全球统一商业化品牌,完全兼容开源 Flink API,提供丰富的企业级增值功能。
+ 订阅
相关文档: 实时计算 Flink版
文章排行榜
最热
最新
相关电子书
更多
阿里云流计算 Flink SQL 核心功能解密
立即下载
阿里云流计算Flink SQL核心功能解密
立即下载
阿里云云原生 Serverless 案例集
立即下载