Flink个人理解
Flink简介
1、Flink是什么
Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。
2、Flink可以做什么
- 可实现有状态的流处理应用程序。它以容错的方式有效地大规模运行这些应用程序。
- 可以对数据集采取以流的形式处理,而区别于hive(mapreduce)和spark的批处理。
2.1、数据处理架构有哪些
数据处理架构分为:事务处理(OLTP)和分析处理(OLAP)两种。
2.1.1、 联机事务处理(OLTP)
On-Line Transaction Processing,一般指高可用的在线系统,DQL次数频繁。
OLTP是传统的关系型数据库的主要应用,主要基本的、日常的事务处理,类似常用的APP(淘宝,天猫对数据库进行频繁的增删改查操作)。
常见的事务处理框架:MySQL、SQLServer、Oracle、PostgreSQL
特点:
- 可以及时的处理输入的数据,并及时的给出应答,响应。
- 可以支持大量的用户进行访问操作。类似常见的App中的大量用户对数据库进行频繁增删改查的操作。
- 遵循ACID,事务
OLTP事务的示例包括:
- 网上银行业务
- 在线购买书籍
- 预订机票
- 发送短信
- 订单输入
- 电话推销员输入电话调查结果
- 呼叫中心工作人员查看和更新客户的详细信息
2.1.2、 联机分析处理(OLAP)
Online Analytical Processing,有时候也叫DSS决策支持系统,通常指数据仓库。
OLAP(在线分析处理) 是许多商业智能(BI) 应用程序背后的技术 。OLAP是一项强大的数据发现技术,包括无限制报告查看功能,复杂的分析计算功能以及预测性“假设情况”(预算,预测)计划。,OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果,多用于领导,上级做分析做决策的依赖。
常见的事务处理框架:Hive、Presto、Kylin、Impala、Sparksql、Druid、Clickhouse,
还有:Hawq、Greeplum等。
3、Flink的特点(为什么使用)
3.1、flink特点
特点:
- 基于流的世界观
- 传统的数据架构是基于有限的数据集的
- 低延迟(Storm也支持)
- 高吞吐,在压力下保持正确(Spark Streaming也支持)
- 时间正确/语义化窗口,操作简单,表现力好
- 事件驱动(Event-Driven)(Flink主要特点)
3.2、flink与Spark Streaming区别
数据模型
- spark 采用 RDD 模型,spark streaming 的 DStream 实际上也就是一组组小批数据 RDD 的集合
- flink 基本数据模型是数据流,以及事件(Event)序列
运行时架构
- spark 是批计算,将 DAG 划分为不同的 stage,一个完成后才可以计算下一个
- flink 是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理
4、Flink程序使用案例WordCount
(1)、对字符串的处理
package com.licx;
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.ReduceFunction;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.datastream.KeyedStream;
import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;
/**
* @Version 1.0
* @Author:lichengxin
* @Date:2020/11/30
* @Package_name:com.licx
*/
public class WordCountWithWord {
public static void main