腾讯赵伟:Hive在腾讯分布式数据仓库的实践

腾讯高级工程师赵伟2009年毕业于哈尔滨工业大学,从学生时代起,他就对技术比较感兴趣,钻研过很多技术,包括反向工程/病毒分析 、linux/FreeBSD、C++等,偶尔还能通过学校的平台用这些技术赚点零花钱。这些经历都促进了赵伟对计算机技术的理解,也锻炼了他的动手能力。

赵伟在毕业后就加入了腾讯数据平台部,进入腾讯后,他参与进了当时正在规划中的腾讯分布式数据仓库(TDW)项目,通过与TDW的一起成长,他越发深刻的感觉到通过前沿的计算机技术可以使人们的生活更加便利,可以使企业的运营成本不断降低,可以使用户的资源更加优化。

在即将召开的HBTC大会中,我们有幸邀请到赵伟作为我们的演讲嘉宾,请他分享下Hive在腾讯分布式数据仓库实践方面的内容。我们也对他提前做了邮件采访,询问了他的一些学习工作经历,让用户可以更快地了解腾讯数据平台及腾讯在Hadoop方面的应用等知识。

CSDN:请您简单做一下自我介绍。

赵伟:我2009年自哈尔滨工业大学毕业,加入腾讯数据平台部,目前是腾讯的高级工程师,主要从事腾讯分布式数据仓库TDW研发工作,先后主导了TDW SQL查询引擎、TDW集成开发环境、TDW BI分析库等的研发等项目。专注于数据仓库的构建,精通Hive和Hadoop等的原理及其在数据仓库中的应用。目前负责TDW平台的SQL功能、性能、易用性的规划及研发。

CSDN:腾讯的数据平台团队目前的规模如何,团队平时都有一些什么活动来促进员工的工作积极性以及提高员工的工作态度?

赵伟:我们TDW团队是一个有激情、有活力的团队,现在团队里有六十个人左右。团队经常有爬山、徒步这样锻炼意志的活动,也有唱歌,泡温泉、聚餐这样舒缓压力的活动。随着大数据价值的逐步体现,公司对数据平台更加重视,使TDW团队成员在技术积累、发展空间、个人激励上都有很好的收获和前景,大家的积极性和工作热情都很高,整个团队的凝聚力也很强。

CSDN:是什么原因致使您从事目前的行业呢,或者说是什么引起您在大数据方面的兴趣?在工作中您遇到过的困难有哪些,都是如何进行解决的?

赵伟:从事大数据方面的工作,最开始可以说是机缘巧合。我入职腾讯时,恰好公司准备研发一套数据仓库系统,我有幸从腾讯TDW的预研、立项等初始阶段便参与其中,直至之后的开发、应用推广等阶段。点滴的工作中,除了经验的积累,更让我认识到大数据处理对公司的重要意义,以及大数据处理存在的众多技术挑战。或许,每一个软件开发人员对富有挑战性的工作都有着极大的兴趣—这项重要而又富含挑战的研发工作,其本身就是非常吸引我的。

在TDW的研发过程中,遇到很多困难,但是最终都通过团队的力量解决了。记得在TDW开始承接业务时,相对来说压力是比较大的。当时面临着系统规划、bug修复、新需求开发、客户咨询等大量工作,几乎每天神经都是紧绷的。而且,当时团队人力不足,运维和测试刚加入进来,对我们系统也不够了解,我们整个团队似乎都忙的团团转。为了解决这些问题,我们加强WiKi建设,引导用户自助解决问题;不断培训团队新人使其尽快熟悉业务;帮助测试、培训运维人员了解系统等。越是艰难的境况越是要靠团队的力量,大家一起坚持下来,守得云开见月明。

CSDN:Hive是一个基于Hadoop的数据仓库平台,通过Hive可以方便地进行数据提取转化加载(ETL)的工作。基于MapReduce的Hive具有良好的扩展性和容错性。不过由于MapReduce缺乏结构化数据分析中有价值的特性,以及Hive缺乏对执行计划的充分优化,导致Hive在很多场景下比并行数据仓库慢,腾讯是如何解决这一问题的?

赵伟:并行数据仓库在很多方面是有其自身优势的,但对于互联网企业来讲,选择数据仓库解决方案是要综合考虑很多因素的,包括它的扩展性、容错性、稳定性、可控性、成本等,而且更要考虑到企业本身承载数据的量和价值,单纯从性能角度去比较,意义不大。Hive+Hadoop方案之所以被国内外互联网公司广泛使用,正是因为它使互联网公司可以用较低成本解决大数据问题,同时性能又可以接受。

当然,我们也不会满足于当前Hive的性能,我们通过下面三个方面,提升性能:

持续优化Hive的查询优化器,使SQL更加高效的运行;

不断引入一些database特性、包括hash join、列存储、多存储引擎、SQL/MED等,将成熟的数据库/并行数据库理论应用于Hive之上,使它的性能不断与并行数据仓库接近;

加强MapReduce层的优化,使MR执行框架更合理高效的执行Hive翻译的MR代码。

我们也在关注业界的一些新技术对性能的提升,如果可以,我们会尝试将其引入。

CSDN:TDW是腾讯在Hadoop和Hive的基础上根据自身业务特点深度定制的,它在稳定性、性能和易用性等方面都有不俗的表现。那么TDW是如何帮助腾讯处理日常的海量数据?

赵伟:目前TDW作为腾讯内部规模最大的数据处理平台,它集中了腾讯各个业务中的数据,并对有价值的数据提供离线的海量数据分析。在处理数据的过程中,会根据不同部门的需求对数据进行构建级数据集市、数据挖掘,产品报表,经营分析、战略报表、数据提取等处理。

使用TDW处理日常的海量数据,流程相对简便。用户通过TDW IDE开发调试他们的分析脚本,在TDW调度系统上配置分析脚本的调度实践和调度任务间的依赖关系,通过TDW BI分析库进行分析结果展示,或者进一步进行所需的精细分析。

CSDN:Hadoop是一个超级大规模的开源项目,目前很多公司都在大量使用,但它的部分功能已经不满足有些企业的需求,腾讯有没有遇到这种情况,如果有,是否对其进行了改造?如何改造?

TDW对Hive和Hadoop都进行了改造,来满足我们对于海量数据处理的需求。

对于Hive的改造主要有兼容Oracle的分区功能,基于角色的权限管理、窗口函数、多维分析、CTE等的支持,使Hive功能更全,使用门槛更低、效率更高。

对Hadoop的改造,主要是调度器、Hadoop单点问题的解决,使TDW在资源共享和任务隔离上更可控,增强了Hadoop的可靠性和性能。

CSDN:腾讯目前在数据处理和采集方面所面临的挑战,如何进行解决?

目前一个挑战是TDW在易用性上的,目前TDW的SQL优化器仍然不够智能,需要用户设置一些参数或必须写成特定的格式的SQL,使用门槛有些高。目前我们一方面加强对新用户的教育和培训,另一方面,我们也在不断改善我们的SQL优化器,让它更加智能,解放用户的大脑。

在采访结束后,赵伟表示TDW首先服务好腾讯的内部的业务,做到真正的海量、稳定、高效,帮助公司发掘更多的数据价值。这点已经基本做到,但是还没有做到极致。在易用性、性能、稳定性、成本优化等方面,还有提高空间,这是腾讯未来一段时间要重点改善的。

其次,在服务好内部之后,如果可能的话,赵伟希望TDW能走出公司,为外部用户提供海量数据处理服务、或者为企业提供BI/数据仓库解决方案。大数据时代已经来临,越来越多的企业意识到大数据的价值,但是他们缺乏大数据处理的技术积累和实践,他希望用腾讯成熟的技术帮助这些企业。(文/王旭东 审校/仲浩)