一、Flink介绍
Apache Flink是一个计算框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任务:
-
DataSet API, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。
-
DataStream API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便地对分布式数据流进行各种操作,支持Java和Scala。
-
Table API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。
Flink是一个开源的分布式流式和批处理平台;Flink核心是流式数据流引擎,然后在流式引擎的基础上实现批处理。和spark正好相反,spark核心是批处理引擎,然后在批处理引擎的基础上实现流式处理
二、系统架构
Flink分布式程序包含2个主要的进程:JobManager和TaskManager.当程序运行时,不同的进程就会参与其中,包括Jobmanager、TaskManager和JobClient。
当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执行,然后 TaskManager 将心跳和统计信息汇报给 JobManager。TaskManager 之间以流的形式进行数据的传输。上述三者均为独立的 JVM 进程。
三、安装
下载版本: flink-1.6.1-bin-hadoop26-scala_2.11.tgz
1、local模式
上传安装包到 /opt
解压:
tar -zxvf flink-1.6.1-bin-hadoop26-scala_2.11.tgz
cd flink-1.6.1
启动: ./bin/start-cluster.sh
停止:./bin/stop-cluster.sh
访问web界面:http://hostname:8081
二:Standalone集群部署
环境:
jdk1.8
ssh免密登录(集群内节点之间免密登录)
集群规化:
hadoop01 master(JobManager)
hadoop02 slave/work(TaskManager)
hadoop03 slave/work(TaskManager)
配置文件修改:
1、flink-conf.yaml
jobmanager.rpc.address:hadoop01
2、修改conf/slaves
hadoop02
hadoop03
拷贝到其他节点
scp -r flink-1.6.1 hadoop02:/opt/
scp -r flink-1.6.1 hadoop03:/opt/
启动:在hadoop01(master)节点启动
./bin/start-cluster.sh
访问:hadoop01:8081
集群节点重启及扩容
1.启动jobmanager
如果集群中的jobmanager进程挂了,执行下面命令
bin/jobmanager.sh start
bin/jobmanager.sh stop
2.启动taskmanager
添加新的taskmanager节点或重启taskmanager节点
bin/taskmanager.sh start
bin/taskmanager.sh stop