干货学习丨你必须学习的Flink知识

▕  作者:牛伟任,毕业于中山大学。现任普适智能大数据开发工程师,目前专注于数据中台和知识图谱技术领域。

导读

这几年大数据的飞速发展,出现了很多热门的开源社区,其中著名的有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 text = env.readTextFile("input");

3、进行一系列转换

DataStream> counts = text.flatMap(newTokenizer()).keyBy(0).sum(1);

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。关注普适智能并发消息即可加入我们~

你可能感兴趣的:(干货学习丨你必须学习的Flink知识)