文章目录
- 一. flink的内存管理
- 1.Jobmanager的内存模型
- 2.TaskManager的内存模型
- 2.1. 模型说明
- 2.2. 通讯、数据传输方面
- 2.3. 框架、任务堆外内存
- 2.4. 托管内存
- 3.任务分析
- 二. 单个节点的带宽瓶颈
- 1. 带宽相关理论
- 2. 使用speedtest-cli 测试带宽
- 3. 任务分析
- 3. 其他工具使用介绍
本文相关讨论
任务说明:
使用local模式运行flink sql任务,任务为:从hdfs解析数据到hdfs中的离线任务,其中数据量有4亿,文件数有13个,初始运行参数为:堆内存设为3g、并发设为13,其中运行命令如下:
java -XX:NativeMemoryTracking=summary -Xms3096m -Xmx3096m -cp $FLINK_HOME/lib/chunjun-core.jar:$FLINKX_HOME/bin/:$FLINK_HOME/lib/*:$HADOOP_CLASSPATH \
$CLASS_NAME -job hdfs-hdfs.sql -mode local -jobType sql \
-flinkConfDir $FLINK_HOME/conf \
-flinkLibDir $FLINK_HOME/lib \
-hadoopConfDir $HADOOP_CONF_DIR \
-confProp "{ \"taskmanager.numberOfTaskSlots\":13}"
一. flink的内存管理
1.Jobmanager的内存模型
2.TaskManager的内存模型
2.1. 模型说明
*代表直接内存。
2.2. 通讯、数据传输方面
TaskManager和JobManager之间的通讯
主要依赖JVM堆内存,网络缓冲器内存在数据传输方面也起到了一定的作用。具体来说:
TaskManager之间的通信
TaskManager之间的通信主要使用的是网络缓冲器内存(Network Memory)。当两个TaskManager之间需要交换数据时,会使用网络缓冲器内存来存储待发送的数据以及接收到的数据。
2.3. 框架、任务堆外内存
2.4. 托管内存
托管内存(Managed Memory)主要用于数据处理和中间结果的存储,被用于以下几个主要的用途:
状态后端存储
3.任务分析
任务为local模式,任务为从hdfs读到hdfs写,hdfs的源数据有13个文件,总共有4亿的数据,每条数据98byte。下面从flink内存模型的角度分析下任务对各内存的使用情况
所以总体分析下来,local模式下我们需要调控的是堆内存,因为数据传输主要存在于用户代码中。
二. 单个节点的带宽瓶颈
根据拿到的带宽,与任务消费数据速度,我们大概可以测试出任务的并发度。
1. 带宽相关理论
网络带宽是指在一个固定的时间内(1秒),能通过的最大位数据,是个峰值数据, 单位是Mbps
。
上行带宽/下行带宽
带宽的上行和下行分别指的是网络传输中数据的上传和下载方向。
流量单位/存储单位
带宽速度计算:
实际带宽速率的损失
吞吐量
吞吐量是指在没有帧丢失的情况下,设备能够接收并转发的最大数据速率实际带宽,单位Mbps, 通常用来描述一个系统的性能。
与带宽的关系:吞吐量即在规定时间、空间及数据在网络中所走的路径(网络路径)的前提下,下载文件时实际获得的带宽值。由于多方面的原因,实际上吞吐量往往比传输介质所标称的最大带宽小得多
例如: 带宽为10Mbps的链路连接的一对节点可能只达到2Mbps的吞吐量。这样就意味着,一个主机上的应用能够以2Mbps的速度向另外的一个主机发送数据。
2. 使用speedtest-cli 测试带宽
# 安装
$ sudo yum install -y speedtest-cli
# 测试
$ speedtest-cli
Retrieving speedtest.net configuration...
Testing from China Unicom (111.206.170.119)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by China Telecom TianJin-5G (TianJin) [123.83 km]: 65.213 ms
Testing download speed................................................................................
Download: 143.51 Mbit/s
Testing upload speed......................................................................................................
Upload: 456.74 Mbit/s
3. 任务分析
实际在测试过程中,有如下瓶颈:
也就是说每秒处理2.43MB/s数据是机器带宽瓶颈,目前最佳内存为2G,并发减小时处理时间会比例减小,当并发减小到4时,处理速度达到快,3秒处理完,但总体算下来小于每秒处理2.43MB/s数据,也就是说并发根据文件数设置可以达到最佳性能。
3. 其他工具使用介绍
测试任务占用内存: jps + top
# 1. 找到指定进程
jps -l
2900 com.dtstack.chunjun.Main
3645 sun.tools.jps.Jps
# 2. 查看一个进程占用内存
top -p <pid>
按e会转换内存为byte->m->g等单位,较为人性化的展示。