Flink on Yarn部署

环境信息:

Hadoop版本:2.6.0

Flink版本:1.1.2

 

快速部署Flink on Yarn环境:

比如启动一个有4个TaskManager(每个节点都有4GB堆内存)的Yarn会话:

1.      下载Flink的软件包,如flink-1.1.2-bin-hadoop26-scala_2.11.tgz(因为我的Hadoop集群版本为2.6.0,Flink的Binary包是包含Yarn客户端的)

 

2.      解压缩

su - hadoop

tar -zxvf flink-1.1.2-bin-hadoop26-scala_2.11.tgz

ln -s flink-1.1.2 flink

 

3.      启动Flink Yarn Session

cd flink

bin/yarn-session.sh -n 4 -jm 1024 -tm 4096 -s 32

 

对参数说明:

-n,--Container 指YARN container分配的个数(即TaskManagers的个数)

-jm,--jobManagerMemory 指JobManager Containe的内存大小,单位为MB

-tm,--taskManagerMemory 指每个TaskManagerContainer的内存大小,单位为MB

-s 指每个TaskManager的slot个数。

 

执行上面命令来分配 4个 TaskManager,每个都拥有 4GB 的内存和 32 个 slot,同时会请求启动 5 个容器,因为对于 ApplicationMaster 和 JobManager 还需要一个额外的容器。

 

 

注:

A.     Flink的JobManager和TaskManager的内存大小不要小于YARNContainer的最小值(yarn.scheduler.minimum-allocation-mb,默认值为1024MB)。

B.     请注意客户端需要提前设置环境变量 YARN_CONF_DIR 或 HADOOP_CONF_DIR,用来读取 YARN 和 HDFS 配置。

 

 

 

启动的日志中会连接Yarn的ResourceManager,如下:

org.apache.flink.yarn.YarnClusterDescriptor-     Using values:

org.apache.flink.yarn.YarnClusterDescriptor-        TaskManager count = 4

org.apache.flink.yarn.YarnClusterDescriptor-        JobManager memory = 1024

org.apache.flink.yarn.YarnClusterDescriptor-        TaskManager memory = 4096

org.apache.hadoop.yarn.client.RMProxy       - Connecting to ResourceManager at /192.168.1.128:9080

   这里省略将Flink的配置文件和Jar等上传到

hdfs://gpmaster:9000/user/hadoop/.flink/application_1474521395841_0004/目录下的过程

org.apache.flink.yarn.YarnClusterDescriptor - Submitting application master application_1474521395841_0004

 

org.apache.hadoop.yarn.client.api.impl.YarnClientImpl -Submitted application application_1474521395841_0004

 

org.apache.flink.yarn.YarnClusterDescriptor- Waiting for the cluster to be allocated

org.apache.flink.yarn.YarnClusterDescriptor- Deploying cluster, current state ACCEPTED

org.apache.flink.yarn.YarnClusterDescriptor - YARN application has been deployed successfully.

Flink JobManageris now running on 192.168.1.128:17642

JobManager Web Interface: http://gpmaster:8088/proxy/application_1474521395841_0004/

org.apache.flink.yarn.YarnClusterClient- Starting client actor system.

akka.event.slf4j.Slf4jLogger- Slf4jLogger started

Remoting - Starting remoting

Remoting - Remoting started; listening on addresses :[akka.tcp://flink@192.168.1.128:18282]

org.apache.flink.yarn.YarnClusterClient - Start application client.

org.apache.flink.yarn.ApplicationClient - Notification about new leader address akka.tcp://flink@192.168.1.128:17642/user/jobmanagerwith session ID null.

org.apache.flink.yarn.ApplicationClient - Received address of new leader akka.tcp://flink@192.168.1.128:17642/user/jobmanager with sessionID null.

 

org.apache.flink.yarn.ApplicationClient - Disconnect from JobManager null.

org.apache.flink.yarn.ApplicationClient - Trying to register at JobManager akka.tcp://flink@192.168.1.128:17642/user/jobmanager.

org.apache.flink.yarn.ApplicationClient - Successfully registered at the ResourceManager using JobManagerActor[akka.tcp://flink@192.168.1.128:17642/user/jobmanager#-1966299512]

 

Number of connected TaskManagers changed to 1. Slots available: 32

Number of connected TaskManagers changed to 2. Slots available: 64

Number of connected TaskManagers changed to 4. Slots available: 128

 

此时的Flink YARN客户端会一直运行,不会退出。如果你希望放到后台运行,那么可以使用-d或--detached参数,即:

bin/yarn-session.sh -d -n 4 -jm 1024 -tm 4096

在这种情况下,Flink YARN 客户端只会提交 Flink 到集群中然后关闭自己。注意在这种情况下,不能像上面这样停止 YARN 会话了,必须手动停止,如下面日志中提示的内容:

yarn application -kill application_1474521395841_0008

 

 

Flink YARN客户端以detached模式启动,我们也可以从这种启动方式的日志中查看到如下内容:

org.apache.flink.yarn.cli.FlinkYarnSessionCli - The Flink YARN client has been started in detached mode.In order to stop Flink on YARN, use the following command or a YARN web interface to stop it:

yarn application -kill application_1474521395841_0008

Please also note that the temporary files of the YARN session in hdfs://gpmaster:9000/user/hadoop/.flink/application_1474521395841_0008 will not be removed.

 

既然Flink on Yarn模式启动了,下面我们查看一下相关的进程。

在Hadoop的ResourceManager节点查看进程:

[hadoop@gpmaster~]$ jps

9062 YarnTaskManager

8872 FlinkYarnSessionCli

8985 YarnApplicationMasterRunner

9196 Jps

5325 ResourceManager

4990 NameNode

5086 DataNode

5423 NodeManager

 

在Hadoop的NodeManager节点查看进程:

[hadoop@gpseg~]$ jps

6208 YarnTaskManager

4336 DataNode

6327 Jps

4441 NodeManager

 

 

4.      运行Flink的example实例

上面我们已经基于Yarn启动了Flink,我们来测试一个例子:

[hadoop@gpmaster flink]$ bin/flink run ./examples/batch/WordCount.jar

返回的结果为:

(action,1)

(after,1)

(against,1)

(and,12)

(arms,1)

(arrows,1)

(awry,1)

(ay,1)

(bare,1)

(be,4)

……

 

使用 run 操作来提交一个任务到 YARN。客户端自己就能确定 JobManager 的地址。在遇到罕见的问题时,你可以使用 -m 参数传入 JobManager 的地址。JobManager 的地址可以在 YARN 控制台找到。

 

5.      在YARN上直接运行单个Flink任务

上面介绍了在 Hadoop YARN 环境中启动一个 Flink 集群。另外,也可以在 YARN 中启动只执行单个任务的 Flink。请注意该客户端需要提供 -yn 参数值(TaskManager 的数量)。

这里不需要先启动Flink服务后,再运行Flink程序。

[hadoop@gpmaster flink]$ bin/flink run -m yarn-cluster -yn2 -yjm 1024 -ytm 1024 ./examples/batch/WordCount.jar

输出结果为:

(action,1)

(after,1)

(against,1)

(and,12)

(arms,1)

(arrows,1)

(awry,1)

(ay,1)

(bare,1)

(be,4)

……

 

相关参数说明:

-m,--jobmanager <host:port> 指需要连接的JobManager地址

-yn,--yarncontainer 指分配的YARN container个数(等于TaskManagers个数)

-yjm,--yarnjobManagerMemory 指JobManager Container的内存大小,单位为MB

-ytm,--yarntaskManagerMemory 指每个TaskManagerContainer的内存大小,单位为MB

可以看到对于yarn-cluster模式来说,这些选项都带了一个 y 或 yarn (长参数选项)的前缀。

 

注:通过为每个任务设置不同的环境变量 FLINK_CONF_DIR,可以为每个任务使用不同的配置目录。从 Flink 分发包中复制 conf 目录,然后修改配置,例如,每个任务不同的日志设置。

 

6.      Flink YARN会话

YARN 是一个集群资源管理框架。它允许在一个集群之上运行多种分布式应用。Flink 与其他应用程序一同运行在 YARN 之上。如果用户已经安装 YARN,就不需要安装其他东西了。

 

上面的操作中,我们在YARN集群中启动了一个Flink会话,此会话会启动所有需要的 Flink 服务(JobManager 和 TaskManager),因此可以提交程序到集群中。注意每个会话都可以运行多个程序。

 

Flink YARN会话启动时,系统会使用 conf/flink-config.yaml 中的配置。

 

Flink on YARN 会覆盖这些配置参数 jobmanager.rpc.address(因为JobManager 一直被分配在不同的机器上),taskmanager.tmp.dirs(我们使用 YARN 提供了的 tmp 目录)和 parallelism.default(如果指定了 slot 数目)。

 

如果你不想通过修改配置文件的方法来设置配置参数,你可以通过 -D 标记传入动态属性。所以你可以这样传递参数,如下:

-Dfs.overwrite-files=true-Dtaskmanager.network.numberOfBuffers=16368

 

一旦 Flink 在 YARN 集群中部署了,它会显示 JobManager 连接的详细信息。

要停止 YARN 会话,可以通过结束 unix 进程(使用 CTRL+C)或者通过在客户端中输入'stop'。

 

7.      Flink on YARN的恢复机制

Flink的YARN客户端可以通过参数来控制容器出现故障情况下的行为,这些参数定义在conf/flink-conf.yaml来设置,当然也可以通过启动YARN会话时通过-D参数进行设置。

 

yarn.reallocate-failed:该参数控制了 Flink 是否该重新分配失败的 TaskManager容器。默认:true。

 

yarn.maximum-failed-containers:ApplicationMaster能接受最多的失败容器的数量,直到 YARN 会话失败。默认:初始请求的 TaskManager 个数(-n)。

 

yarn.application-attempts:ApplicationMaster(以及它的TaskManager 容器)的尝试次数。默认值为 1,当 ApplicationMaster 失败了,整个 YARN 会话也会失败。可以通过设置更大的值来更改 YARN 重启ApplicationMaster 的次数。

 

8.      Flink on YARN内部实现


YARN 客户端需要访问 Hadoop 配置,从而连接 YARN 资源管理器和 HDFS。可以使用下面的策略来决定 Hadoop 配置:

  1. 测试 YARN_CONF_DIR, HADOOP_CONF_DIR 或 HADOOP_CONF_PATH 环境变量是否设置了(按该顺序测试)。如果它们中有一个被设置了,那么它们就会用来读取配置。
  2. 如果上面的策略失败了(如果正确安装了 YARN 的话,这不应该会发生),客户端会使用 HADOOP_HOME 环境变量。如果该变量设置了,客户端会尝试访问 $HADOOP_HOME/etc/hadoop (Hadoop 2) 和 $HADOOP_HOME/conf(Hadoop 1)。

当启动一个新的 Flink YARN Client会话,客户端首先会检查所请求的资源(容器和内存)是否可用。之后,它会上传包含了 Flink 配置和 jar文件到 HDFS(步骤 1)。

 

客户端的下一步是请求(步骤 2)一个 YARN 容器启动 ApplicationMaster (步骤 3)。因为客户端将配置和jar 文件作为容器的资源注册了,所以运行在特定机器上的 YARN 的 NodeManager 会负责准备容器(例如,下载文件)。一旦这些完成了,ApplicationMaster (AM) 就启动了。

 

JobManager 和 AM 运行在同一个容器中。一旦它们成功地启动了,AM 知道 JobManager 的地址(它自己)。它会为 TaskManager 生成一个新的 Flink 配置文件(这样它们才能连上 JobManager)。该文件也同样会上传到 HDFS。另外,AM 容器同时提供了 Flink 的 Web 界面服务。Flink 用来提供服务的端口是由用户 + 应用程序 id 作为偏移配置的。这使得用户能够并行执行多个 Flink YARN 会话。

 

之后,AM 开始为 Flink 的 TaskManager 分配容器,这会从 HDFS 下载 jar 文件和修改过的配置文件。一旦这些步骤完成了,Flink 就安装完成并准备接受任务了。

### 回答1: Flink on Yarn 的安装部署包括以下步骤: 1. 安装 Hadoop 和 Yarn,并确保它们正常运行。 2. 下载 Flink 的 binary release 或者源码编译。 3. 配置 flink-conf.yaml 文件,设置 yarn 集群的相关参数。 4. 启动 Flink on yarn,使用命令: "./bin/yarn-session.sh -n <number of task managers> -jm <jobmanager memory> -tm <taskmanager memory>" 5. 在 Flink web UI 中检查集群状态。 注意:以上步骤仅是大致的安装流程,详细的配置参数和步骤可以参考 Flink 官方文档。 ### 回答2: Flink on YARN是一种分布式运行模式,可以在YARN(Hadoop的资源管理器)上运行Flink作业。下面是安装和部署Flink on YARN的步骤。 1. 准备环境:首先,需要确保所有节点都运行着相同的Hadoop和Flink版本。在所有节点上安装好Hadoop和Flink,并设置好JAVA_HOME、HADOOP_HOME和FLINK_HOME环境变量。 2. 配置YARN:在Hadoop集群上,需要配置YARN以支持Flink on YARN。在yarn-site.xml文件中,需要设置一些参数,如yarn.nodemanager.resource.memory-mb、yarn.scheduler.minimum-allocation-mb和yarn.scheduler.maximum-allocation-mb等,这些参数决定了YARN可以分配的资源。 3. 配置Flink:在Flink的conf/flink-conf.yaml文件中,需要设置一些参数,如jobmanager.rpc.address、jobmanager.rpc.port、taskmanager.memory.process.size和yarn.application-name等,这些参数决定了Flink on YARN可以使用的资源和配置。 4. 部署Flink on YARN:可以使用yarn-session.sh脚本来启动Flink on YARN。首先,需要在Hadoop集群上启动一个Flink集群,然后运行yarn-session.sh脚本,该脚本会向YARN提交一个作业,并启动Flink on YARN会话。可以使用以下命令启动Flink on YARN: ``` ./bin/yarn-session.sh -n <num_task_managers> -tm <tm_memory> -s <slots> -d ``` 其中,num_task_managers指定了需要启动多少个TaskManager实例,tm_memory指定每个TaskManager实例可用的内存,slots指定每个TaskManager实例可以运行的任务数,-d表示该会话将在后台运行。 5. 运行Flink on YARN作业:在Flink on YARN会话中,可以使用Flink命令行工具或Web UI提交和管理作业。可以使用以下命令提交Flink作业: ``` ./bin/flink run -m yarn-cluster -ynm <job_name> <jar_file> <program_args> ``` 其中,-m yarn-cluster指定了作业管理器运行在YARN集群上,-ynm指定作业名称,jar_file指定要运行的JAR文件,program_args指定该程序的参数。作业将会被提交到YARN集群,并由Flink on YARN管理器分配任务并运行。 以上就是部署Flink on YARN的步骤,通过这种方式,可以更好地利用Hadoop集群的计算资源,以及Flink的高性能计算能力。同时,也可以通过管理器的监控和管理功能,更加方便地调试和管理Flink应用。 ### 回答3: Apache Flink是一个流处理引擎,可以在大数据环境中进行流式数据处理,支持高容错性和高吞吐量。而Apache Hadoop YARNApache Hadoop生态系统中的资源管理器,可用于管理计算资源。 Flink on YARN是将Flink集成到YARN中,以便更好地管理Flink作业的资源和调度。下面我将介绍如何安装和部署Flink on YARN。 首先,我们需要准备以下环境: 1. 安装Hadoop(版本必须与Flink相同)。 2. 在Flink官网上下载Flink二进制文件。 接下来,我们将进行以下步骤: 1. 将Flink二进制文件复制到YARN节点上。 2. 编辑Flinkyarn-site.xml文件。该文件位于Flink/conf目录下。在文件中,我们需要配置以下属性: a. yarn.application.classpath:指定Flink作业所需的依赖项。 b. yarn.application-attempts:指定Flink作业的重试次数。 c. yarn.resourcemanager.scheduler.address:指定YARNResourceManager的地址。 3. 启动Flink on YARN。输入以下命令即可启动: ./bin/yarn-session.sh -n <Number of TaskManager> -jm <Job Manager Memory> -tm <TaskManager Memory> 其中,-n指定TaskManager数量,-jm指定JobManager内存,-tm指定TaskManager内存。 4.使用Flink on YARN提交作业。输入以下命令即可提交作业: ./bin/flink run -m yarn-cluster <Flink Pipeline Jar> 其中,-m指定作业管理器的地址。yarn-cluster指定以YARN模式运行作业。 以上就是Flink on YARN的安装和部署过程。在这个过程中,我们需要了解FlinkYARN的结合方式,以便更好地管理Flink作业。Flink on YARN可以帮助我们轻松地管理和部署Flink作业,提高作业的可靠性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值