案例背景

企业和组织通过MaxCompute构建数据仓库、大数据平台的过程中,可能会遇到一些架构、设计等问题,在不同的开发阶段也会遇到不同的疑问和问题,本文档结合多种类型客户的真实案例,为您提供基于阿里云MaxCompute 构建企业云数据仓库CDW的最佳实践。

案例来源:
  • 阿里巴巴内部BU。阿里巴巴所有的数据都是运行在MaxCompute,去做数据仓库和加工处理。
  • MaxCompute在阿里云上的客户。
  • 其他使用非阿里技术的公司。在中国,有很多企业使用了非阿里的技术,在大数据方面也遇到了一些问题,有很多真实的实践经验。
  • 阿里收购了很多公司,在外界公司和阿里内部公司融合迁移的过程中,也是典型的最佳实践来源。

传统数仓和大数据数仓

不管去做什么应用,客户在MaxCompute之上,首先主需要构建据仓库,我们称之为Cloud Data Warehouse。数据仓库,它既是一套数据体系,同时它也是一个工程过程,要更多的从工程的角度来看,这是现在目前业界非常典型的数据仓库实时的生命周期流程。在这个过程中,传统的DB时代,是以建设为中心的一个项目。大数据时代的数据重点在于运营。

传统数仓和大数据数仓架构
在企业迈向云原生、大数据之路时,需要解决以下问题:
  • 项目规划轻量化:数据仓库整个生命周期上都需要敏捷数仓。
  • 需求不明确:需要探索未知问题。
  • 架构设计和产品选择需要简化。如果我们规划出来一个非常完美复杂的技术方案,它的落地周期会给我们带来挑战,所以我们需要技术上进行简化。
  • 众多的维度、变化的任务难以在设计阶段固化。
  • 不仅仅是BI、还有ML&AI等智能应用。创建了大数据平台之后,平台功能不仅仅是做报表而且集合机器学习、人工智能、预测等众多应用。
  • 数据运营被忽视。数据的价值一定要通过运营才能得以呈现。
  • 更敏捷的部署:按月增量到按天的增量变化。
  • Serverless化:实现DevOps。

企业大数据计算平台建设与发展的阶段性风险

ODPS:企业大数据计算平台的建设
我们看到这样一个时间轴:
  • 横轴以时间来推动,第一个月,六到十二个月,十二个到十八个月,到第二十四个月。分析了上百家的企业客户后,我们看到在这样一个周期里,分别会碰到什么样的问题,技术方案不一样,但痛点和风险是一样的。
  • 纵轴,业务规模是这条黄色的线,风险是蓝色线。业务在这里面能包出来的半径就是我们所谓的价值,蓝线包起的面积就是我们的风险,我们的业务面积和风险面积,哪一个更大,这就决定了成败。

第一个月,大部分客户都可以快速的通过定制化方案,快速启动数据仓库。到了半年到十二个月,业务规模逐渐扩大,需要进入快速成长期。随着业务大规模的扩展,数据量、计算量急速增长,这个时候就给我们的性能、成本带来了巨大的挑战和要求,系统能不能解决持续的发展矛盾,就成本、性能、数据安全和分析效率里面的矛盾随着我们业务的发展,我们现在碰到这些问题,应如何解决?

在整个风险上升的过程中,有很多公司,包括我们的客户会启动一轮治理和优化,包括性能的优化、成本的优化,通过阶段性的优化,达到好的效果。接下来业务还在不断发展,我们可以看到在这两条线里面又会走向风险失控的过程中,也就是说我们的系统在这个时候变成了成本中心。我们过去因为有钱有想法,开发了很多定制化的系统,这个时候人员开始流动,所有定制化的系统就变成了黑盒子,你碰都不敢碰,就放在这儿等,等SOS,这是风险演变的过程。对于我们而言,最佳实践要避免这样一条弯路。

再进一步的思考,对我们做的这样一个平台经过治理和优化还不够。如果我们能转型再造,其实可以回到一个好的状态,健康最佳实践的状态。那这个转型再造,以阿里大数据平台来说,有两个重要的转型再造:
  • 技术的转型再造。

    我们是最早使用云梯一Hadoop,我们从技术的转型再造就是变成MaxCompute,其实在2013年在阿里内部早就转正了。转型再造由自己的技术来替换升级。

  • 业务的转型再造。

    阿里这样的规模,我们内部的技术可以输出到阿里云上,来进行业务的转型。

我们获得了这样新生的过程,可以看到在整个风险转移过程中,大家是在哪一个位置,我们要有清晰的认识。我们期望的是我们的技术和业务都可持续发展。在这个里面的核心点,要解决的是成本可控和性能的不断提升。数据越多,不是变慢,而一定要更快。数据既要安全,还要共享。大家知道数据进来,谁都不能碰,是没有用的,要让数据价值要得到充分体现。所以我们看到整个建设数据平台的阶段性风险,在这个里面,大家都会栽跟头,包括我们都会碰到很多困难。

敏捷的云数仓CDW八字环法

对这样一些客户的实质性的洞察,我们提出一个新的方法论,海钓中的8字环绕线法,即绕线时较松,当鱼咬钩时不会直接拉后面的鱼绳,它会用力用到8字环缓冲的这一段线,那一段线是多股绕在一起的,会有更大的抗击力,这时候大鱼上钩以后,这个线就不会断了。我们的平台和数据,刚才那一个过程是完全独立的,只考虑建设平台,不考虑数据。但是我们看到在更多的企业里面,平台是一个团队,数据是一个团队。我们不是简单的把平台和数据的工作拼在一起,它就是8字环。我们可以看到8字环的奥妙在于从平台的策略与规划、设计与实现,这是两步。有了最初的原型以后,有了基础平台以后,马上要进入数据运营。要在第三部中发现简单的数据,让数据人员去分析理解、要去探索、要去资产化、要去运营,到了这一步之后,再回到我们的平台侧去进行开发运维,再进行优化治理。

平台和数据是对立的,但是平台孕育了数据,数据也孕育了平台。所以,首先要解决敏捷性的问题,因为你可以很快进入数据阶段,从而更敏捷。同时我们要避免系统崩盘的问题。要连接平台和数据,释放平台对数据的支撑力,平台本来对数据有很好的支撑力,怎么能释放出来?还有一个是“风险”,我们要通过这种方式,不断的实践、验证,将风险消化在日常中。而非做了一个3年规划,到第二年才发现风险是巨大的。针对如上内容,我们给出如下建议:
  • 是否试图通过大数据解决未知问题,还是天天在做已知的报表?
  • 是否有去做预测?是否有做机器学习?是否有对预测性问题的分析?
  • 是否有去引入外部数据来解决问题?

    产品经理要去获得的数据源,不仅限于阿里内部客户和云上客户,如果我不能去看那些使用了非阿里大数据客户的情况的话,他本身也不是一个大数据思维的工作方式,所以这种思考的模式无处不在。

  • 对待数据的态度。

    很多时候,数据处理完即可。但是在数据中不断的探索、挖掘、分析其中他人不知道的问题才是价值。

  • 关于组织的问题。

    虽然说我们在做大数据,但是貌似数据无处不在,但是数据到处不能用,因为到处都是孤岛。我们可以看到在数据驱动型的组织里面,整个业务本身是受数据驱动的,比如说蚂蚁金服,所以你的数据在中间,业务在外面。这样的情况下,你才可能把本末倒置的问题解决掉,这是关于组织的问题。

我们对驱动组织做了一个分类,数据支撑了我们运营、生产最基本的工作,还是支撑了我们的管理工作,还是对决策起到了作用,到底在哪一个层面上?

最佳实践建议

  • 从传统数据分析转变到大数据分析
  • 构建数据驱动型组织。一定要基于可持续发展的策略进行规划,以终为始去想这个问题,这个终,可能是一年、两年、也可能是三年。阿里有句话,路走对了,就不怕远。但是我们走错了,本来往东的,就走西了。
  • 基于可持续发展的策略进行规划。
    • TCO和TVO。

      TCO是我们整体运营的成本,我们要花的钱。TVO是我们想要得到的价值是什么?大家都谈到TCO,但是大家要注意财务的结构,不同的公司的喜好程度是不一样的,有的希望现金流更充足,有的希望一下子能把钱花出去。要符合企业财务的成本结构,也就是说你要把它变成一次性的资产支出,还是变成日常的运营支出?要想清楚企业要的是什么?如果这个搞不清楚,后面就是很大的矛盾。

    • 技术方案。

      在这个过程中不要忽视隐性支出,要知道隐性成本是什么的,不能对隐性成本是视而不见的。TVO,我们要以终为始,兑现数据的业务价值。做大数据的同学,不管是做数据还是做平台,如果我们不能帮助企业兑现数据的业务价值,可能很快就会面临残酷的结果。这里的价值,就是我们通过支撑业务、驱动业务也罢,一定要挖掘出数据的价值。

    • 可持续发展。

      关于技术方案。说到定制化,通常因为我们后面看到了风险,定制化就变成黑盒。定制化和产品化的边界必须清晰。当我们无限的扩充自己定制化边界以后,你要想到有一天这些东西变成黑盒子以后,它意味着什么?另外,你是选择服务器,还是无服务器,我们的聚焦点是平台,还是数据?

    • 风险控制。

      还有业务适配,不要总是推倒重来。风险应尽早暴露,这和软件开发缺陷解决的原理一样。所以一定要有风险意识。

  • 设计支持快速实现
    • 架构设计。

      架构的设计,从全面性、系统、链路都可以进行设计,但是满足需求即可,不要过度设计。

    • 技术选型。

      在PoC评测这个系统时,需要判断这个系统的优点和缺陷。要避免定制化部分的滚雪球,避免定制化陷阱。

    • 落地实现。

      例如,数据增量对开发者而言非常重要,数据开发时如果未考虑数据增量,后期数据量增大后会造成很大问题。所以数据倾斜、作业调度与安全模型、细粒度都需要列入设计范围。

    在数据价值呈现中,要结合数据探索和模型固化,因为数据仓库都是讲模型固化的,一定要有模型。但是模型周期会变长、会变得僵化、业务会变得不灵活,所以要把模型固化和数据探索结合起来,结合数据混合和数据仓库的关系。数据仓库更适合做模型工作,数据混合往往更适合去做数据探索。可以在数据探索中很快的发觉隐藏的问题,更快速的进行数据分析,但也会面临挑战,数据授权、产出问题。

  • 基于地图数据发现并理解数据基于地图数据发现并理解数据

    探索之后,如何更敏捷的做数据仓库呢?通过探索出来的模型来提高复用,通过复用来提升效率。通过模型传播知识,例如,我如何了解我客户的活跃程度呢?我们通过模型,拿到这个模型以后,另外一个同学也就理解了,这个模型里面藏的是知识。还有降低成本,所以我们把Schema、Schema less这两种结合起来,将会进一步提高数据处理分析的敏捷性。

  • 数据探索与模型固化相结合
  • 数据资产化

    还有就是数据资产化,否则我们永远无法定义大数据工作的价值。通过数据的资产化,要为治理提供依据,才可以做数据运营。

  • 数据运营:

    很多时候,数据运营被解释成数据化运营。数据化运营和数据运营是截然不同的概念。数据化运营是指拿了数据以后,去做运营工作。数据运营,指的是说要把我的数据运营起来。这里,可以结合货币的概念,流动性。要提高数据的流动性,提高在数据管理团队以外的投放量。

    数据分析要发现、要探索、要应用、要建模,通过数据运营核心要控制数据的流动性变化趋势。数据谁在用?流到哪个地方去?公司的数据流动性要采取紧缩政策,还是宽松政策?这些问题可以通过数据安全来解决,也可以通过专门的团队来解决,但是如果没有这部分,就会有风险。

  • DevOps

    关于数据安全、数据生产管理、数据质量管理、开发管理,我们也要做到适可而止,不要过度。以安全为例, MaxCompute是有细粒度安全管理的,但是细粒度的安全管理固然很好,但任何管理,越细,成本就越高。企业是否愿意在这方面投资,这就是一个现实的问题。如果没有那么多的投资,势必就会考虑把数据的授权范围做到以部门、团队为授权对象,授权粒度以一个项目为主就够了。所以要平衡细粒度安全管理和管理成本,并做出选择。包括生产管理基线,开发环境,质量管理等,一定要在管理上将责任落实到人,还要实现完善的监督机制,去确保这个能落实,保证数据质量。

  • 优化与治理:

    数据优化和治理,要从计算层面、存储、质量、模型、安全、成本方面进行全方位治理,这当中最有效的抓手就是成本。在整个治理的闭环中,有现状分析、问题诊断、治理、优化、效果反馈,这些我们都要去落实,才能根本上治理脏乱差。

    最后,我们来看基于MaxCompute构建大数据平台。从数据开发,是一套Dataworks的平台,通过接入业务数据源,到数据接入、到数据处理、数据服务以及到应用,这是一个完整的大数据解决方案,在整个大数据平台中强调小核心、大外围。其实在大数据平台中,数据处理占据了80%以上的成本,所以一定要让它简单。阿里基于这样一个策略,推出了完整的解决方案。处理方面有MaxCompute,机器学习方面有PAI,在流计算方面,我们有Stream Compute。

基于MaxCompute的大数据计算平台架构

基于MaxCompute的大数据计算平台架构

在基于MaxCompute的大数据计算平台架构中,上层以数据为中心,下层以平台为中心,组合成理想中的大数据处理平台。

同时我们也分析了很多客户,很多客户都已经选择了Hadoop。所以,我们MaxCompute团队也推出了MMA迁移工具和迁移服务,来帮助我们把Hadoop这样的集群迁移到阿里云的MaxCompute和Dataworks,以及后面的机器学习PAI、流计算等等来帮助我们加速、提效、提高准确性。

从方法到落地,我们背后的思想就是8字环。平台侧,一定要支持按需裁减的方案。在这个过程中,要分阶段实施,整个过程中,性能、成本、灵活扩展性、数据的安全以及稳定运维的复杂度是我们要关注的问题。数据侧,我们要关注并打通数据的全链路,要关注全域数据以及数据资产化。通过MaxCompute团队背后的指导思想和我们给出的技术解决方案,希望与大家能够一起探索一些新的基于云上的数据仓库构建的最佳实践,从而尽量避免走弯路。