前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flink SQL 写入 Hive表的性能问题

Flink SQL 写入 Hive表的性能问题

作者头像
sparkle123
发布2020-09-28 15:46:39
3.1K0
发布2020-09-28 15:46:39
举报
代码语言:javascript
复制
Flink 1.11.0
hadoop-3.0.3, hive-2.3.4

现象

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

写入Hive表.png

Hive Table DDL:

代码语言:javascript
复制
CREATE TABLE dw_db.dw_xxx_rt(
中间几十个字段省略,
`position` string COMMENT '位置'
) PARTITIONED BY (p_dt STRING, p_hours STRING) row format delimited
  fields terminated by '\t'
  collection items terminated by '\n'
stored as orc TBLPROPERTIES (
  'sink.partition-commit.trigger'='process-time',
  'sink.partition-commit.delay'='0s',
  'sink.partition-commit.policy.kind'='metastore,success-file',
  'sink.shuffle-by-partition.enable'='true'
);

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

写入HDFS文件.png

HDFS文件的DDL:

代码语言:javascript
复制
drop table hive_catalog.dw_db.dw_xxx_hdfs;
CREATE TABLE hive_catalog.dw_db.dw_xxx_hdfs (
中间几十个字段省略,
`position` string COMMENT '位置',
 `p_dt` string,
`p_hours` string
) PARTITIONED BY (p_dt , p_hours )  with (
  'connector' = 'filesystem',
  'path' = 'hdfs://ztcluster/tmp/test/xk',
  'format' = 'orc',
  'sink.partition-commit.trigger'='process-time',
  'sink.partition-commit.delay'='0s',
  'sink.partition-commit.policy.kind'='success-file',
  'sink.shuffle-by-partition.enable'='true'
);

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

所以,Flink的新特性从发布到应用线上,稳定性与性能上都不能过于乐观、听信于官方宣传, 司内另一教训就是过早在热数据存储层启用了Hadoop的纠删码,导致问题不断,被迫退化到副本机制。 这与前期调研、验证不足,对该特性过于轻信有莫大关系,教训也是深刻。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现象
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档