▕ 作者:牛伟任,毕业于中山大学。现任普适智能大数据开发工程师,目前专注于数据中台和知识图谱技术领域。
导读
这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有Hadoop、Storm,以及后来的Spark,他们都有着各自专注的应用场景。
Spark掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。Spark的火热或多或少的掩盖了其他分布式计算的系统身影。就像Flink,也就在这个时候默默的发展着。
▐ Flink的定义
Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
❏ 流计算
任何类型的数据都是作为事件流产生的。信用卡交易,传感器测量,机器日志或网站或移动应用程序上的用户交互,所有这些数据都作为流生成。
数据可以作为无界或有界流处理。
❏无状态计算例子:消费延时计算
消息队列:
一个生产者持续写入
多个消费者分别读取
统计每个消费者落后多少条数据
输入输出:
结论:
单条输入包含所有需要的全部信息
相同的输入所得到的结果相同
❏有状态计算例子:访问量统计
访问日志:每个请求访问一个URL地址
统计每个地址总共被访问了多少次
输入输出:
结论:
单条输入仅包含所需的部分信息
相同的输入可能得到的结果不同
▐ Flink在时间上的应用
Event Time — 表示事件发生的时间
Ingestion Time — 表示事件接入系统时间
Processing Time — 表示事件被系统处理的时间
❏ 常用时间:
▐ Flink:水位线 (Watermark)
特点:
Watermark用以衡量事件时间进展
Watermark是一种平衡处理延时和完整性的灵活机制
▐ DataStream API的使用
❏流计算基本模型
❏DataStream编程模型
1、设置运行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
2、配置数据源读取数据
DataStream
3、进行一系列转换
DataStream
4、设置数据汇写入计算结果
counts.writeAsText("output");
5、提交执行
env.execute("Streaming WordCount")。
❏ DataStream的转换概览
❏物理分区操作
❏数据类型
❏ 连接器(Connector)
1. 预定义的Source和Sink
基于文件、基于Socket、基于Collections、Iterators
2. Bundle Connectors
Kafka、Cassandra、Elasticsearch、HDFS、RabbitMQ...
3. Apache Bahir中的连接器
ActiveMQ、Flume、Redis、Akka、Netty
4. Async I/O
在Map、FlatMap中使用Async I/O的方式读取外部数据库
总结:
在这一篇专题中我们介绍了Flink相关的基础知识,可以了解到其相关特质及DataStream API的使用。
下期我们主要讲述Flink的状态管理与容错,Runtime机制,感兴趣的小伙伴记得关注我们哦~
参考资料:
https://flink.apache.org/
张利兵.Flink原理、实战与性能优化.机械工业出版社
https://www.zhihu.com/topic/20043072/hot
关于我们
▼
普适智能科技有限公司(简称:普适智能PUSHI AI)是一家专注于数据处理和知识图谱技术的人工智能高科技公司,致力于为企业提供一站式认知智能服务。
普适智能专注于技术创新型人才提供技术分享和学习内容,使创新成为持续的核心竞争力。
如果您感兴趣,欢迎加入PUSHI AI社群,共同探索AI。关注普适智能并发消息即可加入我们~