Apache Beam 架构原理及应用实践( 四 )

① What

Apache Beam 架构原理及应用实践

文章插图
对数据如果处理,计算 。分组的矩阵图,提到这里说一下,这些运行平台已经集成到 Beam,只是没有更新到官方首页而已 。以及或者是官方不打算主推的,就没有写上去 。
② Where
Apache Beam 架构原理及应用实践

文章插图
窗口处理矩阵能力图,大家从图中可以看出很多都是全部支持的 。
③ When
Apache Beam 架构原理及应用实践

文章插图
对于事件处理,流计算引擎Apache Flink,Google Cloud,Dataflow 以及 Jstorm 都支持性比较好 。
④ How
Apache Beam 架构原理及应用实践

文章插图
最后是对迟到数据的数据处理能力矩阵图 。
7. FlinkRunner Beam
Apache Beam 架构原理及应用实践

文章插图
我们以最近两年最火的 Apache Flink 为例子,帮大家解析一下 beam 集成情况 。大家可以从图中看出,flink 集成情况 。
Apache Beam 架构原理及应用实践

文章插图
然后看一下,FlinkRunner 具体解析了哪些参数,以及代码中怎样设置 。
8. Beam SQL
Apache Beam 架构原理及应用实践

文章插图
Apache Calcite 是一种保准 SQL 的解析器,用于大数据处理和一些流增强功能,基于它做 SQL 引擎的有很多,例如 spark,Cassandra,druid 和我们的 Beam 。
Apache Beam 架构原理及应用实践

文章插图
我们看一下 Beam SQL 的设计思路:首先是我们写的 SQL 语句,进行查询解析,验证来源的类型,数据格式,建一个执行计划,然后通过优化,设计计划规则或逻辑,封装在 Beam 管道中,进行编译器编译,最后提交 job 到运行平台执行 。
Apache Beam 架构原理及应用实践

文章插图
表中是 beam SQL 和 Calcite 的类型支持度,是把 Calcite 进行映射 。
Apache Beam 架构原理及应用实践

文章插图
Beam SQL 和 Apache Calcite 函数的支持度 。里面有一些现在不支持的,需要大家做的时候多多关注,特别是架构师设计时候 。
Apache Beam 架构原理及应用实践

文章插图
从图中可以看出,首先要设置好数据类型,在设置数据,最后填充到管道数据集,最后做 SQL 的操作 。其实这样写还是不方便的 。有没有很好的解决方式,有 。大家继续往下看…
Apache Beam 架构原理及应用实践

文章插图
Beam SQL 的扩展 。Beam SQL 的 CREATE EXTERNAL TABLE 语句注册一个映射到外部存储系统的虚拟表。对于某些存储系统,CREATE EXTERNAL TABLE 在写入发生之前不会创建物理表 。物理表存在后,您可以使用访问表 SELECT,JOIN 和 INSERT INTO 语句 。通过虚拟表,可以动态的操作数据,最后写入到数据库就可以了 。这块可以做成视图抽象的 。
Create 创建一个动态表,tableName 后面是列名 。TYPE 是数据来源的类型,限制支持 bigquery,pubsub,kafka,text 等 。Location 下面为表的数据类型配置,这里以 kafka 为例 。
▌AloT PB 级实时数据,怎么构建自己的“AI微服务”?
在 AIoT 里面,实时性数据比较大,例如视频分析,视频挖掘,合规检测,语音分析等等 。130W 路的摄像头每秒写入300多 G 的视频,一天就是 25PB,有人说可以晚上用批方式上数据,其实 AIoT 场景跟其他的场景是不一样的,例如做智能儿童手表,我们晚上上报数据的频度可以变低,白天儿童上学放学路上可以正常上报数据 。AIoT 场景下摄像头24小时监控的,并且宽带主杆线都换成千兆光线,其实也支持不了每秒 300G 的实时写入 。我们是怎么处理呢?
Apache Beam 架构原理及应用实践

文章插图
首先在设计架构方案的时候,相信很多架构师都会这样想,不想第一个去吃螃蟹,因为稳定性,安全性,及不确定性原因会导致整个项目的成败 。那我们看一下 Beam 有哪些大厂在使用 。
知道他们使用 Beam,咱们了解一下他们用 Beam 做了什么?例如: