我们有一个使用Flink 1.0.0的批处理应用程序。该应用程序在具有两个节点且并行度为〜48的纱线簇上运行。 该应用程序使用hbase-connector从Hbase读取,并使用我们自己的输出格式写入hbase。对于每条记录,我们使用HbaseTemplate从hbase中进行查找。
在代码中看起来像这样:
environment.createInput(hbaseTableInputFormat())
.map(object -> object.enrichWith(hbaseTemplate.get(object.getSomeId()))
.output(hbaseOutputFormat());
(在我们的实际示例中,我们也使用partitionByHash和union)
使用flink 1.0.0可以正常工作,但是升级到Flink 1.4.2后,性能下降了15-20倍。
经过一些调试,我们从使用HbaseTemplate更改为hbase客户端Table,这解决了性能问题!
这可能会有所帮助,在Flink中发生了一些变化,也许是在创建运算符的方式上发生了什么?