笨鸟的平凡之路-Flink的安装及测试

一. Flink的下载

安装包下载地址:http://flink.apache.org/downloads.html ,注意选择对应Hadoop的Flink版本下载.
在这里插入图片描述
将下载完的.tgz或.tar包上传到需要安装的节点上.我这里是三台,master01,worker01,worker02.然后解压.

解压

[root@master01 xuyi]# tar xvf ./flink-1.7.2-bin-hadoop26-scala_2.12.tar -C /usr/local

修改权限:

[root@master01 xuyi]# chown -R root:root /usr/local/flink-1.7.2/

修改配置文件

[root@master01 conf]# cd /usr/local/flink-1.7.2/conf
[root@master01 conf]# vi ./masters 
[root@master01 conf]# cat ./masters 
master01:8081
[root@master01 conf]# vi ./slaves 
[root@master01 conf]# cat ./slaves 
worker01
worker02
[root@master01 conf]# vi ./flink-conf.yaml

修改如下:
在这里插入图片描述

拷贝安装包到各节点

[root@master01 local]# cd /usr/local/
[root@master01 local]# scp -r ./flink-1.7.2/ root@worker01:`pwd`
[root@master01 local]# scp -r ./flink-1.7.2/ root@worker02:`pwd`

配置环境变量

配置所有节点Flink的环境变量

[root@master01 local]# vi /etc/profile

修改内容如下:

export FLINK_HOME=/usr/local/flink-1.7.2
export PATH=$PATH:$FLINK_HOME/bin

在这里插入图片描述
使之生效:

[root@master01 local]# source /etc/profile

启动flink

[root@master01 local]# ./flink-1.7.2/bin/start-cluster.sh

jps查看进程会出现StandaloneSessionClusterEntrypoint进程

[root@master01 local]# jps

在这里插入图片描述
去两个slaves节点jps查看进程,会出现TaskManagerRunner进程:
worker01:
在这里插入图片描述
worker02:在这里插入图片描述

WebUI查看

http://master01:8081
在这里插入图片描述


HA高可用版

首先,我们需要知道 Flink 有两种部署的模式,分别是 Standalone 以及 Yarn Cluster 模式。对于 Standalone 来说,Flink 必须依赖于 Zookeeper 来实现 JobManager 的 HA(Zookeeper 已经成为了大部分开源框架 HA 必不可少的模块)。在 Zookeeper 的帮助下,一个 Standalone 的 Flink 集群会同时有多个活着的 JobManager,其中只有一个处于工作状态,其他处于 Standby 状态。当工作中的 JobManager 失去连接后(如宕机或 Crash),Zookeeper 会从 Standby 中选举新的 JobManager 来接管 Flink 集群。

对于 Yarn Cluaster 模式来说,Flink 就要依靠 Yarn 本身来对 JobManager 做 HA 了。其实这里完全是 Yarn 的机制。对于 Yarn Cluster 模式来说,JobManager 和 TaskManager 都是被 Yarn 启动在 Yarn 的 Container 中。此时的 JobManager,其实应该称之为 Flink Application Master。也就说它的故障恢复,就完全依靠着 Yarn 中的 ResourceManager(和 MapReduce 的 AppMaster 一样)。由于完全依赖了 Yarn,因此不同版本的 Yarn 可能会有细微的差异。这里不再做深究。

1) 修改配置文件
修改flink-conf.yaml,HA模式下,jobmanager不需要指定,在master file中配置,由zookeeper选出leader与standby。

[root@master01 local]# vi ./flink-1.7.2/conf/flink-conf.yaml 
# jobmanager.rpc.address:  master01
high-availability: zookeeper                             #指定高可用模式(必须)
high-availability.zookeeper.quorum: master01:2181,master02:2181,worker01:2181  #ZooKeeper仲裁是ZooKeeper服务器的复制组,它提供分布式协调服务(必须)
high-availability.storageDir: hdfs:///flink/ha/       #JobManager元数据保存在文件系统storageDir中,只有指向此状态的指针存储在ZooKeeper中(必须)
high-availability.zookeeper.path.root: /flink         #根ZooKeeper节点,在该节点下放置所有集群节点(推荐) 
high-availability.cluster-id: /flinkCluster           #自定义集群(推荐)
state.backend: filesystem
state.checkpoints.dir: hdfs:///flink/checkpoints
state.savepoints.dir: hdfs:///flink/checkpoints

在这里插入图片描述
修改conf/zoo.cfg

[root@master01 local]# vi  ./flink-1.7.2/conf/zoo.cfg

# ZooKeeper quorum peers
server.1=master01:2888:3888
server.2=master02:2888:3888
server.3=worker01:2888:3888

修改内容如下:
在这里插入图片描述

修改conf/masters

[root@master01 local]# vi ./flink-1.7.2/conf/masters 
[root@master01 local]# cat ./flink-1.7.2/conf/masters 
master01:8081
worker01:8081

修改slaves

[root@master01 local]# vi ./flink-1.7.2/conf/slaves 
[root@master01 local]# cat ./flink-1.7.2/conf/slaves 
worker01
worker02

ps:同步配置文件conf到各节点,需要先将其它节点的conf目录删除,否则覆盖不了

[root@master01 local]# scp -r ./flink-1.7.2/conf/ root@worker01:/usr/local/flink-1.7.2/conf/ 
[root@master01 local]# scp -r ./flink-1.7.2/conf/ root@worker02:/usr/local/flink-1.7.2/conf/

2) 启动HA
由于我使用的是CDH版的Zookeeper,所以去集群重新启动所有组件.(测试环境中也可以用Flink自带的start-zookeeper-quorum.sh),启动dfs ,再启动flink

[root@master01 bin]# ./start-cluster.sh
Starting HA cluster with 2 masters.
Starting standalonesession daemon on host worker01.
Starting standalonesession daemon on host master01.
Starting taskexecutor daemon on host worker01.
Starting taskexecutor daemon on host worker02.

然后去WEBUI界面查看: http://master01:8081/
在这里插入图片描述
同样hdfs上也会创建flink的目录:
在这里插入图片描述


Yarn Cluster模式

Yarn 和 Flink 的关系
在这里插入图片描述
Flink 与 Yarn 的关系与 MapReduce 和 Yarn 的关系是一样的。Flink 通过 Yarn 的接口实现了自己的 App Master。当在 Yarn 中部署了 Flink,Yarn 就会用自己的 Container 来启动 Flink 的 JobManager(也就是 App Master)和 TaskManager。
启动新的Flink YARN会话时,客户端首先检查所请求的资源(容器和内存)是否可用。之后,它将包含Flink和配置的jar上传到HDFS(步骤1)。

客户端的下一步是请求(步骤2)YARN容器以启动ApplicationMaster(步骤3)。由于客户端将配置和jar文件注册为容器的资源,因此在该特定机器上运行的YARN的NodeManager将负责准备容器(例如,下载文件)。完成后,将启动ApplicationMaster(AM)。

该JobManager和AM在同一容器中运行。一旦它们成功启动,AM就知道JobManager(它自己的主机)的地址。它正在为TaskManagers生成一个新的Flink配置文件(以便它们可以连接到JobManager)。该文件也上传到HDFS。此外,AM容器还提供Flink的Web界面。YARN代码分配的所有端口都是临时端口。这允许用户并行执行多个Flink YARN会话。

之后,AM开始为Flink的TaskManagers分配容器,这将从HDFS下载jar文件和修改后的配置。完成这些步骤后,即可建立Flink并准备接受作业。

修改环境变量
vim etc/hadoop/yarn-site.xml
添加:

  <property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
  </property>

修改全局变量/etc/profile,必须将环境变量设置为读取YARN和HDFS配置:
添加:

export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH-5.11.2-1.cdh5.11.2.p0.4/lib/hadoop/etc/hadoop

在YARN上启动一个Flink主要有两种方式:
(1)、启动一个YARN session(Start a long-running Flink cluster on YARN);
(2)、直接在YARN上提交运行Flink作业(Run a Flink job on YARN)

第一种方式:YARN session
这种模式下会启动yarn session,并且会启动Flink的两个必要服务:JobManager和TaskManagers,然后你可以向集群提交作业。同一个Session中可以提交多个Flink作业。需要注意的是,这种模式下Hadoop的版本至少是2.2,而且必须安装了HDFS(因为启动YARN session的时候会向HDFS上提交相关的jar文件和配置文件)
通过./bin/yarn-session.sh脚本启动YARN Session

# yarn-session.sh -d -s 2 -tm 800 -n 2
[root@master01 hadoop]# yarn-session.sh -d -s 2 -tm 800 -n 2

在这里插入图片描述
Flink部署到Yarn Cluster后,会显示Job Manager的连接细节信息。
Flink on Yarn会覆盖下面几个参数,如果不希望改变配置文件中的参数,可以动态的通过-D选项指定,如 -Dfs.overwrite-files=true -Dtaskmanager.network.numberOfBuffers=16368

jobmanager.rpc.address:因为JobManager会经常分配到不同的机器上

taskmanager.tmp.dirs:使用Yarn提供的tmp目录

parallelism.default:如果有指定slot个数的情况下

yarn-session.sh会挂起进程,所以可以通过在终端使用CTRL+C或输入stop停止yarn-session。

如果不希望Flink Yarn client长期运行,Flink提供了一种detached YARN session,启动时候加上参数-d或—detached

yarn-session.sh启动命令参数如下:
在这里插入图片描述

在上面的命令成功后,我们就可以在 Yarn Application 页面看到 Flink 的纪录。如下图:
在这里插入图片描述
利用yarn-session启动任务:

[root@master01 flink-1.7.2]# ./bin/flink run examples/batch/WordCount.jar

在这里插入图片描述
停止当前任务:
1:CTRL+C
2:stop命令
3:yarn application -kill application_1563356707873_0001

第二种方式:在YARN上运行一个Flink作业
上面的YARN session是在Hadoop YARN环境下启动一个Flink cluster集群,里面的资源是可以共享给其他的Flink作业。我们还可以在YARN上启动一个Flink作业,这里我们还是使用./bin/flink,但是不需要事先启动YARN session:

[root@master01 flink-1.7.2]#  ./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar

以上命令在参数前加上y前缀,-yn表示TaskManager个数。

在这个模式下,同样可以使用-m yarn-cluster提交一个"运行后即焚"的detached yarn(-yd)作业到yarn cluster。
在控制台中可以看到wordCount.jar计算出来的任务结果:
在这里插入图片描述
停止yarn cluster

[root@master01 flink-1.7.2]# yarn application -kill application_1563356707873_0002

注意:
在创建集群的时候,集群的配置参数就写好了,但是往往因为业务需要,要更改一些配置参数,这个时候可以不必因为一个实例的提交而修改conf/flink-conf.yaml;
可以通过:-D Dynamic properties
来覆盖原有的配置信息:比如:
-Dfs.overwrite-files=true -Dtaskmanager.network.numberOfBuffers=16368

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值