Flink SQL 写入 Hive表的性能问题

Flink SQL 写入 Hive表的性能问题,第1张

写入Hive表的性能,每秒写入记录数,发现性能并不乐观,上有节点背压严重。

Hive Table DDL:

而写入HDFS文件的性能,每秒写入记录数,性能符合期待。

HDFS文件的DDL:

翻阅Flink的PR,十几天前,阿里Flink的开发同学已经注意到了这个问题,我们将之吸收到测试环境,编译替换lib下jar包,重新测试,性能确实up了,单并发升至5W每秒,上游节点才稍微有背压。

[FLINK-19121][hive] Avoid accessing HDFS frequently in HiveBulkWriterFactory

所以,Flink的新特性从发布到应用线上,稳定性与性能上都不能过于乐观、听信于官方宣传,

司内另一教训就是过早在热数据存储层启用了Hadoop的纠删码,导致问题不断,被迫退化到副本机制。

这与前期调研、验证不足,对该特性过于轻信有莫大关系,教训也是深刻。

底层采用Reed-Solomon(k,m)算法,RS是一种常用的纠删码算法,通过矩阵运算,可以为k位数据生成m位校验位,根据k和m的取值不同,可以实现不同程度的容错能力,是一种比较灵活的纠删码算法。

HDFS纠删码技术能够降低数据存储的冗余度,以RS(3,2)为例,其数据冗余度为67%,相比Hadoop默认的200%大为减少。但是纠删码技术存储数据和数据恢复都需要 消耗cpu进行计算,实际上是一种以时间换空间的选择,因此比较适用的场景是对冷数据的存储 。冷数据存储的数据往往一次写入之后长时间没有访问,这种情况下可以通过纠删码技术减少副本数。

ZSTD压缩算法是现在最流行压缩算法了,有着高压缩比和压缩性能强的有点,已经被各大框架所使用。

目前hadoop 3.1.0版本已经支持ZSTD算法。所以可以使用Flink写HDFS时使用这个算法。具体如何 *** 作请往下看

Flink1.11已经支持hadoop 3.x+版本了,所以Flink依赖的hadoop shaded包版本不达标的需要升级。

由于从Flink1.11开始,官方已经不提供hadoop shaded支持,可以使用CLASS_PATH方式 参考 。

但是任然可以自己编译hadoop 3.1版本的shaded包,具体步骤如下:

同时hadoop集群版本也要支持ZSTD,升级集群或者将ZSTD功能merge到低版本中。

现在就可以写flink任务了,DDL如下:

原因:线上环境是hadoop2.6版本 还不支持zstd压缩,之后在一个测试环境上进行,该环境还是2.6版本但是将3.1的特性merge了进来。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8075885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存