在本文中阿里云资深产品专家云郎分享了基于阿里云 MaxCompute 构建企业云数据仓库CDW的最佳实践建议。安全
本文内容根据演讲视频以及PPT整理而成。服务器
你们下午好,我是云郎,以前在甲骨文作企业架构师8年,目前是MaxCompute产品经理。架构
在这么长的客户工做过程当中,做为产品PD,必定是跟客户在一块儿的。我常常被一些问题挑战:云郎,咱们如今要建数据仓库,我该怎么去规划?云郎,我如今这边是大数据的建设团队,好像数据团队不怎么理我,什么状况?云郎,咱们这边如今建了一个平台,如今性能好像有问题,是否是咱们哪些地方设计的有问题,仍是考虑的不够?能够看到,不一样的客户在不一样的阶段有不一样的问题,在这么多的客户问题里,背后到底隐藏了什么规律?在这里面有没有一些最佳实践,咱们能够总结出来,让你们去少走一些弯路,这是个人出发点。less
既然谈到最佳实践,你必定要知道哪些不是最佳实践,就像医生必定要看过不少病人之后,才更容易判断是否是健康。运维
个人客户从哪里来呢?
第一,是阿里巴巴自己有不少个BU,刚才咱们也谈到了阿里巴巴全部的数据都是运行在MaxCompute,去作数据仓库,去作加工处理。也许你会挑战我,你解决阿里的问题,咱们碰不到,没错,我也确实发现这个问题,即便咱们能解决阿里的问题,可是不必定能解决客户的问题。
第二,咱们碰到的问题,也不必定能表明客户的问题,由于你的规模和我不同、你的现状和我不同、你的能力和我不同、你的目标和我不同。MaxCompute也在云上提供服务,咱们云上有不少客户,在座的不少朋友都是MaxCompute的用户。因此我把客户的范围进一步归入到我目前已有的这些客户里面。也许你还会问,你说你是最佳实践,那是基于你本身产品的最佳实践,难道他不用你的产品,你就不能再去分析吗?
因此,我又分析了第三类客户,在中国,有不少企业使用了非阿里的技术,那么他们在这大数据方面又碰到了哪些问题?我相信在座各位也作过不少分享,例如A公司的大数据实践经验, B公司的大数据演进历程,那么咱们也会基于这样的案例作出分析。
第四,在阿里这样的一个生态里,收购了不少公司,在外界公司和阿里内部公司融合迁移的过程当中,又有哪些最佳实践?
因此咱们把这四类客户统一块儿来看,从现象到本质,这是今天我想要跟你们分享的内容。机器学习
你们都在谈大数据,最先在2013年开始在甲骨文作信息解决方案,当时已经研究出了大数据。我在以前是作DB的,Data Base。后来发现转了个身,转成了BD,Big Data。在这个过程当中,技术好像作了个变化,就翻了个身,关涛讲了不少,你们颇有体会。那这些技术在过程当中怎么去用?方法有没有发生变化?客户常常问我一个问题,云郎,我要拿MaxCompute来干什么?我说了不算,后来我就作了不少分析。我发现无论去作什么应用,客户在MaxCompute之上,他首先主要都是在构建他的数据仓库,如今咱们把它叫做Cloud Data Warehouse,你们知道数据仓库,它既是一套数据体系,同时它也是一个工程过程,要更多的从工程的角度来看,咱们看到这是如今目前业界很是典型的数据仓库实时的生命周期流程。咱们发现技术从Data Base,DB转到了BD,可是这张图不少还被普遍的应用,当我跟不少客户的架构师,大数据负责人或者开发人员去沟通的时候,咱们发现他背后的思路都是沿着这张设计的生命周期而产生的。那咱们能够看到从这个数据仓库,当碰到Cloud Native,再到咱们说转到Big Data之后,那么怎么真的去作Cloud Native这样一个Data Warehouse,咱们看到在这个过程当中,从项目的工程规划到业务需求,到最终咱们看到一个小的迭代维护,数仓开发完成,交付你们去使用。工具
在这个过程当中,咱们能够看到传统的DB时代,是以建设为中心的一个项目。那么到了大数据,建了是生下来,养才是关键。养之道在于什么呢?在于运营。因此整个环节中,咱们能够看缺失了大数据的精髓所在。oop
咱们看分别是哪些状况呢?性能
第一,我相信不少人来自于互联网公司,若是你来自央企、政府部门,恭喜你,你可能没有这个痛苦,由于你有足够的时间去规划,给你半年时间,给你500万,你帮我作规划咨询出来。但你若是是互联网公司,对不起,今天上岗,明天帮我把数据拿出来,好很差?因此咱们是没有那么多时间的。那咱们在这里面须要作到什么呢?轻量化,咱们从数据仓库整个生命周期上,咱们要的是敏捷数仓。那软件工程,咱们要的是敏捷开发,数据仓库。学习
第二,对于需求的问题,为何你能作规划?由于你能知道后面会发生什么,你的业务基本上是固定的,你能知道政府部门后面要干什么、你能知道央企后面要干什么,但若是你是互联网公司,你到明年存不存在都还不必定,也就是说你可能还没规划完,就要转型了,业务要转型了,需求很是不明确,那你能不能作到明确,挑战很是大。
第三,若是咱们规划出来一个很是完美复杂的技术方案,它的落地周期会给咱们带来挑战,因此咱们须要技术上可否简化?要快速才是王道。
第四,关于数据建模,你一开始就想把这些模型都创建起来,其实这是不少数据工程师常常碰到的问题,我有这么多数据,我所有都能把它灌进来,把这个模型固化下来。咱们发现掉到这个井里之后,带来的后果是什么呢?你长长久久的是技术本身关在门里边,结果业务在门外边,他敲你的门,永远敲不开,由于我还在作数据模型的事情,我还在作我本身的事情。
咱们能够看到关于数仓的应用,你建了大数据,绝对不是传统的把DB转成BD,你就仍然去作报表,你的场景毫不是这么简单。在这里必定还有机器学习,人工智能、预测等众多的应用,它才能发挥价值。这是一个迭代的过程。可能按月都是对这个模型比较赞美的,由于每每可能三个月是一个周期,从提出一个需求,到最后实现,在传统里,可能须要月的时间。今天按小时、按天帮我实现,个人数据仓库要发生变化,你怎么去构造?
还有就是运维这一侧,开发人员和运维人员能作到我们今天的所谓的DevOps,若是你是数据开发人员,怎么样能作到整个大数据平台的DevOps,这是很大一个挑战。
在以项目管理为中心、以建设为中心这样的背景下,咱们能够看到真正的数据运营是被忽视的,因此这是咱们今天整个要引出的话题,就是数据的价值必定要经过运营才能得以呈现。运营又是什么概念呢?
企业大数据计算平台的建设,跟咱们人的发展同样,刚开始,谈恋爱,蜜月期很是好,其实不少锅碗瓢盆的问题是不用考虑的。但随着建设的发展,结婚,生小孩,锅碗瓢盆的问题必定要考虑的,因此不一样的问题,其实考虑的痛苦点不同。
咱们看到这样一个时间轴,横轴,以时间来推进,第一个月,六到十二个月,十二个到十八个月,到第二十四个月,在分析了上百家的企业客户后,咱们看到在这样一个周期里,分别会碰到什么样的问题,技术方案不同,但痛苦是同样的,风险是同样的,这是横轴。
纵轴,业务规模是这条黄色的线,风险是蓝色线。业务在这里面能包出来的半径就是咱们所谓的价值,蓝线包起的面积就是咱们的风险,刚才关涛也谈到了,说咱们的业务面积和风险面积,哪个更大,这就决定了咱们的成败。咱们看到这样一张图,在第一个月是蜜月期,大部分客户均可以快速的经过定制化方案,快速启动数据仓库,由于是蜜月期,很是快,这个时候有热情、有投资、有人手,咱们快速一个月搞起来了。到了半年到十二个月,业务上来了、规模上来了,这个时候要搭火箭了,要快速成长了,进入青春期了,青春期这个地方是有一个火箭的,这个火箭跟小孩子的成长同样,到青春期有两个方面,你管得好,他就是一我的才,管得很差,他可能就变成了一个混混。那这个火箭就在于往哪条线上走。
随着业务大规模的扩展,数据量、计算量急速增加,这个时候就给咱们的性能、成本带来了巨大的挑战和要求,系统能不能解决持续的发展矛盾,就成本、性能、数据安全和分析效率里面的矛盾随着咱们业务的发展,咱们如今碰到这些问题,该怎么去解决?在整个风险上升的过程当中,咱们看到这条线是说风险在上升的。上升了之后,有不少公司,包括咱们的客户,能够看到在这个以后就会启动一轮治理和优化,包括性能的优化、成本的优化,经过阶段性的优化,达到好的效果。
接下来业务还在不断发展,咱们能够看到在这两条线里面又会走向风险失控的过程当中,也就是说咱们的系统在这个时候变成了成本中心。咱们过去由于有钱有想法,开发了不少定制化的系统,这个时候你的人员开始流动了,你全部定制化的系统就变成了什么?黑盒子,你碰都不敢碰,就放在这儿等,等SOS,这是风险演变的过程。
对于咱们而言,最佳实践显然是不能走这条路的,咱们要避免这样一条弯路。
再进一步的思考,对咱们作的这样一个平台通过治理和优化还不够。若是咱们能转型再造,其实能够回到一个好的状态,健康最佳实践的状态。那这个转型再造,以阿里大数据平台来讲,有两个重要的转型再造,第一个是技术的转型再造,你们也知道,咱们是最先使用云梯一Hadoop,咱们从技术的转型再造就是变成咱们的备胎MaxCompute,其实在2013年在阿里内部早就转正了,最近备胎很火,它在最初是备胎。转型再造由本身的技术来替换升级。
接下来,就是业务,阿里这样的规模,咱们内部的技术能够输出到阿里云上,来进行业务的转型。咱们得到了这样新生的过程,能够看到在整个风险转移过程当中,你们是在哪个位置,咱们要有清晰的认识。咱们指望的是咱们的技术和业务均可持续发展。在这个里面的核心点,要解决的是成本可控和性能的不断提高。数据越多,不是变慢,而必定要更快。数据既要安全,还要共享。你们知道数据进来,谁都不能碰,是没有用的,要让数据价值要获得充分体现。
因此咱们看到整个建设数据平台的阶段性风险,在这个里面,你们都会栽跟头,包括咱们都会碰到不少困难。运用《三体》的一句话:“在这些拐点上,毁灭你,与你无关。”,真的是等不及的。对这样一些客户的实质性的洞察,我提出一个新的方法论,不知你们有没有钓过鱼,有没有钓过大鱼?钓小鱼时,是把鱼钩和鱼绳是直接拴在一块儿的,由于小鱼的力量不会那么猛。但若是你作过海钓,钓大鱼的时候,你有没有发现,若是你的鱼钩和鱼绳是直接拴在一块儿的,那个鱼咬了饵之后,把钩挂住之后,它会忽然有一个很大的力,你的鱼绳是直的,因此它会把你的鱼绳直接崩掉,形成系统崩溃,在这个里面就会出现这样的问题,钓过鱼的人就会有这样的经验。
可是这里面是有解决方案的,鱼绳上你们都知道是有一个8字环绕线法,把这个线绕得比较虚一点,当这个鱼咬到个人钩,拉的时候,它不会直接拉后面的鱼绳,它会用力用到8字环缓冲的这一段线,它忽然间把这一段线拉紧了,那一段线是多股绕在一块儿的,会有更大的抗击力,这时候大鱼上钩之后,这个线就不会断了。
平台和数据有没有这样一种过程?咱们的平台和数据,刚才那一个过程是彻底独立的,我只考虑建设平台,不考虑数据。可是咱们看到在更多的企业里面,平台是一个团队,数据是一个团队,或者平台有不少拨人,数据有不少拨人,但无论怎样,平台就是平台,数据就是数据,咱们说平台和数据的关系就是我中间画的一个阴阳图。因此在这里面能够看到,咱们不是简单的把平台和数据的工做拼在一块儿,它就是8字环。咱们能够看到8字环的奥妙在于从平台的策略与规划、设计与实现,这是两步。你有了最初的原型之后,有了基础平台之后,立刻要进入数据运营。你们能够看到第三步,要在这个里面,有简单的数据要去发现,让数据人员去分析理解、要去探索、要去资产化、要去运营,到了这一步以后,再回到咱们的平台侧去进行开发运维,再进行优化治理。
平台和数据是对立的,仍是说平台孕育了数据,数据也孕育了平台,在这里面,咱们树立了什么样的观点?我以为是你们要去好好思考的。若是你是数据,你去想一想你跟平台的关系。若是你是平台,你去想一想你跟数据的关系是什么?这样的关系处理很差之后,基本上是不会有最佳实践的。
因此,第一个是要解决敏捷性的问题,由于你在这里面能够很快进入数据阶段,从而更敏捷。同时咱们要避免刚才说的拉钩断掉的问题。要链接平台和数据,释放平台对数据的支撑力,平台原本对数据有很好的支撑力,怎么能释放出来?这是咱们要考虑的。
还有一个是“风险”,咱们要经过这种方式,不断的实践、验证,将风险消化在平常中。而非作了一个3年规划,到第二年才发现风险是巨大的。
针对如上内容,给出几点建议。
咱们对驱动组织作了一个分类,数据支撑了咱们运营、生产最基本的工做,仍是支撑了咱们的管理工做,仍是对决策起到了做用,到底在哪个层面上?
必定要基于可持续发展的策略进行规划,以终为始去想这个问题,这个终,多是一年、两年、也多是三年。阿里有句话,路走对了,就不怕远。可是咱们走错了,原本往东的,就走西了。在规划阶段要看四个方面。
挑重点来讲,第一,你们都谈到TCO,我以为你们要注意财务的结构,不一样的公司的喜爱程度是不同的,有的但愿现金流更充足,有的但愿一会儿能把钱花出去。要符合企业财务的成本结构,也就是说你要把它变成一次性的资产支出,仍是变成平常的运营支出?要想清楚企业要的是什么?若是这个搞不清楚,后面就是很大的矛盾。
第二,在这个过程当中不要忽视隐性支出,要知道隐性成本是什么的,不能对隐性成本是视而不见的。TVO,咱们要以终为始,兑现数据的业务价值。
作大数据的同窗,无论是作数据仍是作平台,若是咱们不能帮助企业兑现数据的业务价值,可能很快就会面临残酷的结果。这里的价值,就是咱们经过支撑业务、驱动业务也罢,你必定要挖掘出数据的价值的。
关于技术方案。说到定制化,一般由于咱们后面看到了风险,定制化就变成黑盒。咱们说定制化和产品化的边界要考虑清楚。当咱们无限的扩充本身定制化边界之后,你要想到有一天这些东西变成黑盒子之后,它意味着什么?另外,你是选择服务器,仍是无服务器,咱们的聚焦点是平台,仍是数据,这是你们要去考虑。
还有业务适配,不要老是推倒重来。风险应尽早暴露,你们知道规划出来都是PPT文档,文档里面都是坑,你越晚执行,坑就埋得越久,前面滚雪球滚得很大了,后面解决起来,成本就很是大了。跟软件开发缺陷解决的原理是同样的。这个里面必定要有风险意识。
关于规划,在设计阶段,要支持快速的实现。并不是要求你一天作到,但在互联网行业去作,可能两周、一个月,每每三个月就是个阶段,能快速实现,三个月真的是一个很长的时间。
架构的设计,从全面性、系统、链路,这都是很美好的事情,可是我真心给出建议是够用就行了,不要过分设计。
技术选型,在PoC咱们要找的是什么?好用、能用、不能用?你要在这个里面找到它们的边界、它们的拐点。你老是找每一个系统里面最好的那一点,可是你不知道这个里面不可用的点在哪里?我举一个例子,你们就明白了,就是你评测这个系统的时候,你要知道它哪一个地方更好,哪一个地方好用、哪一个地方能用、哪一个地方不能用?当有人承诺全部都是最好用的时候,你就必定要注意。要避免定制化部分的滚雪球,避免定制化陷阱。
在落地实现方面,举个例子,数据增量,对开发者而言,作数据开发时,好比我写一个数据的生产过程,那时候的数据量很小,你不会考虑分区。180天之后,由于你没有考虑外延,它慢慢就增多到180倍了,这个最佳实践,你们是要留意的。后面咱们的团队也会总结出来一个技术方面的最佳实践。包括数据倾斜、做业调度与安全模型、细粒度,这些你们都要考虑到。
在数据价值呈现中,要结合咱们的数据探索和模型固化,由于数据仓库都是讲模型固化的,必定要有模型。可是模型,你们知道周期会变长、会变得僵化、业务会变得不灵活,因此咱们必定要把模型固化和数据探索结合起来,结合刚才那位同窗关注的数据混合和数据仓库的关系,在我看来,数据仓库更适合作模型这一块的工做,数据混合每每更适合去作数据探索。你能够在数据探索中很快的发觉隐藏的问题,更快速的进行数据分析,但也会面临挑战,数据受权、产出是问题。由于你没法把你全部的数据都放在里面,让每一个人想看什么就看什么。数据仓库,咱们拼了命的作安全,仍然受到你们的挑战,这是现实问题。
探索以后,如何更敏捷的作数据仓库呢?那么你经过这个里面探索出来的模型来提升复用,经过复用来提高效率。经过模型传播知识,例如,我如何了解我客户的活跃程度呢?咱们经过模型,拿到这个模型之后,另一个同窗也就理解了,这个模型里面藏的是知识。还有下降成本,因此咱们把Schema、Schema less这两种结合起来,将会进一步提升咱们数据处理分析的敏捷性。
还有就是数据资产化,不然的话,你永远都说不清楚你本身的价值,你其实在帮别人作一个什么呢?你是在作别人成本的事情,你只有把它资产化了,作数据的人才能说清楚本身的价值在哪里。经过资产化能够作什么?要为治理提供依据,你只有列得清清楚楚了,才知道哪一个地方花多了、哪一个地方花少了,花得健康不健康,要有这样健康排名。有了这个排名,咱们就能够作数据运营。
不少时候,数据运营被解释成数据化运营。数据化运营和数据运营是大相径庭的概念。数据化运营是指拿了数据之后,去作运营工做。数据运营,指的是说要把个人数据运营起来。这里,能够结合货币的概念,流动性。要提升数据的流动性,提升在数据管理团队之外的投放量,这是很金融化的一个词,我在准备的时候,就是看了金融的模型来作这个事情。由于要解决流动性的问题金融行业最有经验,因此我也看了模型。
投放量,咱们能够看到,这是咱们的数据管理团队,你们都像小蜜蜂同样很勤劳,数据获取、加工组织、存储。。。小蜜蜂和蜂王都很勤快。那猫头鹰在哪里呢?这个图怎么没显示出来,作数据分析的人不是小蜜蜂,应该是猫头鹰,很是敏锐,眼睛很毒。数据分析要发现、要探索、要应用、要建模,在这里,经过数据运营核心要作什么呢?控制数据的流动性变化趋势,你的数据,谁在用?流到哪一个地方去?你如今公司的数据流动性,你要采起紧缩政策,仍是宽松政策?咱们必定要把这个事情作起来,你能够经过数据安全来作,也能够经过专门的团队来作,若是没有这部分,就会有风险。
关于数据安全、数据生产管理、数据质量管理、开发管理,咱们也要作到适可而止,不要过分。以安全为例,最初的时候,我做为MaxCompute PD,给客户推荐 MaxCompute是有细粒度安全管理的,你必定要用上。后来,客户慢慢教育了我,细粒度的安全管理当然很好,但他到用的那一天,他天然会用。他没用的那一天,当然有他的理由。由于任何管理,越细,成本就越高。企业是否愿意在这方面投资,这就是一个现实的问题。若是我没有那么多的投资,势必就会考虑把数据的受权范围作到以部门、团队为受权对象,受权粒度以一个项目为主就够了。因此要平衡细粒度安全管理和管理成本,并作出选择。包括生产管理基线,开发环境,质量管理等,必定要在管理上将责任落实到人,还要实现完善的监督机制,去确保这个能落实,保证数据质量。
优化和治理,每每是个沉重的话题。先说咱们的城市,之前谈城市管理,如今谈城市治理。城市小的时候,管理就够了,城市大了,就要治理了,治理什么?三个字,脏乱差。就像咱们的系统大到必定程度后,也会出现脏乱差。因此须要治理,要从计算层面、存储、质量、模型、安全、成本方面进行全方位治理,这当中最有效的抓手就是成本。在整个治理的闭环中,有现状分析、问题诊断、治理、优化、效果反馈,这些咱们都要去落实,才能根本上治理脏乱差。
最后,咱们来看基于MaxCompute构建大数据平台。从数据开发,是一套Dataworks的平台,经过接入业务数据源,到数据接入、到数据处理、数据服务以及到应用,这是一个完整的大数据解决方案。在整个大数据平台中,咱们强调小核心、大外围。其实在大数据平台中,数据处理占据了80%以上的成本,因此必定要让它简单。阿里基于这样一个策略,推出了完整的解决方案。处理方面有MaxCompute,机器学习方面有PAI,在流计算方面,咱们有Stream Compute。
刚才谈到的关于数据那部份内容,这是平台、这是数据,由这张图映射到刚才咱们说的数据中孕育着平台、平台中孕育着数据的这样一个设计理念。在上面,这是以数据为中心的,在下面,这是以平台为中心的,整个合成咱们想要的大数据处理平台。
同时咱们也分析了不少客户,不少客户都已经选择了Hadoop。因此,咱们也推出了MMA迁移工具和迁移服务,来帮助咱们把Hadoop这样的集群迁移到阿里云的MaxCompute和Dataworks,以及后面的机器学习PAI、流计算等等来帮助咱们加速、提效、提升准确性。
最后总结一下,从方法到落地,我背后的思想就是8字环。这边是数据、这边是平台。平台侧,必定要支持按需裁减的方案。在这个过程当中,要分阶段实施,整个过程当中,性能、成本、灵活扩展性、数据的安全以及稳定运维的复杂度是咱们要关注的问题。数据侧,咱们要关注并打通数据的全链路,要关注全域数据以及数据资产化。
总之,经过咱们背后的指导思想和咱们给出的技术解决方案,但愿与你们可以一块儿探索一些新的基于云上的数据仓库构建的最佳实践,从而尽可能避免走弯路。这就是全部我今天想跟你们分享的内容与目的,很是感谢!
本文为云栖社区原创内容,未经容许不得转载。