1 Flink简介
背景介绍
第一代引擎:MR
第二代引擎:Tez
第三代引擎:Spark
第四代引擎:Flink
纯实时计算引擎较少、流批统一引擎没有???
做一个流批统一的计算引擎
定义
Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.
Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。
发展历程
2008,柏林理工大学一个研究性项目Stratosphere,Next Generation Big Data Analytics Platform(目标是建立下一代大数据分析引擎); 2014-04-16,Stratosphere成为Apache孵化项目,从Stratosphere 0.6开始,正式更名为Flink。由Java语言编写; 2014-08-26,Flink 0.6发布; 2014-11-04,Flink 0.7.0发布,介绍了最重要的特性:Streaming API; 2016-03-08,Flink 1.0.0,支持Scala; 2016-08-08,Flink 1.1.0; 2017-02-06,Flink 1.2.0; 2017-11-29,Flink 1.4.0; 2018-05-25,Flink 1.5.0; 2018-08-08,Flink 1.6.0; 2018-11-30,Flink 1.7.0; 2019-02-15,Flink 1.7.2; 2019-04-09,Flink 1.8.0; 2019-07-10,Flink 1.8.1; 2019-09-12,Flink 1.8.2; 2019-08-22,Flink 1.9.0; 2019-10-18,Flink 1.9.1; 2020-02-11,Flink 1.10.0; 2020-05-08,Flink 1.10.1-rc3;
2020-07,Flink 1.11.1;
2019年初,阿里收购flink产品所属公;不久必然会升级到2.x。
为什么选择flink
流式数据更为真实地反映了我们的生活方式
流批计算融合
基于事件进行纯实时计算(连续事件处理)
应用场景:
纯实时计算的指标(实时数仓) --------
监控和风控的也会用到它 ------
===
Event-driven Applications Stream & Batch Analytics Data Pipelines & ETL
由上可知,flink也常用于离线和实时数仓中!!!重温下数仓架构演变!!!
首先我们来看看数仓架构演变(借用阿里云数仓架构)。演变如下图:
离线数仓架构:
Lambda架构:实时和离线计算融于一体。
Kappa架构:Lambda架构的简化版本,去掉其离线部分。
flink认为批次也是实时的特例!!!
2 Flink的安装部署
下载地址:
https://flink.apache.org/downloads.html
部署模式:
提交模式:
- in Session Mode, ===>基于yarn
- in a Per-Job Mode, or ===>基于yarn
- in Application Mode.
====>
- Local Mode
2.1、单机模式
flink的local模式运行在单个jvm中。同时local方便快速测试。
安装方式:
需求:
- Java 1.8.x or higher,
- ssh
1、下载
2、解压
[root@hadoop01 local]# tar -zxvf /home/flink-1.9.1-bin-scala_2.11.tgz -C /usr/local/
[root@hadoop01 local]# cd ./flink-1.9.1/
3、配置环境变量
export FLINK_HOME=/usr/local/flink-1.9.1/
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$KAFKA_HOME/bin:$FLINK_HOME/bin:
4、刷新环境变量
[root@hadoop01 flink-1.9.1]# source /etc/profile
[root@hadoop01 flink-1.9.1]# which flink
5、启动测试
./bin/start-cluster.sh
6、测试:
jps
访问web地址:http://hadoop01:8081
启动流作业:
监控输入数据
[root@hadoop01 flink-1.9.1]# nc -l 6666
lorem ipsum
ipsum ipsum ipsum
bye
启动job
[root@hadoop01 flink-1.9.1]# ./bin/flink run examples/streaming/SocketWindowWordCount.jar --port 6666
监控结果
[root@hadoop01 ~]# tail -f /usr/local/flink-1.9.1/log/flink-*-taskexecutor-*.out
lorem : 1
bye : 1
ipsum : 4
启动批次作业:
[root@hadoop01 flink-1.9.1]# flink run ./examples/batch/WordCount.jar --input /home/words --output /home/2002/out/00
Starting execution of program
Program execution finished
Job with JobID 8b258e1432dde89060c4acbac85f57d4 has finished.
Job Runtime: 3528 ms
web控制台如下图: