.commitOffsetsInFinalize()
⑨ 设置是否返回 Kafka 的其他数据,例如 offset 信息和分区信息,不用可以去掉 。
.withoutMetadata() // PCollection<KV<Long, String>>
⑩ 设置只返回 values 值,不用返回 key 。例如 PCollection,而不是 PCollection<Long,String> 。
.apply(Values.<String>create()) // PCollection<String>
在写入 Kafka 时完全一次性地提供语义,这使得应用程序能够在 Beam 管道中的一次性语义之上提供端到端的一次性保证 。它确保写入接收器的记录仅在 Kafka 上提交一次,即使在管道执行期间重试某些处理也是如此 。重试通常在应用程序重新启动时发生(如在故障恢复中)或者在重新分配任务时(如在自动缩放事件中) 。Flink runner 通常为流水线的结果提供精确一次的语义,但不提供变换中用户代码的副作用 。如果诸如 Kafka 接收器之类的转换写入外部系统,则这些写入可能会多次发生 。
在此处启用 EOS 时,接收器转换将兼容的 Beam Runners 中的检查点语义与 Kafka 中的事务联系起来,以确保只写入一次记录 。由于实现依赖于 runners checkpoint 语义,因此并非所有 runners 都兼容 。Beam 中 FlinkRunner 针对 Kafka 0.11+ 版本才支持,然而 Dataflow runner 和 Spark runner 如果操作 kafkaIO 是完全支持的 。
关于性能的注意事项:
"Exactly-once" 在接收初始消息的时候,除了将原来的数据进行格式化转换外,还经历了 2 个序列化 - 反序列化循环 。根据序列化的数量和成本,CPU 可能会涨的很明显 。通过写入二进制格式数据(即在写入 Kafka 接收器之前将数据序列化为二进制数据)可以降低 CPU 成本 。
5. Pipeline

文章插图
- 您输入的数据存储在哪里?
- 您的数据类型是什么样的?
- 您想怎么去处理数据?
- 您打算把数据最后输出到哪里去?

文章插图
重要的是要理解变换不消耗 PCollections;相反,他们会考虑 a 的每个元素 PCollection 并创建一个新 PCollection 的输出 。这样,您可以对不同的元素执行不同的操作 PCollection 。这里是出现了两条管,例如输入 AR,AI,VAR,BT,BMP 。

文章插图
例如不同的数据源,有数据库,文件,以及缓存等输入进行合并 。

文章插图
一种是收费的拓蓝公司出品叫 Talend Big Data Studio,有没有免费的呢?

文章插图
有的,它叫 kettle-beam 。例如不同的数据源,有数据库,文件,以及缓存等输入进行合并 。大家可以去 github 去看一下插件相应的安装及使用说明 。从图中可以看出大部分 beam 的输入输出现在都是支持的 。
https://github.com/mattcasters/kettle-beam
6. Runners

文章插图
我们在看一下运行平台,这是运行平台支持度的截图 。例如不同的数据源,有数据库,文件,以及缓存等输入进行合并 。
Runners 在 Beam Model 模型中有4个支持的维度:
- What,如何对数据进行计算?例如,机器学习中训练学习模型可以用 Sum 或者 Join 等 。在 Beam SDK 中由 Pipeline 中的操作符指定 。
- Where,数据在什么范围中计算?例如,基于 Process-Time 的时间窗口、基于 Event-Time 的时间窗口、滑动窗口等等 。在 Beam SDK 中由 Pipeline 的窗口指定 。
- When,何时输出计算结果?例如,在 1 小时的 Event-Time 时间窗口中,每隔 1 分钟将当前窗口计算结果输出 。在 Beam SDK 中由 Pipeline 的 Watermark 和触发器指定 。
- How,迟到数据如何处理?例如,将迟到数据计算增量结果输出,或是将迟到数据计算结果和窗口内数据计算结果合并成全量结果输出 。在 Beam SDK 中由 Accumulation 指定 。
推荐阅读
- 微服务架构如何实现网站服务垂直化拆分
- 详细讲解Tomcat系统架构
- Linux下apache安全配置策略
- 支付系统整体架构详解
- Apache ShardingSphere开源的分布式数据库中间件
- 架构师深入剖析JVM体系结构详解
- 微服务架构实践之api-gateway
- 京东架构师分享:微服务分布式一致性模式
- 百度技术架构师总结:微服务架构之访问安全
- 互联网架构演化
