100条sql 语句跑得更快,官方给的指标就是看这100条sql 全部执行完用的时间短不短。

仨高中生毕业后来到东北大学,还有个刘祥,跟另一个同学邱明璞,还有秦杰杰,都在中科大上学。他们在高中时就认识,现在大学还在同城读书,经常在QQ群里聊天,有一天大家随口一问“要不要一起去参加BDCI比赛”,结果就凑到了一块儿。没有钱、也没人指导,他们就把实验室当作自己的家。这次比赛的题目是让100条SQL语句跑得更快,官方给的指标就是看这100条SQL全部执行完用的时间短不短。 面对这种黑盒子系统,他们没有去猜参数怎么配更好,而是先搞了一套模型。把集群有多少个节点、多少个核、多少内存记成c,把任务编号记成t,把openLooKeng和Hive连接器相关的19个配置参数记成p。这样一来就有了一个函数T=f(c,t,p),他们的目标就是找到一组p让T最小。 整个过程分成两步走:先在训练集上用回归方程拟合数据;如果已知集群参数,就直接用多起点爬山算法找最优解;如果不知道参数,就在合理范围内均匀采样c,然后对每个c再用爬山算法找p的平均最优解。最关键的是他们用了一个带限制条件的多起点爬山算法,连续三次收敛到同一个地方就停下来不干了。这样既防止了过拟合又防止了无限循环。这套算法跑起来很稳,不到20秒就能算出结果,把原来100条SQL的总耗时降低了5%以上。 整个过程他们没改一行源码,全是根据运行时的数据来搞的。模型随着测试集变大越来越准;算法经过优化和并行处理后时间锁定在20秒内;最神奇的是他们用数学模型把黑盒系统那种让人头疼的“参数敏感”问题给解决了,把敏感度变成了可以预测的东西。所以同样的硬件和数据跑出来的结果就是不一样。 比赛结束后他们把脚本、模型还有配置全推到了GitHub上,还附上了使用说明:“欢迎大家fork我的代码,也欢迎提交新的测试集让模型越来越准。”他们觉得开源不仅仅是一句口号,更是把“进击的巨人”那种精神传到更多集群和更多数据集里去。如果你也想加入这场让大数据跑得更快的狂欢中来,快去社区报道吧——说不定下一个刷新记录的人就是你!