apache flink_使用Apache Flink进行流优先处理的基本指南

Apache Flink是一个开源流处理框架,支持事件时间和乱序流,提供Scala和Java API,具备低延迟和高吞吐量特性。本文通过实例展示了如何使用Flink处理实时数据,包括确定热门地点、计算最近15分钟的热门地点和实时统计,以及利用Kibana可视化数据流。Flink与Kafka、HDFS等系统集成,适用于实时分析、ETL和机器学习场景。
摘要由CSDN通过智能技术生成

apache flink

编者注:这是Apache Flink PMC成员 Fabian HueskeKostas Tzoumas的帖子 Fabian和Kostas也是数据工匠的联合创始人。

当今数据处理的很大一部分是对连续产生的数据进行的,例如,来自用户活动日志,Web日志,机器,传感器和数据库事务的数据。 到目前为止, 数据流技术在性能,正确性和可操作性等几个方面都缺乏,迫使用户滚动自己的应用程序以摄取和分析这些连续数据流,或者(滥用)批处理工具来模拟连续摄取和分析。分析管道。

随着流技术现已成熟并被企业Swift采用,情况已不再如此。 在流数据之上编写数据应用程序具有以下优点:

  • 它减少了整体延迟,因为在对分析有价值之前,不必将数据移到文件系统或数据库中。
  • 它简化了数据基础架构的架构,因为要维护和协调以确保来自数据信号的及时响应的活动部件少得多。
  • 它使时间维明确,将每个数据记录与其时间戳相关联,并允许分析基于这些时间戳处理和分组事件。

总体而言,流技术可实现以下明显目的:对连续的真实来源(大多数“大”数据集)自然产生的数据进行连续处理。

Apache Flink是用于流和批处理的开源分布式平台,具有悠久的创新历史,是Apache软件基金会的顶级项目,拥有150多个贡献者社区。 在本文中,我们重点介绍系统的流处理功能。 Flink 0.10是Apache Flink的最新版本,是大约80个人的工作成果,它带来了许多新功能,这些功能使Flink在开源空间中作为流处理系统脱颖而出。

  1. 支持事件时间和乱序流:实际上,事件流很少按生成的顺序到达,特别是来自分布式系统和设备的流。 到目前为止,由于流系统(至少在开放源代码中)不支持事件时间,因此应用程序程序员必须纠正此“时间漂移”,或者只是忽略它并接受不准确的结果。 Flink 0.10是第一个支持乱码流和事件时间的开源引擎
  2. Scala和Java中表现力强且易于使用的API: Flink的DataStream API移植了许多运算符,这些运算符是批处理API中众所周知的,例如map,reduce和join。 此外,它还提供特定于流的操作,例如窗口,拆分和连接。 对用户定义函数的一流支持使自定义应用程序行为的实现变得容易。 DataStream API在Scala和Java中可用。
  3. 对会话和未对齐窗口的支持:大多数流系统都具有某种窗口化的概念,即基于某种时间函数的事件分组。 不幸的是,在许多系统中,这些窗口是硬编码的,并与系统的内部检查点机制连接。 Flink是第一个完全将开窗与容错性脱钩的开源流引擎,允许使用更丰富的窗口形式 ,例如会话。
  4. 一致性,容错性和高可用性: Flink保证出现故障时进行一致的状态更新(通常称为“一次处理”),并在选定的源和接收器之间进行一致的数据移动(例如,在Kafka和HDFS之间进行一致的数据移动) 。 Flink还支持主故障转移,从而消除了任何单点故障。
  5. 低延迟和高吞吐量:我们将Flink的时钟频率设置为每核心每秒150万个事件 ,并且还观察到25毫秒范围内的延迟,包括网络数据改组的作业。 使用调整旋钮,Flink用户可以浏览延迟-吞吐量的权衡,使该系统既适合于高吞吐量数据的摄取和转换,也适合于超低延迟(毫秒级)的应用程序。
  6. 集成: Flink与各种开源系统集成,以进行数据输入和输出(例如HDFS,Kafka,Elasticsearch,HBase等),部署(例如YARN)以及充当其他框架的执行引擎(例如,级联,Apache Beam(又名Google Cloud Dataflow))。 Flink项目本身捆绑了Hadoop MapReduce兼容性层,Storm兼容性层以及用于机器学习和图形处理的库。
  7. 对批处理的支持:在Flink中,批处理是流处理的一种特殊情况,因为有限的数据源只是恰好结束的流。 Flink通过专用的DataSet API和用于机器学习和图形处理的库提供了用于批处理的完整工具集。 此外,Flink包含若干特定于批处理的优化(例如,用于调度,内存管理和查询优化),在批处理用例中匹配甚至超过专用批处理引擎。
  8. 开发人员的生产力和操作简便性: Flink在各种环境中运行。 IDE内的本地执行大大简化了Flink应用程序的开发和调试。 在分布式设置中,Flink可以大规模扩展。 YARN模式允许用户在几秒钟内启动Flink群集。 Flink通过定义良好的REST接口为作业和整个系统的监控指标提供服务。 内置的Web仪表板可显示这些指标,并使对Flink的监视非常方便。

数据基础架构堆栈中的Flink

Flink是与存储无关的流处理框架,因此可与数据存储或代理系统结合使用。 典型的架构模式是将Flink与Apache Kafka结合使用以:

  1. 将数据摄取到其他系统中,例如HDFS,数据库或搜索索引,并创建连续的ETL管道。
  2. 直接在移动数据上执行分析,以创建警报,仪表板或强大的运营应用程序,从而无需提取和ETL。
  3. 通过在事件到达时不断构建
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值