
# Flink对接HBase时出现持续背压并出现Full GC
#### 问题现象
Flink任务的Source端是Kafka，Sink端为HBase等性能弱于Kafka的组件时，可能出现如下现象：
- 现象一：任务运行一段时间中断，可能出现如下报错，Checkpoint持续失败：
  ```
  Caused by:org.apache.hadoop.ipc.RemoteException: File does not exist:/flink/checkpoints/xxxx  does not have anyopen files.
  ```
  
- 现象二：任务运行一段时间后，taskmanager故障，可能出现如下报错：
  ```
  org.apache.flink.util.FlinkException: The TaskExecutor is shutting down 或者 the remote taskmanager has been lost。
  ```
  
- 现象三：任务首个算子出现大量的背压。
 
#### 原因分析
1. 收集查看任务的GC日志是否出现大量的Full GC，如下图： ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002333308650.png "点击放大")
   
2. 业务使用了宽度较大的窗口函数，例如将窗口时间设置了小时级别，导致内存被占满。 ![](https://support.huaweicloud.com/cmpntguide-lts-mrs/zh-cn_image_0000002367431873.png "点击放大")
   
3. Sink端的组件性能很差。 例如向HBase等组件写入时，这些组件本身的性能较差导致整体任务出现背压。
   
 
#### 解决方案
1. 可以适当增加Taskmanager的启动内存。
2. 调优窗口函数，防止数据在内存中堆叠。
3. 调优Sink端的组件，或者增加Sink端的并发，防止出现背压。
 
