切换其他用户提交任务
在 ranger 中赋予用户 hdfs/yarn/hbase 其他要使用的组件权限(和 admin 用户同级),更改 flink-conf.yaml 中配置的 principal 和 keytab 信息为对应用户。
数据倾斜
当数据发生倾斜(某一部分数据量特别大),虽然没有GC(Garbagee Collection,垃圾回收),但是task执行时间严重不一致。
- 需要重新设计key,以更小粒度的key使得task大小合理化。
- 修改并行度。
- 调用rebalance操作,使数据分区均匀。
报错java.lang.OutOfMemoryError: GC overhead limit exceeded,该如何处理?
- 报错原因该报错代表为作业设定的内存不够,导致GC超时。常见原因为代码(如UDF)发生内存泄露或者内存大小确实不能满足业务需求。
- 解决方案
- 您可在重新运行问题作业前通过-D方式指定JVM参数,保存OutOfMemoryError发生时的现场-D env.java.opts="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.hprof"。
- 在flink-conf.yaml中添加参数env.java.opts: -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/dump.hprof来配置OutOfMemoryError发生时进行heap dump。
- 待作业再次报错之后,您可针对HeapDumpPath指定的heap dump文件进行分析,确定问题根因。
Flink UI上作业只有一个Operator,并且显示Records Received为0,该如何处理?
这是正常现象,Flink的Records Received相关指标用于描述不同Operator之间的数据通信,当作业被优化为一个Operator时,该指标值恒为0。