1. 大家好,现在我们是在Archsummit深圳大会的现场,今天非常荣幸地邀请到饿了么数据技术部总监徐梦云。梦云主要专注于大数据的领域,擅长海量数据仓库的治理,负责其中业务的进步。首先想请您聊一下饿了么数据仓库的数据架构建设,它是如何对业务进行驱动与提供相关成品的。
徐梦云: 在最开始的时候,饿了么是没有数据仓库这种概念的。他们用一个Posegram SQL作为与嘀嘀同步的数据,再用于服务各个业务方。在早期业务非常单一且数量很小的时候还是能够满足需求的,但是到13年年底时我们迎来了一个业务的爆发式增长,对原有的需求包括数据处理量、数据同步等等都造成了delay。这时我们就需要一套稳定可靠的数据处理架构来帮助业务方使用数据,于是引入了Hadoop storm这套海量数据处理的架构。 各个业务方对数据的需求比较紧迫,业务内部也非常重视数据,这是我们近来面临的较大挑战。之前在这方面没有精力投入,而现在我们的高层对数据的想法较多,需要我们快速响应他们的需求,这是一次由需求推动的架构建设。
2. 在你们面对不同业务需求的时候,是如何根据底层数据处理某些特殊需求的呢?
徐梦云: 这是个非常好的问题,互联网的数据仓库领域对数据的要求更加精细化,不像传统行业只看一些高度汇总的数据报告就好。所以在早期所有业务方都会在我的部门,依靠分析师提供数据的分析,但在将来这样是不行的,等到各个业务线拆分之后,业务方对数据需求只会更细,数据量也会更大。所以我们要把分析师安排到各个业务线上去,并培养各个业务线的工作人员学会如何看数据用数据。我们通过搭建一个统一的底层数据平台,使用统一的service,让所有人都能按照我们的规则来用数据甚至生产数据。
3. 能给我们介绍一下在数据仓库的建设中,大概会用到什么工具吗?比如开源之类的。
徐梦云: 我们的团队是比较喜欢开源的,而且较为崇尚工具化,因为工具一定能够帮我们解决更多的问题,能够优化我们的工作效率。我们有个专门的工具组来开发这些工具,来帮助我们的工程师提升工程的能力。我们早期其实也用了很多开源软件,但是用完之后发现其实不太适合我们,所以会进行一些改造,甚至到后来自己开发一套。现在主要是以自己开发为主,而且在定制化方面我们也能做很多事情。
4. 能大概说一下你们现有研发工具的情况吗?
徐梦云: 我们开发了自己的系统,查询平台,数据质量管理系统,许愿分析还有数据图谱。数据图谱是我们最近刚开始开发的,我们希望把我们所有的工具都集成在一个系统中,为我们的整体开发与数据使用提升效率。
5. 数据图谱好像是个比较新鲜的概念,它诞生的原因是什么?
徐梦云: 诞生的缘由其实是因为我刚才说的,会将工作人员拆分到各个业务系统上去,那么信息同步就会出现滞后的问题,所以很多时候业务线上的工作人员会经常跑来问我们的开发人员,使开发工作经常被打断。甚至有可能造成不同部门指标数据不一致的情况,这是非常致命的事情。所以我们针对这种场景开发了数据图谱的系统,使非开发人员能够查看、添加、订阅和修改数据指标,但是我们不只想止步于此,我们想把所有开发的数据的生命周期都给管理起来。我们不希望这个平台经过三年五年的发展之后产生很多信息冗余,不希望有上千个指标或几千张表,使得我们需要修改这个系统的时候无能为力。再者也能够让我们对所开发的内容进行评估,对数据开发人员评估,包括这些数据的热度以及生命周期。这是一个会根据我们的产品需求,把所有的需求融合并提炼出来的系统。
6. 你们的各个子系统是独立分开的吗?能不能说下更大的平台托管是怎样的一个概念?可能会融入一个什么样的形态?
徐梦云: 其实我们在做小模块之前就已经预先考虑过集成了,比如刚才说的数据质量,我们其实已经作为一个新的模块集成到里面去了,查询平台也很好嵌入,因为我们的整体风格都是一致的。
7. 那么你们在搭建这个平台的时候,人员方面具体是怎么去规划的?
徐梦云: 对我们来说这不是特别大的挑战,因为在这方面我们有个比较好的架构师,他能够清楚方向在哪里,能把整体的架构想清楚,也能把我们的需求很好的实现,比如带一些新人,去把这块做起来。我们的工具开发团队是跟基础架构在一起的,两边的沟通比较多,hadoop平台本身就是一些开源的基础团队在维护,所以团队交流基本不存在障碍。
8. 数量质量检测的体系是怎么样的一个模型,为什么会有这样的想法去做数据质量的检测?
徐梦云: 数据质量是数据人的生命嘛。我们出现过几次问题,类似我们所有的任务都完成了,将数据推送给下个业务系统之后,他们发来报告告诉我们数据有问题,我们觉得非常尴尬。所以我们就想做一套异常监控的系统,在发生异常的时候能够及时刨除异常。
9. 这种由业务员发现的不一致性,能不能大概的讲一个例子?
徐梦云: 比如说一条产品线的开发人员晚上开发完脚本之后,测试不够充分就直接提交上去了,第二天业务员通过不同的维度对数据进行直观对比之后,发现数据是不一样的。比如交易额,一个地方看到的是一百万,另一个地方看到的是八十万,对业务员来说就是很明显的不一致了。
10. 针对这样的质量检测,你们在外围是通过什么的方式进行的?
徐梦云: 我们会有大量程序做后台处理,在跑完任务之后就会去做上一个任务的质量校验,以及检测可能存在的问题。我们会做数据一致性,数据合理性还有数据的准确性这些校验。
11. 质量校验会影响它交付的时间吗?每个job拖延的时长是多久?
徐梦云: 会的,但是对我们做校验来说,耗时不会特别长,只是做一个结果的比对。
12. 能否请您说说对这次ArchSummit大会的感受。
徐梦云: 在参加Archsummit之前,我还参加了QCon等等会议。我的切身感受是Archsummit真是一个跟各种大牛来学习的很好的机会,去看看行业内别人做的一些事情,以及是很好的交流与分享的平台。我觉得整个软件行业是需要有这种鼓励大家交流分享并把知识传递下去的氛围的。