动态 > 动态详情
2016年初大数据、云计算的漫谈
发表于 2017-12-06 05:12
2819

最近半年,基本做的事情是在阿里ODPS平台运行社区的代码,比如spark及hadoop等。事情并没有太多的高深莫测的,想想基本是为了解决用户的需求,本文主要梳理下我半年一些事情上的思考。

自主研发 VS 开源系统

我的观点始终保持不变的,当能用社区产品解决问题的,完全就可以用社区的产品,最近1年,spark、docker等技术发展迅速,完全没有必要去自己写一套。我认为有两个情况下需要自己写,第一,目前的产品无法满足现在的需求,在阿里(就目前),比如:支付宝大规模图数据库,阿里妈妈、搜索场景下超高纬度特征机器学习。目前内部用开源的产品做了很多尝试,均没有很好解决问题,最后还是自研一套平台(当然实现也不是完全自己搞,部件能用开源的还是用开源)。第二,为了领先研究,有革命性的,比如:量子计算,GPU计算,也就是从理论开始,并没有特别的业务场景,最后能跨越一个时代的,不过这个特别难,基本也只有公司营收没有问题才可能成立研究院之类的部门。目前在大数据领域,华为、星坏,甚至国外的微软、IBM之类的巨头都基本是投资hadoop之类的软件栈,可以说大数据系统是你中有我,我中有你的,小公司还是请直接用hadoop或者用大公司的产品,大公司还是用了hadoop,阿云当年投资做飞天的时候,hadoop还是婴儿,只是如今发展实在太快。

sql vs sql+类似spark用scala等作为编程语言

微软开发出了T-SQL或者类似的sql script,用户可以用其实现自己的业务逻辑,优化层可以优化。如果是spark之类的,那么优化层不能感知udf层面的逻辑,无法优化,其二中间的会有串行执行的部分,不能做到最优。如果用户都能用sql script实现业务逻辑,那么怎么讲都能做到最优。

不过目前社区的spark、hadoop、flink均不是sql script去实现,只能说尽量能让优化层优化。为什么呢?可能因为程序员喜欢用java、python之类的语言,还是因为开始业务系统使用java、python之类的,所以顺理成章就这么去实现开发了。当然是否可以造一个大数据语言,让大家用此语言,优化层直接就是包含解释器了。理论上肯定是可以的,不过难度确实也很不小,关键还是需要获得市场的认可。有句话说,最流行的未必是最优的。另外,最优带来的成本谁也说不清楚。

统一分析型引擎

spark、flink等产品作为统一引擎,能处理ETL、流、计算学习、图计算等各种各样的场景,这个是甚好的。很多业务为了解决问题往往需要投资很多技术,产品。如:机器学习用mpi,你得去学习写c/c++ , 流式计算得学习jstorm,一套新的api。这个还不是最大的问题,最大的问题往往是不同产品之间往往需要衔接,数据需要用户感知的落地,从而系统做起来很复杂。不过对于一些场景,往往是一些特别的场景还是需要专有系统的,如:低延迟的流 高纬度计算 特别的性能的机器学习等。

统一OLTP与OLAP

目前星坏也是号称可以在大数据引擎上支持传统数据库的语法的,甚至可以支持部分的事务。阿里内部一些产品也在尝试统一。目前OLTP与OLAP的界限也在慢慢模糊,OLTP也可以支持快上TB的数据查询。一般有两个做法,一套语法,两个不同的实现,也就是ifelse,对于用户看起来可能是一个。另外就是完全一套代码实现,此我还没有看到。对于第一种,可能的实现方案基本是底层用mysql等传统数据库作为存储,上层有DAG等决策调度,做到能跨机join。不过目前明确是OLAP不仅仅就是SQL,也许这个事情能解决一部分的需求,但是不可能完全替代传统的hadoop的。

自建hadoop、EMR、ODPS

目前阿里也是支持EMR的,在阿里云官网都有EMR、ODPS的产品介绍。一般来看,EMR、ODPS肯定比自建hadoop成本低的,因为从原理来讲是弹性的,且自己都无需运维,除非公司太黑,收费过高。EMR就是hadoop生态的托管服务,用户可以申请多少个虚拟机,啥时候多啥时候少来弹性计算的。ODPS是阿里巴巴自主研发的产品,ODPS是在物理机器上,用户租用多少cpu,多少内存为资源,在运行中也可以调整quota来实现弹性计算的。目前我是利益相关方,所以就不回答这个问题了。

数据分享

经常跟一些同学聊,用户会把数据分享出来吗?在阿里内部,不同部门之间是经常共享数据的。但是社会呢?不知道,也许会,也许不会。也许2016年会火,也许再过10年吧。?大数据应用也不意味着一定需要交换,数据交换往往意味着会产生更大的价值。云计算,云是载体,计算发挥价值,阿里云的宣传语是为了无法的计算的价值。一是,传统企业的业务系统上云及新的企业的业务系统直接生长在云上,产生数据,后到大数据系统中分析,一般给使用者决策,反哺业务系统。此点业务系统是核心,大数据分析系统是辅助的。二是,业务系统还在在线下,数据上云,分析。三是,物联网产生的数据直接上云,分析。四是,大数据业务分析,也就是大数据分析系统就是其核心业务。前面三者基本都是分析自生的数据,一般无需交换。最后一类,本身没有数据,基本都是别人的数据,要么是公共的社会的数据,要么是购买别家的数据,数据交换的价值在此发生。

公有云,私有云,混合云

如果我去创业,涉及到IT资产之类的,我肯定会选择放在云端的。因为我要解决的是自生的业务是否有竞争力,IT资产采用最小成本的方案去做,公司也好调头,解决生存问题。当企业做成一定的规模的时候,我就会思考,放在云算是否安全,我的核心数据是否会被偷看或者涉密,当我的规模起来的时候,我是否自己搞更加便宜,或者一些无关紧要,但是会占住大量资源的计算放在云端。因为目前企业有不同规模的,也对自己的核心业务有不同的数据安全要求的。所以就慢慢就有了很多模式,目前肯定都有市场的。

DT时代的到来

很多人其实不理解这句话,包括我开始也不理解,感觉说等于白说,数据肯定最重要啊,我们做业务系统的时候,数据库是单点,需要重点保护,挂了网站就基本挂了。业务系统的节点一般无状态,挂几个没有关系。今天,我理解这句话的含义是,以前OLAP的用户基本就是给企业的高层决策的时候提供一些数据的,或者高层决策的时候也完全没有数据,就直接拍脑袋了。现在,很多企业,营销人员甚至代码自身都可以基于数据的分析报告计划下一步的。我现在都带一个小米手环,发现我上个月平均睡觉时间是0点左右,这个月得提前点。也就是人人都会用数据了,当然不一定是大数据,小米手环的数据只有几k。以后数字化会越来越多,这个是一个时代的到来。

 

林林总总也写了不少,基本是随笔,这1个小时想到的。这是一个美好的时代,因为前所未有,也机会无穷。