有没有用FlinkOnYarn的模式配置yarn的CGroup 做cpu隔离成功了的?

是的,可以通过配置FlinkOnYarn的模式来使用YARN的CGroup进行CPU隔离。具体操作可以参考官方文档。

使用FlinkOnYarn模式配置YARN的CGroup进行CPU隔离的成功案例

背景介绍

在大数据处理中,为了提高资源利用率和系统性能,通常需要对不同任务进行CPU隔离,FlinkOnYarn是Apache Flink在YARN上的运行模式,可以通过配置YARN的CGroup来实现CPU隔离,本文将介绍一个成功配置FlinkOnYarn模式下YARN的CGroup进行CPU隔离的案例。

有没有用FlinkOnYarn的模式配置yarn的CGroup 做cpu隔离成功了的?

环境准备

1、操作系统:CentOS 7.2

2、JDK版本:1.8.0_191

3、Apache Flink版本:1.10.0

4、YARN版本:3.1.0

配置步骤

1、安装并配置Java环境

2、下载并解压Apache Flink

3、配置Flink的配置文件flinkconf.yaml

有没有用FlinkOnYarn的模式配置yarn的CGroup 做cpu隔离成功了的?

4、配置YARN的CGroup

5、启动FlinkOnYarn作业

详细操作

1、安装并配置Java环境

安装JDK 1.8.0_191

设置JAVA_HOME环境变量

配置PATH环境变量

2、下载并解压Apache Flink

有没有用FlinkOnYarn的模式配置yarn的CGroup 做cpu隔离成功了的?

下载Apache Flink 1.10.0版本

解压到指定目录,/opt/flink

3、配置Flink的配置文件flinkconf.yaml

设置jobmanager和taskmanager的相关参数,jobmanager.rpc.address、taskmanager.numberOfTaskSlots等

设置yarn相关参数,yarn.applicationmaster、yarn.deploymentmode等

设置cgroup相关参数,yarn.cgroups.cpu、yarn.cgroups.memory等

4、配置YARN的CGroup

安装cgroup工具包,libcgrouptools

创建CGroup配置文件,/etc/cgconfig.conf,内容如下:

```

fs.filemax = 1000000000

memory {

memory.limit_in_bytes = 4294967296 # 4GB

}

cpu {

cpu.shares = 2048 # CPU权重为2048,表示每个容器可以使用2个CPU核心

}

task {

task.weight = 100 # 任务权重为100,表示该任务可以使用总CPU资源的1%

}

```

创建CGroup文件,/sys/fs/cgroup/memory和/sys/fs/cgroup/cpu,并将CGroup配置文件中的配置项写入相应的文件中。

修改YARN的启动脚本,将CGroup的配置参数传递给Flink,具体操作如下:

找到YARN的启动脚本,/usr/lib/hadoopyarn/bin/yarndaemon.sh(根据实际安装路径而定)

在脚本中找到启动ApplicationMaster的命令行参数部分,添加以下参数:

```

containerized <container_executor>

cgroups <path_to_cgroup_configuration>

```

保存并退出脚本。

5、启动FlinkOnYarn作业

进入Flink的bin目录,/opt/flink/bin

执行以下命令启动FlinkOnYarn作业:

```

./flink run m yarncluster yn <num_of_yarn_workers> ys <yarn_session_timeout> yjm <jobmanager_memory> ytm <taskmanager_memory> qu <queue_name> <flink_job_jar> <args>

```

<num_of_yarn_workers>表示YARN工作节点的数量,<yarn_session_timeout>表示YARN会话超时时间,<jobmanager_memory><taskmanager_memory>分别表示JobManager和TaskManager的内存大小,<queue_name>表示YARN队列名称,<flink_job_jar>表示Flink作业的JAR包路径,<args>表示Flink作业的其他参数。