这篇博客是对上篇《基于Flink&Kafka完成的流式模块》的补充,在上一篇里已经做了很多优化以及详细的注释,这里要补充一下内存方面的优化。
因为在生产环境中实际部署之前,还是没有考虑到同时消费多个topic记录的偏移量是很大的,同时模拟的数据量并没有达到实际生产环境的数据量,所以在部署的时候因为TaskManager内存不足,一直处理内存中的数据导致没有及时发送心跳让JobManager以为TaskManager已经挂掉(实际上后来确实是会挂掉),所以就针对内存方面进行了优化。

  1. 我们可以通过修改 flink-conf.yaml 文件,调整TaskManager的最大内存,我这里是改成了4个g
1
2
# 指定TaskManager进程的总内存
taskmanager.memory.process.size: 4096m
  1. 当然如果我们需要确定自己的内存时,可以通过下面两个参数来指定(我采用的就是这种方式),注意这个不能和上面的方法同时指定
1
2
3
4
# 指定JVM堆内存大小
taskmanager.memory.task.heap.size: 2048m
# 指定JVM托管内存大小
taskmanager.memory.managed.size: 512m
  1. 也可以通过下面的参数指定内存大小,第一种和这种方式属于比较简单的,第二种就需要了解自己环境数据的具体生产量来设置了
1
2
# 指定Flink总内存
taskmanager.memory.flink.size