Apache Flink

超越Storm,SparkStreaming——Flink如何实现有状态的计算

ぐ巨炮叔叔 提交于 2019-11-29 04:45:34
流式计算分为无状态和有状态两种情况。无状态计算观察每个独立的事件,Storm就是无状态的计算框架,每一条消息来了以后和前后都没有关系,一条是一条。比如我们接收电力系统传感器的数据,当电压超过240v就报警,这就是无状态的数据。但是如果我们需要同时判断多个电压,比如三相电路,我们判断三相电都高于某个值,那么就需要将状态保存,计算。因为这三条记录是分别发送过来的。 Storm需要自己实现有状态的计算,比如借助于自定义的内存变量或者redis等系统,保证低延迟的情况下自己去判断实现有状态的计算,但是Flink就不需要这样,而且作为新一代的流处理系统,Flink非常重视。 一致性 其实就是消息传递的正确性。在流处理中,一致性分为 3 个级别。 at-most-once:最多一次,可能会丢失。 at-least-once:最少一次,可能会重复,而计算的时候可能就会多次运算影响结果。 exactly-once:恰好保证一次,这样得到的结果是最准确的。 最先保证 exactly-once 的系统(Storm Trident 和 Spark Streaming),但是在性能和表现力这两个方面付出了很大的代价。为了保证 exactly-once,这些系统无法单独地对每条记录运用应用逻辑,而是同时处理多条(一批)记录,保证对每一批的处理要么全部成功,要么全部失败。这就导致在得到结果前,

Flink 源码解析 —— TaskManager 处理 SubmitJob 的过程

一个人想着一个人 提交于 2019-11-29 04:45:24
TaskManager 处理 SubmitJob 的过程 <!--more--> https://t.zsxq.com/eu7mQZj 博客 1、 Flink 从0到1学习 —— Apache Flink 介绍 2、 Flink 从0到1学习 —— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 3、 Flink 从0到1学习 —— Flink 配置文件详解 4、 Flink 从0到1学习 —— Data Source 介绍 5、 Flink 从0到1学习 —— 如何自定义 Data Source ? 6、 Flink 从0到1学习 —— Data Sink 介绍 7、 Flink 从0到1学习 —— 如何自定义 Data Sink ? 8、 Flink 从0到1学习 —— Flink Data transformation(转换) 9、 Flink 从0到1学习 —— 介绍 Flink 中的 Stream Windows 10、 Flink 从0到1学习 —— Flink 中的几种 Time 详解 11、 Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 ElasticSearch 12、 Flink 从0到1学习 —— Flink 项目如何运行? 13、 Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到

OneAPM文章

心已入冬 提交于 2019-11-29 04:19:16
掐指一算,从 OneAPM 离职也快一个月了,在 OneAPM 工作的种种,仿佛还像是在昨天。细数两年的工作经历,我很庆幸在恰当的时间点和这么一群有激情有活力的人共事。那么,是时候总结一下我在 OneAPM 做的牛(cai)逼(ji)事情了。 大家好,今天由我来分享一下,我在上家公司做的 Ai 和 告警 相关的一些内容。 首先,我先简单介绍一下,今天我要分享的两个项目: Ai 是 OneAPM 服务器端应用性能监控分析程序,它主要是能收集Java、CSharp、Python等偏后端语言的系统的一些指标数据。然后分析出调用 Trace 和完整的调用拓扑图,还有一些其他图表数据的展示。 告警系统原先作为一个 Ai 系统的子模块,用的是流式计算框架 Flink,后面不能满足对外交付和业务功能需求。我们就重新设计开发了纯粹的CEP计算引擎,依托于此在Ai上构建了新的告警系统,然后服务化拆分成独立的告警系统,并接入了其他类似Ai的业务线。 这次分享,一是我对以前2年工作的整理和思考,二也是和大家交流学习。 对于 Ai,我不属于它的主要研发,我只是在上面剥离开发了现有的告警系统。所以我就讲讲我接触过的架构部分的演进。本身,就功能部分,其实没有东西。 我在说告警的时候会说的比较细一些。 我是15年年底入职OneAPM,17年9月初离职加入咱们这个团队。这期间Ai伴随着业务的需求

Flink-1.8.1踩坑记录 - HDFS的scheme不支持问题

半腔热情 提交于 2019-11-29 04:03:27
2019-09-02 18:42:01,651 INFO org.apache.flink.runtime.executiongraph.ExecutionGraph - Job DimensionState (1b47949b019929e25b8bee89539f9f1d) switched from state FAILING to FAILED. java.lang.RuntimeException: Error while creating FileSystem when initializing the state of the BucketingSink. at org.apache.flink.streaming.connectors.fs.bucketing.BucketingSink.initializeState(BucketingSink.java:379) at org.apache.flink.streaming.util.functions.StreamingFunctionUtils.tryRestoreFunction(StreamingFunctionUtils.java:178) at org.apache.flink.streaming.util.functions.StreamingFunctionUtils

Flink 源码解析 —— Flink TaskManager 有什么作用?

北城余情 提交于 2019-11-29 03:32:20
TaskManager 有什么作用 <!--more--> https://t.zsxq.com/RZbu7yN 博客 1、 Flink 从0到1学习 —— Apache Flink 介绍 2、 Flink 从0到1学习 —— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 3、 Flink 从0到1学习 —— Flink 配置文件详解 4、 Flink 从0到1学习 —— Data Source 介绍 5、 Flink 从0到1学习 —— 如何自定义 Data Source ? 6、 Flink 从0到1学习 —— Data Sink 介绍 7、 Flink 从0到1学习 —— 如何自定义 Data Sink ? 8、 Flink 从0到1学习 —— Flink Data transformation(转换) 9、 Flink 从0到1学习 —— 介绍 Flink 中的 Stream Windows 10、 Flink 从0到1学习 —— Flink 中的几种 Time 详解 11、 Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 ElasticSearch 12、 Flink 从0到1学习 —— Flink 项目如何运行? 13、 Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 Kafka 14、

Apache Flink 零基础入门(八)Flink支持哪些数据类型

别说谁变了你拦得住时间么 提交于 2019-11-28 22:36:00
Flink有7种数据类型分别是: Java Tuples and Scala Case Classes Java POJOs Primitive Types Regular Classes Values Hadoop Writables Special Types Tuple Tuple是一个组合数据类型,包含了固定数量的不同类别的字段。范围可以从Tuple0到Tuple25,表示包含的字段数量个数。 POJO java和scala中定义POJO作用是一样的,POJO的类要满足以下条件: 必须用public修饰 必须要有一个public无参构造函数 所有字段要么是public的,要么必须要有setter和getter方法 类型必须是Flink支持的 Values 需要手动序列化和反序列化 Hadoop Writeables 必须是实现了org.apache.hadoop.Writable的类型。 来源: https://my.oschina.net/duanvincent/blog/3099462

Apache Flink 零基础入门(八)Flink中指定算子的方式

*爱你&永不变心* 提交于 2019-11-28 22:30:02
我们之前在使用flatMap时,传了一个new FlatMapFunction匿名内部类。而这仅仅是其中的一种方式。 方式一:实现MapFunction接口 最简单的方式就是实现一个MapFunction接口,例如: text.flatMap(new MyFlatMapFunction()).keyBy(new KeySelector<WC, Object>() { @Override public Object getKey(WC value) throws Exception { return value.word; } }).timeWindow(Time.seconds(5)).sum("count").print().setParallelism(1); public static class MyFlatMapFunction implements FlatMapFunction<String, WC> { @Override public void flatMap(String value, Collector<WC> out) throws Exception { String[] tokens = value.toLowerCase().split(","); for (String token : tokens) { if (token.length() > 0

如何在 Flink 1.9 中使用 Hive?

久未见 提交于 2019-11-28 22:26:28
Apache Flink 从 1.9.0 版本开始增加了与 Hive 集成的功能,用户可以通过 Flink 来访问 Hive 的元数据,以及读写 Hive 中的表。本文将主要从项目的设计架构、最新进展、使用说明等方面来介绍这一功能。 Flink on Hive 介绍 SQL 是大数据领域中的重要应用场景,为了完善 Flink 的生态,发掘 Flink 在批处理方面的潜力,我们决定增强 FlinkSQL 的功能,从而让用户能够通过 Flink 完成更多的任务。 Hive 是大数据领域最早出现的 SQL 引擎,发展至今有着丰富的功能和广泛的用户基础。之后出现的 SQL 引擎,如 Spark SQL、Impala 等,都在一定程度上提供了与 Hive 集成的功能,从而方便用户使用现有的数据仓库、进行作业迁移等。因此我们认为提供与 Hive 交互的能力对于 FlinkSQL 也是非常重要的。 设计架构 与 Hive 集成主要包含了元数据和实际表数据的访问,因此我们会从这两方面介绍一下该项目的架构。 1.元数据 为了访问外部系统的元数据,Flink 提供了 ExternalCatalog 的概念。但是目前 ExternalCatalog 的定义非常不完整,基本处于不可用的状态。因此,我们提出了一套全新的 Catalog 接口来取代现有的 ExternalCatalog。新的 Catalog

Apache Flink 零基础入门(七)Flink中keyBy三种方式指定key

别来无恙 提交于 2019-11-28 22:25:04
keyBy 如何指定key 不管是stream还是batch处理,都有一个keyBy(stream)和groupBy(batch)操作。那么该如何指定key? Some transformations (join, coGroup, keyBy, groupBy) require that a key be defined on a collection of elements. Other transformations (Reduce, GroupReduce, Aggregate, Windows) allow data being grouped on a key before they are applied. 一些算子(transformations)例如join,coGroup,keyBy,groupBy往往需要定义一个key。其他的算子例如Reduce, GroupReduce, Aggregate, Windows,也允许数据按照key进行分组。 DataSet DataSet<...> input = // [...] DataSet<...> reduced = input .groupBy(/*define key here*/) .reduceGroup(/*do something*/); DataStream DataStream<...> input

修改代码150万行!与 Blink 合并后的 Apache Flink 1.9.0 究竟有哪些重大变更?

故事扮演 提交于 2019-11-28 22:22:41
8月22日,Apache Flink 1.9.0 正式发布,早在今年1月,阿里便宣布将内部过去几年打磨的大数据处理引擎Blink进行开源并向 Apache Flink 贡献代码。当前 Flink 1.9.0是阿里内部版本 Blink 合并入 Flink 后的首次发版,修改代码150万行,此次发版不仅在结构上有重大变更,在功能特性上也更加强大与完善。本文将为大家介绍 Flink 1.9.0 有哪些重大变更与新增功能特性。 在此先简单回顾一下阿里巴巴 Blink 开源的部分要点: Blink 开源的内容主要是阿里巴巴基于开源 Flink 引擎,依托集团内部业务,在流计算和批处理上积累的大量新功能、性能优化、稳定性提升等核心代码 Blink 以分支的形式开源,即开源后会成为 Apache Flink 项目下的一个分支。 Blink 开源的目标不是希望成为另一个活跃的项目,而是将 Flink 做的更好。通过开源的方式让大家了解所有 Blink 的实现细节,提高 Blink 功能merge进入 Flink 的效率,与社区协作更高效。 半年的时间过去了,随着 Flink 1.9.0 版本的发布,在此我们可以骄傲的宣布:Blink 团队已经实现了之前的诺言!尽管不是所有功能都顺利 merge 回了社区,但是在我们和社区的共同努力下,Flink 正在朝着它最初的梦想大踏步的迈进。 先和大家分享几个