Flink入门以及简单集群式安装


1. FLINK简述

Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。
流的世界观
流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。
无界数据流:无界数据流有一个开始但是没有结束,它们不会在生成时终止并提供数据,必须连续处理无界流,也就是说必须在获取后立即处理event。对于无界数据流我们无法等待所有数据都到达,因为输入是无界的,并且在任何时间点都不会完成。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取event,以便能够推断结果完整性。
有界数据流:有界数据流有明确定义的开始和结束,可以在执行任何计算之前通过获取所有数据来处理有界流,处理有界流不需要有序获取,因为可以始终对有界数据集进行排序,有界流的处理也称为批处理。

1.1 FLINK架构组成介绍

1.1.1 Flink的整体架构

Flink运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为Flink是用Java和Scala实现的,所以所有组件都会运行在Java虚拟机上。每个组件的职责如下:
作业管理器(JobManager)
控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager所控制执行。JobManager会先接收到要执行的应用程序,这个应用程序会包括:作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有的类、库和其它资源的JAR包。JobManager会把JobGraph转换成一个物理层面的数据流图,这个图被叫做“执行图”(ExecutionGraph),包含了所有可以并发执行的任务。JobManager会向资源管理器(ResourceManager)请求执行任务必要的资源,也就是任务管理器(TaskManager)上的插槽(slot)。一旦它获取到了足够的资源,就会将执行图分发到真正运行它们的TaskManager上。而在运行过程中,JobManager会负责所有需要中央协调的操作,比如说检查点(checkpoints)的协调。
资源管理器(ResourceManager)
主要负责管理任务管理器(TaskManager)的插槽(slot),TaskManger插槽是Flink中定义的处理资源单元。Flink为不同的环境和资源管理工具提供了不同资源管理器,比如YARN、Mesos、K8s,以及standalone部署。当JobManager申请插槽资源时,ResourceManager会将有空闲插槽的TaskManager分配给JobManager。如果ResourceManager没有足够的插槽来满足JobManager的请求,它还可以向资源提供平台发起会话,以提供启动TaskManager进程的容器。另外,ResourceManager还负责终止空闲的TaskManager,释放计算资源。
任务管理器(TaskManager)
Flink中的工作进程。通常在Flink中会有多个TaskManager运行,每一个TaskManager都包含了一定数量的插槽(slots)。插槽的数量限制了TaskManager能够执行的任务数量。启动之后,TaskManager会向资源管理器注册它的插槽;收到资源管理器的指令后,TaskManager就会将一个或者多个插槽提供给JobManager调用。JobManager就可以向插槽分配任务(tasks)来执行了。在执行过程中,一个TaskManager可以跟其它运行同一应用程序的TaskManager交换数据。
分发器(Dispatcher)
可以跨作业运行,它为应用提交提供了REST接口。当一个应用被提交执行时,分发器就会启动并将应用移交给一个JobManager。由于是REST接口,所以Dispatcher可以作为集群的一个HTTP接入点,这样就能够不受防火墙阻挡。Dispatcher也会启动一个Web UI,用来方便地展示和监控作业执行的信息。Dispatcher在架构中可能并不是必需的,这取决于应用提交运行的方式。

1.1.2 任务提交流程

FLink基本的提交流程如下:
在这里插入图片描述

上图是从一个较为高层级的视角,来看应用中各组件的交互协作。如果部署的集群环境不同(例如YARN,Mesos,Kubernetes,standalone等),其中一些步骤可以被省略,或是有些组件会运行在同一个JVM进程中。

1.2 FLINK特点

Flink的主要特性

  1. 事件驱动型:从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作
  2. 流的世界观:不同于spark的批处理,flink采用流的世界观,分为有界流和无界流。
  3. 分层api:Flink提供了三层API。 每个API在简洁性和表达性之间提供了不同的权衡,并且针对不同的用例。
    在这里插入图片描述

1.3 FLINK各个实例通信网络端口

端口名称默认端口说明
jobmanager.rpc.port6123jobmanager的端口
rest.port8081Flink WebUI
historyserver.web.port8082历史服务端口

1.4 中间件版本选取

中间件名称版本号
CentOSCentOS 6.8
Java1.8.0_121
Flinkflink-1.7.2-bin-hadoop27-scala_2.11.tgz
Zookeeper3.4.10
Kafka0.11
Scala2.11
Hadoop2.4.2
mysql5.6.24

2 FLINK部署

2.1 环境准备

本次Flink技术实践采用standalone模式,在VM虚拟机上部署3台服务器。分别是hadoop102、hadoop103、hadoop104

2.1.1 CentOS6.8

CentOS6.8安装过程省略。预先创建用户/用户组zhouchen

2.1.2 关闭防火墙-root

针对CentOS7以下
1.查看防火墙状态
service iptables status
2.停止防火墙
service iptables stop
3.启动防火墙
service iptables start

2.1.3 关闭swap

1.查看swap

[root@Hadoop102 opt]# free
[root@Hadoop102 opt]# cat /proc/vmstat | egrep "dirty|writeback"
[root@Hadoop102 opt]# sysctl -w vm.swappiness=0

2.关闭swap

[root@Hadoop102 opt]# echo "vm.swappiness = 0">> /etc/sysctl.conf
[root@Hadoop102 opt]# swapoff -a

3.检查swap关闭
在这里插入图片描述

2.1.4 Hostname设置

[root@hadoop102 ~]$ hostname -s
hadoop102
[root@hadoop103 ~]$ hostname -s
hadoop103
[root@hadoop104 ~]$ hostname -s
hadoop104

2.1.5 安装jdk1.8

  1. 解压jdk1.8的安装包,并配置JAVA的环境变量
[root@hadoop102 ~]# vi /etc/profile.d/jdk.sh 
#JAVA_HOME
export JAVA_HOME=/opt/java/jdk1.8.0_121
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
  1. 添加环境变量,刷新文件使其生效
[root@hadoop102 ~]$ /etc/profile.d/jdk.sh
  1. 查阅是否安装成功
    在这里插入图片描述

2.1.6 安装mysql

  1. 下载mysql rpm包到/opt/package

  2. 安装mysql服务端

[root@hadoop102 package]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm

查看初始密码:

[root@hadoop102 mysql]# cat /root/.mysql_secret

查看mysql服务状态并启动

[root@hadoop102 package]# service mysqld status
##如果报错Unit mysqld.service could not be found.请查找mysql.server然后复制到/etc/init.d/mysqld
[root@hadoop102 mysql]# cp mysql.server /etc/init.d/mysqld
  1. 安装mysql客户端
[root@Hadoop102 package]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
使用查询到的初始密码登陆客户端
[root@Hadoop102 package]# mysql -uroot -pMabbdrdTaRv0Gywq
修改密码:
mysql> SET PASSWORD=PASSWORD('zhou59420');

2.1.7 修改linux内核配置

  1. 切换到root用户
 vim  /etc/sysctl.conf
  1. 添加配置
#清除cache/buffer
vm.drop_caches=3
#更改虚拟内存大小和能够打开的文件句柄的数量
vm.max_map_count=655360
fs.file-max=655360

在这里插入图片描述

  1. 使配置生效
  sysctl -p

2.2 FLINK安装

2.2.1 环境检查

  1. 检查Java版本,$JAVA_HOME
  2. 检查hadoop版本

2.2.2 standalone模式安装

  1. 解压安装包
    解压缩 flink-1.10.0-bin-scala_2.11.tgz
  2. 修改配置文件
    修改flink/conf/flink-conf.yaml 文件
    在这里插入图片描述

修改conf/slave文件添加另外两台机器(注意不要有空格空行)
在这里插入图片描述

  1. 分发给另外两台机器
  2. 启动flink
    在这里插入图片描述

2.2.3 安装检查

  1. 查看进程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 界面访问
    http://Hadoop102:8081/
    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值