Flink

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也常用于离线和实时数仓中!!!重温下数仓架构演变!!!

首先我们来看看数仓架构演变(借用阿里云数仓架构)。演变如下图:


1588960441004.png

离线数仓架构:


1588960483467.png

Lambda架构:实时和离线计算融于一体。


1588960673043.png

Kappa架构:Lambda架构的简化版本,去掉其离线部分。

flink认为批次也是实时的特例!!!

1588960921766.png

2 Flink的安装部署

下载地址:

https://flink.apache.org/downloads.html

部署模式:

1602214558997.png

提交模式:

  • 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
1582910426138.png

访问web地址:http://hadoop01:8081

1582910461986.png

启动流作业:

监控输入数据

[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
1582910932981.png

监控结果

[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控制台如下图:

1589042795331.png

你可能感兴趣的:(Flink)