加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

SQL on Hadoop在快手大数据平台的实践与优化

发布时间:2019-06-04 23:38:33 所属栏目:MySql教程 来源:佚名
导读:快手大数据架构工程师钟靓近日在A2M人工智能与机器学习创新峰会分享了题为《SQL on Hadoop在快手大数据平台的实践与优化》的演讲,主要从SQL on Hadoop介绍、快手SQL on Hadoop平台概述、SQL on Hadoop在快手的使用经验和改进分析、快手SQL on Hadoop的未

在HS2的ThriftServer层我们增加了接口,与运维系统打通后,配置下推更新的时候自动调用,可实现配置的热加载生效。

SQL on Hadoop在快手大数据平台的实践与优化

HiveServer2的Scratchdir优化

HiveServer2的scratchdir主要用于运行过程中的临时文件存储。当HS2中的会话创建时,便会创建scratchdir。 在HDFS压力大的时候,大量的会话会阻塞在创建scratchdir过程,导致连接数堆积至上限,最终HS2服务无法再连入新连接,影响服务可用性。

对此,我们先分离了一般查询与create temporay table查询的scratch目录,并支持create temporay table查询的scratch的懒创建。 当create temporay table大量创建临时文件,便会影响HDFS NameNode延迟时间的时候,一般查询的scratchdir HDFS NameNode可以正常响应。

此外,HS2还支持配置多scratch,不同的scratch能设置加载比率,从而实现HDFS的均衡负载。

SQL on Hadoop在快手大数据平台的实践与优化

Hive Stage并发调度异常修复

Hive调度其中存在两个问题。

一、子Task非执行状态为完成情况的时候,若有多轮父Task包含子Task,导致子Task被重复加入调度队列。这种Case,需要将非执行状态修改成初始化状态。

二、当判断子Task是否可执行的过程中,会因为状态检测异常,无法正常加入需要调度的子Task,从而致使查询丢失Stage。而这种Case,我们的做法是在执行完成后,加入一轮Stage的执行结果状态检查,一旦发现有下游Stage没有完成,直接抛出错误,实现查询结果状态的完备性检查。

SQL on Hadoop在快手大数据平台的实践与优化

其它改进

  • HS2实现了接口终止查询SQL。利用这个功能,可以及时终止异常SQL。
  • metastore JDOQuery查询优化,关键字异常跳过,防止元数据长时间卡顿或者部分异常查询影响元数据。
  • 增加开关控制,强制覆盖外表目录,解决insert overwrite外表,文件rename报错的问题。
  • hive parquet下推增加关闭配置,避免parquet异常地下推OR条件,导致结果不正确。
  • executeForArray函数join超大字符串导致OOM,增加限制优化。
  • 增加根据table的schema读取分区数据的功能,避免未级联修改分区schema导致读取数据异常。




SQL on Hadoop平台在使用中遇到的痛点

SQL on Hadoop在快手大数据平台的实践与优化

为什么要开发SQL专家系统

  •  部分用户并没有开发经验,无法处理处理引擎返回的报错。
  • 有些错误的报错信息不明确,用户无法正确了解错误原因。
  • 失败的任务排查成本高,需要对Hadoop整套系统非常熟悉。
  • 用户的错误SQL、以及需要优化的SQL,大量具有共通性。人力维护成本高,但系统分析成本低。




SQL专家系统

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读