Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams
DT时代,人们对于数据的要求越来越严格,从开始的大数据到现在慢慢转变成快数据,我们很多公司都是基于Hadoop生态搭建自己的数据仓库,将不同源的数据按照一定的周期(时/天等)通过ETL(提取,转换,加载)放到我们的数仓以供分析师使用,但是随着业务发展,我们不得不面对一个事实,我们上述做的都属于批处理,我们的分析师或者我们的业务需要实时的数据,那么在批处理转到流计算的时候,我们会面临很多很多问题,例如低延时、高吞吐、exactly-once、无序问题等等。Storm 实现了低延迟,还做不到高吞吐,也不能在故障发生时准确地处理计算状态;Spark Streaming通过采用微批处理方法实现了高吞吐和容错性,但是牺牲了低延迟和实时处理能力,也不能使窗口与自然时间相匹配,并且表现力欠佳。而flink就是目前为止的最佳答案。
我们在选择一个新的技术框架的时候,首先考虑的是他的应用场景,再牛逼的框架没有应用场景也是一无是处,当然牛逼的框架大多都是基于某一个或者某一类应用场景而产生,而flink主要应用于以下三个场景:
1.事件驱动型应用
2.数据分析型应用
3.数据管道 ETL
事件驱动型应用
什么是事情驱动型应用?
定义:事件驱动型应用是一类具有状态的应用,该应用会根据事件流中的事件触发计算、更新状态或进行外部系统操作。
关键词: 事件 ---->状态---->外部系统
每条数据(事件)触发变化
例如:金融反欺诈,实施推荐,实施规则报警
数据分析型应用
在说这个之前,先说一下什么是分析,我们从事数据分析相关行业,有时候经常忘记分析本身到底是什么,下边是维基百科对于分析的定义
分析是将复杂的话题或事物逐渐拆分的过程,以此来达到对话题更好的理解
看到定义之后,再看我们工作中经常对各种数据按照不同维度拆分来分析数据代表的现象,来更好的理解数据,这是我们做数据分析的本质。
那么定义首先:
数据分析型应用是从原始数据中提取有价值的信息和指标,关键词:原始数据(集)、提取(过滤分析)
它的主要应用在于对数据集进行操作,重在分析
典行的数据分析型应用比如今年的疫情,我们会统计每天每地上传的信息,然后展示在包括支付宝等平台。
那事件驱动型应用和数据分析型应用有何本质区别?
简单总结一下:
数据触发计算会派发新的动作(状态/消息)
数据只是分析不派生新的动作(只是输出结果)
看到过很多大咖分享自己对于数据仓库ETL的看法,自己也做了一些数据仓库的工作,但是从来没有认真总结过,会在下一篇文章总结一下我对ETL的认知,也会谈一下最近新兴起的数据湖的看法。
以上