转载

专访京东PrestoDB项目负责人吕信:根据业务需求选择开源

Presto 是由 Facebook 开发的一个分布式 SQL 查询引擎,它被设计为用来专门进行高速、实时的数据分析。它支持标准的 ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(Window functions)。后来经过京东商城的研发、测试、改进之后,形成了我们大家后来都所熟悉的 PrestoDB,它对京东的运维起到了很大的作用。

在2015 OSTC举办之前,我们采访到了负责 PrestoDB 运行的京东商城集团运维部数据库工程师吕信,请他来谈谈 PrestoDB 在京东的成长历程。

专访京东PrestoDB项目负责人吕信:根据业务需求选择开源

下面是采访实录

1. 欢迎您来参加 2015 OSTC 大会,请先做个自我介绍吧!

大家好,我是京东商城集团运维部数据库工程师吕信。目前主要是负责 Hadoop 生态系统相关产品研发、运维、测试和应用,2014年8月之前负责京东商城集团 Hadoop 集群运维、研发和优化工作,主导并完成了京东商城集团 Hadoop 集群从 Hadoop1.x 到 Hadoop2.x 升级、迁移和改造。

2. 日常工作内容,还有负责的产品项目有哪些?

从2014年8月开始专注于 PrestoDB 的测试、研发、优化和应用,主导并完成了 PrestoDB 在京东商城业务下的功能改造、bug修复、测试和性能优化,解决了 PrestoDB 中单点内存对处理数据量限制的问题,根据实际业务需求进行 PrestoDB 功能设计和改造并进行 PrestoDB 性能优化。对PrestoDB 在京东的推广应用起到的极大的推动作用。

3. PrestoDB现在除了京东在用,还有别的公司在使用吗?

除了京东在使用 PrestoDB 之外,还有 Teradata 和 Netflix 也在用 PrestoDB,可以说,PrestoDB 的应用范围还是比较广泛的。

4. 从2014年8月开始 PrestoDB 开发,那个时候有没有遇到过什么样的困难?

PrestoDB 是 FaceBook 开源的,我们是在 PrestoDB 的基础上根据京东的业务进行了改造和性能优化,目前我们改造的部分未开源。当时遇到的问题就是“单节点内存限制处理的数据量”这个问题,后来的解决办法就是通过限制汇聚节点选择范围的方法来解决的。

5. 比起来自行设计研发投入使用,京东选择开源的 PrestoDB 进行改造,总的来说获取的好处可以描述一下吗?

首先京东迫切需要一个进行实时数据分析和查询的平台,而这种需求 PrestoDB 基本可以满足。其次所进行自行设计研发,投入的资源比直接使用 Facebook 开源的 Presto 相比要大得多。

PrestoDB 使用 Java 开发而且是开源的,并且通过 SPI 接口可以很容易的进行新数据源 connector 的开发,扩展性极好,我们完全可以根据自己的业务需求很方便的进行改造。

6. 那么除了 PrestoDB,京东还用了哪些大数据领域的开源软件工具吗?

除了 PrestoDB,京东在 PrestoDB 计算任务的调度方面主要使用 azkaban 来完成,另外对于离线数据仓库的开源工具使用的主要是 Hadoop2.x,Hive-0.12。数据库方面主要使用了 Hbase,MongoDB等等。

7. 京东对待开源的态度是怎样的?

京东商城鼓励技术人员与开源社区互动,并且鼓励将成熟的产品发布到开源社区。

8. 不知道京东有没有一个专门的开源团队呢?

我们团队的所有研发人员都会第一时间将自己修复 PrestoDB 的 bug 和开发的功能提交给 PrestoDB的 GitHub 上。

我们主要还是会根据业务需求和使用过程中发现的一些 bug 进行修正和功能开发,并且会选择性的进行开源。后续我们会申请将我们所做的所有研发都公布在 prestodb-china.com 上。后来 PrestoDB逐渐完善,才在2014年8月份被重新调研的。

9. 那现在的 PrestoDB 研发团队有多少人啊?

现在 PrestoDB 项目的研发人员只有10人:5人做产品研发,5人负责各个业务部门接口。

10. 不知道吕工之前或者现在有参加一些开源社区的活动么?亦或参与一些开源项目!

以前主要是做 Hadoop 相关的运维和研发,所做的优化和功能研发成果,由于公司制度的规定,未曾提交到过开源社区。

这些成果就仅限于在公司内部使用,这使得自己开发出来的但是没有开源的小项目受到很大的局限性,没有发挥出最大的意义。所以这次做 PrestoDB 的研发,我们正在申请将我们所做的工作全部贡献到 PrestoDB 的 GitHub 上。

11. PrestoDB 与 Spark、Impala这两者之间的具体区别有哪些?优势又有哪些? 

这三个产品都是进行 ad-hoc 实时计算的工具。

其实我们在2014年的时候已经对 Impala 进行过测试和调研,当时我们发现 Impala 对于小数据量的简单查询性能还是不错的,但是对于大数据量的复杂查询,尤其是做 join 和 order by 等查询,经常会由于内存控制的问题导致进程异常退出。

其实刚开始的时候我们也是在 Spark 和 PrestoDB 两者之间选择,当时我们对两者进行了对比测试,我们测试的结果表明 Spark 和 PrestoDB 的性能是相当的,但是 Spark 在发生磁盘交换的时候,计算性能衰减会比较大,另外鉴于 Spark 已经关闭,当时 Spark 社区已经把开发力量专注于 Spark SQL 的研发,但是 Spark SQL 还开发完成,因此还不能提供 SQL 查询的功能,因此我们选择的 PrestoDB。

其实我们选择 PrestoDB 最主要的原因在于其灵活的 SPI 使得 PrestoDB 完全作为一个计算框架,从而可以灵活的计算任意一种数据源中的数据,这一点是 Impala 和 Spark 完全无法比拟的。其完全支持 ANSI SQL,也极大的方便了客户的使用,而且 PrestoDB 的论坛和社区非常活跃,其版本更新也很迅速,一旦我们在使用过程中出现任何问题,都可以及时修复或者反馈,并能及时发布新版本。

所以最终我们选择了 PrestoDB。

12. 2014年的开源大事有很多,例如微软开源.Net、“自由软件运动领袖”Richard Stallman和Perl语言设计者Larry Wall访问中国等等,所以想问一下您是怎么看待国内的开源状况的?

其实我个人和推崇开源,和别人分享自己的作品是一件非常cool的事情,以前,开源的优秀软件还是国外居多,但是现在也有很多国内的优秀软件进行了开源,而且这些开源社区的活跃度也是很高的。

除此之外,你会发现很多国外开源社区中,国内的贡献者越来越多,所以我个人感觉国内的工程师和各个大型企业会很快接收并推崇开源的思想,国内的开源社区会越来越多的。

相关阅读: 2015开源技术大会官网上线,参会报名全免费 !

正文到此结束
Loading...