登月1号:支付宝演绎空中升级绝技
出于业务稳定发展的需要,阿里集团内部的技术发展路线上曾经是双“强”并立:支撑淘宝、支付宝等业务的以Hadoop为底层的云梯1和支撑阿里云、阿里金融等业务的以自主研发“飞天”及ODPS为底层的云梯2。而阿里内部对于二者的技术争论由来已久。
2013年底,随着飞天5K项目的成功,飞天平台用技术实力证明了其在“性能强劲、架构灵活,可支撑业务飞速发展;技术自主可控,安全可靠;成本更具优势”等方面,远超Hadoop集群的优势。阿里集团融合数据,建设一个统一的底层大数据平台随之成为现实。阿里数据平台团队联合技术保障部和集团各事业部,开始了一系列宏大的登月计划,致力于将搜索、广告、物流等多个BU的数据统一,基于飞天提供开放数据处理服务的ODPS将成为承载阿里集团全部数据的统一处理平台。
“登月计划”共有20多个项目,涉及阿里巴巴和小微金服所有的事业部,覆盖集团全部数据人员,其牵扯人员、资源之多,在集团内部罕见。登月计划的全面启动,标志着阿里集团自研的飞天平台及ODPS服务,从功能和性能上已经渐渐超越了Hadoop,阿里云的技术走在了世界前列。
从Hadoop到ODPS,“登月1 号”启动
登月计划1号项目,选择了一块“硬骨头”——对稳定性、安全性、业务连续性响应等要求最高的支付宝。其最终目标是将原支付宝在Hadoop集群上的业务无缝平稳迁移到ODPS上。登月1号的启动,正式拉开了集团离线业务迁移到ODPS的序幕。谈到当时支付宝的选择,阿里小微金融服务集团数据库技术专家安道全重点强调了两方面。
■ 面对业务高速增长的现状,技术团队在评估支付宝的海量数据存储与计算平台时,发现以目前的技术发展趋势,云梯1无法突破5000台集群管理的瓶颈,更不要说实现后续10000台、20000台的大规模集群扩容目标。而此时,云梯2单集群规模已经从1500台顺利升级到5000台,同时实现跨集群扩展也取得了阶段性成果。技术平台切换有了实践的可能性。
■ 当阿里金融和支付宝业务整合的时候,云梯1和云梯2两套平台不管是在技术上、团队上、业务响应效率上都带来巨大的成本,因此我们必须在最佳时间点做出决策,早了不行,晚了代价太大,打通数据平台的时机就非常重要,一旦打通则为业务长期发展奠定了坚实基础。
安道全表示:“小微数据团队在对ODPS的稳定性的判断和自身发展状况的基础上,在2013年10月17日启动‘登月1号’项目,由支付宝、数据平台技术、技术保障、测试方等多部门组成的技术团队正式启动支付宝升级。”原有基于Hadoop集群的应用,涵盖了原始数据采集,数据仓库应用,数据挖掘以及将数据回馈到前端应用等各个环节,共有超过1万个Hive SQL、MapReduce任务以及外围的各类工具,还有数十PB数据需要迁移到ODPS中。而更大的挑战是,在项目进行过程中所有的任务和数据都是在不断更新的。
为了保障项目的质量与进度,项目组当时制定的策略是避免重构,平滑迁移。也就意味着占迁移主体的所有Hive SQL任务不用进行改写,直接运行在ODPS上,后来项目也很好地做到了这一点。实际上从4月份开始并行,直到5月底所有任务切换到ODPS,同样的 SQL一直是并行运行在两套系统上。原有的MapReducer任务经过简单的接口改写,很快也就迁移到了ODPS中。
对于海量的历史数据,项目组开发了专门的工具,将客户端以MapReduce的方式运行在老的Hadoop集群上,以高并发的方式通过ODPS Tunnel服务将数据写入ODPS中,高峰时基本用满了机房间带宽,而Tunnel服务也通过水平扩展服务器的方式满足了实际的要求。
项目的前期花了约两个月的时间主要进行了底层平台功能上的准备,从2013年12月19日开始正式的改造任务,至2014年4月1日开始并行,2014年5月底,所有的任务正式切换到了ODPS平台上。
伴随着登月的是用户数据的增长,为了更好地支持业务,在7月份实际上又进行了一次集群间的迁移,而这次迁移对用户几乎完全透明,在前期做了充分准备后,仅停止服务约30分钟,就将所有的数据迁移到了一个新的大规模集群上。这也从侧面验证了ODPS的多集群管理能力,对用户而言提供了理想的扩展性及灵活性。相比于手工从Hadoop集群迁移海量数据的挑战,这个过程平滑的可以算得上是一个奇迹!
谈到这段历程,参与登月1号的技术保障部技术专家大舞给出一个形象的比喻:“从Hadoop到ODPS,相当于在飞机飞行的过程中,将乘客从不同航空公司生产的不同型号的飞机之间实现搬迁,中途却不能让乘客有任何感觉。这不仅要面对飞机没有统一接口的问题,还要求乘客在搬迁的过程中得换件衣服。”
从文件到列表,空中迁移绝技
登月1号的技术挑战由此可见一斑,迁移意味着数据、线上任务、外围的接口以及配套工具的全面切换与升级。
其中,最大的挑战来自数据一致性。大舞表示:Hadoop采用的是文件方式存储。而ODPS是表格方式。要将同样的数据从文件导入表格,不只是数据格式,还有很多诸如定位符等细节都不相同。文件中的空格,到了表格中会自动变成两列,这些都会对计算结果造成很大影响。但迁移必须要保证数据一致性,为了保障数据的质量,测试团队开发了自动化对比工具,通过一轮轮迭代对比使数据完全一致。在此过程中发现的不一致,并没有发现平台的缺陷,而在很大程度上反映的是开源的Hadoop与ODPS在某些方面理念上的不同,比如对于脏数据的处理,Hive可以直接返回空值,而出于严谨的考虑,ODPS会将此视作异常。
从1号到N号,登月计划加速
7个多月,225天,上万个生产任务,数十PB数据,登月1号顺利谈到支付宝平台升级所取得的成绩,安道全表示:
■ 平台的稳定性、效率方面:相较以往的任务处理效率,目前整体任务完成时间提前约5个小时,其中90%任务可在每日上午9点之前完成;另外通过Tunnel服务批量导出账单,从小时级别降到约10分钟级别,性能提升了5倍左右;
■ 平台安全性方面:ODPS用基于数据对象的ACL授权机制完全替代了Hadoop下的HDFS文件授权机制,从根本上提高了数据权限的管理力度,并且在此基础上衍生出Role、Policy、ProjectProtection、LabelSecurity等权限管理手段,在阿里集团内实践证明可以对数千个用户数百万张表进行精确到字段级别的权限管理。
登月1号的成功,既验证了飞天和ODPS可以信赖的技术实力,又更加坚定了各大业务部门实现登月计划的信心。为了更好地服务用户,在登月1号的任务迁移完成后,实际上还启动了一些后续的计划,比如将ODPS中的新研发的准实时SQL逐步的推广使用,目标是缩短交互式的分析任务,提升用户体验,最快的任务缩短到了原来的1/3左右。交互式的分布式图计算分析功能也已经投入使用,这些功能全部内置于ODPS中,用户完全不需要自己花费精力在工具上。
目前,从登月2号到登月20+号的系列登月计划已经逐一启动。未来,淘系BI、MPI集群业务、直通车广告、定投广告、安全相关数据、共享业务、商家业务、天猫、淘宝、嗨淘等多个项目都将升级到ODPS。基于飞天提供开放数据处理服务的ODPS将成为承载阿里巴巴集团30多个事业部全部数据的统一处理平台。从Oracle到Hadoop,阿里解决了海量数据存储和分析的问题,数据业务不再受制于规模的瓶颈而发展;从Hadoop升级到ODPS,阿里扫清数据处理的障碍,真正构建起内部统一的大数据平台。与此同时,不断通过自身验证过的飞天以及在设计之初就是为了对外开放、做基于互联网的多租户的公共数据处理服务ODPS,还将以阿里云的产品的方式对外开放服务,使得所有企业都能享受到相同质量的云服务。
可以预见的是,云计算带来的数据处理能力使得数据服务平台成为可能,阿里建设“数据分享第一平台”的愿景距离实现已经不远。