在本文中优酷数据中台的数据技术专家门德亮分享了优酷从Hadoop迁移到阿里云MaxCompute后对业务及平台的价值。本文内容根据演讲视频以及PPT整理而成。
大家好,我是门德亮,现在在优酷数据中台做数据相关的事情。
很荣幸,我正好见证了优酷从没有MaxCompute到有的这样一个历程,因为刚刚好我就是入职优酷差不多5年的时间,我们正好是在快到5年的时候,去做了从Hadoop到MaxCompute的这样一个升级。这个是2016年5月到2019年现在的5月优酷的发展历程,上面是计算资源,下面是储存资源。大家可以看到整个用户数,还有表的数据,实际上是在呈一个指数式增长的。
但是在2017年5月,当优酷完成了整个Hadoop迁移MaxCompute后,优酷的计算消耗,还有储存的消耗实际上是呈下降趋势的,整个迁移得到了一个非常大的收益。
第一个,简单易用。第二个,完善的生态。第三个,性能非常强悍。
第四个,资源使用非常弹性。第一个特点,简单易用。
MaxCompute有一个非常完整的链路,不管是从数据开发,还是数据运维,包括数据集成,数据质量的管控,还有整个数据地图,数据安全。
当年优酷从Hadoop迁到MaxCompute之后,我们最大的体会是自己不用半夜经常起来去维护集群了,不用去跑任务了,写一个任务,别人之前提一个需求过来,我可能要给他排几周,而现在我可以告诉他,我给你马上跑一下,就可以出来了。包括之前像分析师BI还要登录客户端,写脚本,自己写调度,经常会说我的数今天为什么没出来?包括高层看的数,可能要到12点钟才能出来。而现在基本上所有重要的数据都会在7点钟产出,包括一些基本的业务需求,其实分析师或者产品,他们自己都可以实现了,不需要所有需求都提到数据这边。
第三个特点,强悍的性能,MaxCompute支撑了优酷EB级的数据存储,千亿级的数据样本分析,包括千亿级的数据报表,10W级实例的并发、任务。这些在之前维护Hadoop的时候,是想都不敢想的。第一个,它是按用量计费的,不是说给你多少台机器,然后就收你多少钱的,真的是你用了多少资源收多少钱的,这个在成本上来说,比自己去维护集群,可能是一个砍半(降50%)这样的收益。第二个,实际上MaxCompue计算资源是可以分时的,比如说生产队列,凌晨的时候会调高一些,保证报表能够尽快出来。
到白天时候,让开发的计算资源高一些,可以让分析师、开发去临时跑一些数据,会更顺畅一些。第三个,MaxCompute快速的扩容能力,比如说突然有一个比较强的业务需求,发现数据跑不动了,计算资源不够,所有的队列都堵死了,这个时候其实可以直接跟运维说一声,帮忙一键扩容,他两秒钟敲一个命令就搞定了。这样的话,所有的资源可以迅速的消化下去。这张图可能也是业界比较流行的一个数仓分层的图,因为我们这边是数据中台,所有的数据都是统一从ods层cdm层,然后ads层,去一层一层的往上去做精细,再到最上面,通过接口服务、文件服务、SQL服务,去提供多样化的服务。
再往上面,提供对内的一些数据产品,对高管、对小二,可能还有一些对外的,比如说像优酷的播放数,包括热度这些对应用的数据。这张图大部分互联网公司不太会涉及到,就是关于反作弊的问题。这个是我们在MaxCompute做的一个反作弊的架构,通过原始的数据去提取它的特征,然后再通过算法模型,包括机器学习、深度学习、图模型去支持流量反作弊、渠道反作弊等等。再通过业务场景上反作弊的监控工具,把监控到的作弊信息去打一个黑白样本,再把这个黑白样本跟特征一起来不断的迭代优化算法模型。
同时针对算法模型,做一个模型的评价,不断来完善反作弊体系。最后一点,其实还是跟成本相关,在日常使用中,一定是有小白用户或者一些新来的用户去错误的使用或者不在乎的使用一些资源,比如经常会有一些实习生或者是非技术的同学,如分析师,一个SQL消费比较高,这个其实是非常浪费资源,而且可能他一个任务,让其他所有人的任务都在这儿等着排队,实际上我们会去对整个的资源做一个治理。从节点的粒度上,通过大数据来治理大数据,我们可以算出哪些表产出来之后,多少天没有被读取的,包括它的访问跨度可能没有那么大的,我们会去做下线或者去做治理,有一些业务场景可能并不是非常的重要或者它的时间要求没有那么高,比如一些算法训练,可以去做一些错峰的调度,保证水位不要太高。
从MaxCompute任务的角度,可以算出哪些任务有数据倾斜、哪些数据可能会有相似计算,哪些任务需要去做MapJoin,哪些任务需要去做一些裁剪,然后来节省它的IO。还有哪些任务会去做暴力扫描,扫一个月、扫一年的数据,哪些数据可能会有这样一个数据膨胀,比如说它做了CUBE之类的这种复杂计算,一些算法模型的迭代;我们通过数据计算出来的这些迹象,去反推用户,来去提高它的这样一个数据的质量分,来去达到我们降低整个计算资源的目的。在计算平台的角度,我们也持续的在使用MaxCompute推出的一些非常高级的用法,比如我们这边的HBO、Hash Cluster、Aliorc,HBO就是我们基于一个历史的优化,这样避免了用户不知道怎么调参,我可能为了自己任务快一点,就调一个特别大的参数,这样的话,对集成的资源是非常浪费的。
通过这个功能,用户就不用去调参数,集群自动调好,用户就写好自己业务逻辑就好了。最后一页是存储的优化,因为像一些关键的原始数据或者是需要审计的数据是不能删的,永久不能删的。实际上就会造成我们数据存储的趋势是一直往上不减的,计算会在某一个时间点达到一个平衡。当前用这么多的计算资源,再往后,其实应该也不会再大涨了,比如说旧的业务逻辑下掉了,会换新的业务逻辑,这样会保持在一个相对平稳的波动上面。
但是储存,因为它有一些历史的数据是永远不能删的,可能会出现一直在增长,而且是指数级的。所以我们也会持续关注存储的情况,我们主要有四个手段。第一个,还是通过大数据来治大数据,去看哪些表它的访问不够或者它的访问跨度不够。
就是对一些生命周期的优化,来去控制它的增速。包括下面的,刚才提到的Aliorc,实际上是做压缩的,我们会去做一些大字段的拆分,来提高压缩的比例。OK,这个是优酷在MaxCompute中的一些应用场景,感谢大家的聆听。本文作者:隐林原文链接 更多技术干货敬请关注云栖社区知乎机构号:阿里云云栖社区 - 知乎本文为云栖社区原创内容,未经允许不得转载。