Flink实时流计算入门系列(一)

​阿里巴巴双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项目,添加相关依赖

 

实现单词统计主要代码

object BathchFromFiles {

运行效果图:

image

往期精彩

  • 这个浏览器插件神器,带你玩转各网站资源,高手都在用……

  • 防止邻居蹭wifi,路由器基础使用设置教程

  • 防止邻居蹭网,路由器高级设置实用教程,企业级别设置

觉得还不错的话欢迎关注公号:一点IT技术

"转发和分享是对作者最大的支持及鼓励"

你可能感兴趣的:(Flink实时流计算入门系列(一))