自主研发 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年吧。?大数据应用也不意味着一定需要交换,数据交换往往意味着会产生更大的价值。云计算,云是载体,计算发挥价值,阿里云的宣传语是为了无法的计算的价值。一是,传统企业的业务系统上云及新的企业的业务系统直接生长在云上,产生数据,后到大数据系统中分析,一般给使用者决策,反哺业务系统。此点业务系统是核心,大数据分析系统是辅助的。二是,业务系统还在在线下,数据上云,分析。三是,物联网产生的数据直接上云,分析。四是,大数据业务分析,也就是大数据分析系统就是其核心业务。前面三者基本都是分析自生的数据,一般无需交换。最后一类,本身没有数据,基本都是别人的数据,要么是公共的社会的数据,要么是购买别家的数据,数据交换的价值在此发生。