Kyuubi 提供的自动合并小文件工具是纯开箱即用的

只不过,就社区的更新速度来看,auth-extension 更新频率很高,我们在测试中发现了一些问题,包括视图权限、临时 Function 权限等问题,修复后都还没来及脱敏贡献给社区,社区就在 master 分支修复发布了。实话说,这也导致我们的这个插件更新非常痛苦,我们需要不断修改,不断适配。这也是我们越来越拥抱社区的原因,只要社区提供了功能,经过测试后我们便删除自定义代码,方便未来更新,也是尽可能跟着社区一起成长吧。

  • 自动合并小文件

Kyuubi 提供的自动合并小文件工具是纯开箱即用的,Spark3.3 版本主要依靠 rebalance 逻辑。经过我们的测试,同样的来源表,同样写出 10 个分区,写出文件从近 2000 个缩小到 10 个,落地时间也从 7min 缩小到 40s,不仅降低了集群元数据的压力,更有效提升了整体任务效率。

spark.sql.extensions=org.apache.kyuubi.sql.KyuubiSparkSQLExtension
  • 查询条件限制和扫描分区数限制

即席查询中,绝大部分探索性的查询都不需要大量的数据,结果数据量过大会引起 Driver 的压力过大,从而影响查询的稳定性以及用户的体验。社区最新提供了 HTTP 的异步获取的方式,但是这样的方式涉及到上下游改动,还在性能测试中。

按照线上环境的经验,我们将结果条数限制为 1000 条,针对不同的场景,这个参数也可以动态修改,基本满足返回结果要求。

spark.sql.watchdog.forcedMaxOutputRows

Hive 支持限制查询 SQL 中分区表必须带分区条件的严格模式,Kyuubi 也提供了类似的功能,可支持控制扫描分区数的限制。只是控制扫描分区数对于不同场景的需要不同,我们还没有正式利用这个功能,需要在实践中动态添加参数使用。

spark.sql.watchdog.maxPartitions
  • 服务日志切分

之前运维经验发现,Kyuubi 服务在 logs 下写入的服务日志一直增量写入,发现的时候单文件日志已经达到了 90G。新架构下我们吸取教训,修改了 log4j2.properties,将日志按大小和日期拆分,仅保留最近 7 天的日志,彻底解决这个隐患。

  • 自由选择资源组

在公司的实际使用中,一个 user 是可以在多个 group 中的,按照 Kyuubi 原生的提供的以 group 为引擎隔离 level 的情况下,会默认取该用户的第一个 group。我们将其修改成了通过 JDBC 参数可以选择 group 的能力,当然也包括了安全性校验,不允许恶意使用不属于自己的 group。

  • Volcano 调度器的模板文件

Spark 官方文档中针对 Volcano 的调度器使用参数如下:

spark.kubernetes.scheduler.name=volcano
spark.kubernetes.driver.pod.featureSteps=org.apache.spark.deploy.k8s.features.VolcanoFeatureStep
spark.kubernetes.executor.pod.featureSteps=org.apache.spark.deploy.k8s.features.VolcanoFeatureStep
spark.kubernetes.scheduler.volcano.podGroupTemplateFile=podgroup-template.yaml

其中,最后这个参数 spark.kubernetes.scheduler.volcano.podGroupTemplateFile 需要是本地的 yaml 文件。我们针对这个修改了提交命令,支持动态生成模板文件进行提交。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值