作者介绍
胡梦宇,知乎核心架构平台开发工程师,大数据基础架构方向,主要工作内容是负责知乎内部大数据组件的二次开发和数据平台建设。
前言一年前,知乎的大数据架构与TiDB首次相遇,那时我们将HiveMetaStore的元数据库迁移到了TiDB,得到了超过单机数据库一个量级的性能提升。在见识过分布式NewSQL数据库TiDB的威力后,我们对它寄予厚望,将它应用到了大数据架构的其他场景下,如:Hive大查询报警,NameNodeRPC加速。Hive大查询报警背景
在知乎内部,Hive主要被应用与两个场景:1.ETL核心链路任务2.Adhoc即席查询。在ETL场景下,HiveSQL任务都比较固定而且稳定,但是在Adhoc场景下,用户提交的HiveSQL比较随机多变。在用户对SQL没有做好优化的情况下,启动的MapReduce任务会扫描过多的数据,不仅使得任务运行较慢,还会对HDFS造成巨大压力,影响集群的稳定性,这种情况在季度末或者年底出现得极为频繁,有些用户会扫描一季度甚至一整年的数据,这样的查询一旦出现,便会导致集群资源紧张,进而影响ETL任务,导致报表延迟产出。
SQL大查询实时报警系统简介
针对以上痛点,我们开发了大SQL查询实时报警系统,在用户提交SQL时,会做以下事情:
1.解析SQL的执行计划,转化成需要扫描的表路径以及分区路径;
2.汇总所有分区路径的大小,计算出扫描数据总量;
3.判断扫描分区总量是否超过阈值,如果超过阈值,在企业