阿里巴巴双11大屏在峰值期间可以承担每秒超过4.72亿次的访问,这是多高的访问量……为什么学习Flink?
image这几年大数据的飞速发展,出现了很多热门大数据计算框架,著名的Hadoop、Storm、Spark,他们都专注于各自的应用场景。
Spark掀开了内存计算的先河,也以内存为赌注,赢得了内存计算的飞速发展。Spark 的火热或多或少的掩盖了其他分布式计算的系统身影。就像 Flink,也就在这个时候默默的发展着。
Flink认为有界数据集是无界数据流的一种特例,所以说有界数据集也是一种数据流,事件流也是一种数据流。
在国外一些社区,有很多人将大数据的计算引擎分成了4 代,当然也有很多人不会认同。
-
第1代——Hadoop MapReduce
-
第2代——DAG框架(****
Tez
****) + MapReduce -
第3代——Spark
-
第4代——Flink
随着业务场景的复杂程度增加、实时性能要求的提高,SparkStreaming微批次准实时计算在一定程度上满足不了业务需求,Flink在实时流计算的性能尤为显著,随着阿里的广泛使用,Flink已成为当前流计算领域的首选架。
快速入门 Flink 应用程序结构主要包含三部分,Source/Transformation/Sink
-
Source: 数据源,Flink 在流处理和批处理上的 source 大概有 4 类:
-
基于本地集合的 source
-
基于文件的 source
-
基于网络套接字的 source
-
自定义的 source。自定义的 source 常见的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,当然你也可以定义自己的 source。
-
Transformation:数据转换的各种操作,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,操作很多,可以将数据转换计算成你想要的数据。
-
Sink:接收器,Flink 将转换计算后的数据发送的地点 ,你可能需要存储下来,Flink 常见的 Sink 大概有如下几类:
-
写入文件、
-
打印输出、
-
写入 socket 、
-
自定义的 sink 。自定义的 sink 常见的有 Apache kafka、RabbitMQ、MySQL、ElasticSearch、Apache Cassandra、Hadoop FileSystem 等,同理你也可以定义自己的 Sink。
Flink批处理入门示例
Flink 做为一款流式计算框架,它可用来做批处理,即处理静态的数据集、历史的数据集;也可以用来做流处理,即实时的处理些实时数据流,实时的产生数据流结果,只要数据源源不断的过来,Flink 就能够一直计算下去。
通过flink来读取本地文件,实现单词统计功能,把统计结果写入本地文件中,体现flink的批处理。效果如下,左边为源文件,右边为统计结果
image编程步骤:
一、建立maven项目,添加相关依赖
<properties>
实现单词统计主要代码
object BathchFromFiles {
运行效果图:
image往期精彩
觉得还不错的话欢迎关注公号:一点IT技术
"转发和分享是对作者最大的支持及鼓励"
网友评论