大数据与 AI 生态中的开源技术总结

本文由云+社区发表

做者:堵俊平python

在数据爆炸与智能革命的新时代,新的平台与应用层出不穷,开源项目推进了前沿技术和业界生态快速发展。本次分享将以技术和生态两大视角来看大数据和人工智能技术的发展,经过分析当下热门的开源产品和技术,来梳理将来的行业生态以及技术趋势。数据库

img

咱们今天的主题分为三块,第一是从开源的角度看技术、产品和生态,第二,咱们从腾讯云大数据的角度梳理开源的实践,并跟你们分享一下咱们最近一段时间或者最近一年以来咱们的贡献和成果。最后会跟你们一块儿探讨一下开源的大数据以及AI这个生态当中的一些热点和趋势。安全

开源:技术、产品与生态

最近在大数据这个圈子里,开源圈或者是整个大数据的圈子里有一个公共性的事件,作发行版的厂商,大数据领域两大技术巨头 Cloudera和Hortonworks忽然宣布合并,这两个公司其实从开源界从商业界,都是互相打的不可开交的两个公司。从历史上去观察这两个公司,咱们当时认为是彻底不可能合并的两个公司,为何呢会忽然合并?网络

开源大数据的危机?

我以前曾经在其中一家公司工做过,长达4年时间。当时从个人观察,这两个公司在这段时间里面到了老死不相往来的地步,四年的时间只有一个工程师跳到了对方公司。但这样的公司在今天这样一个时代,大数据、AI或者云时代,这两个公司合并了。合并意味着什么?外界有不少猜测,这是强强联手,仍是抱团取暖,是主动求变,仍是来自资本的压力,一千我的有一千个答案。咱们从外部角度能够看出一些端倪,或者说从整个开源的运动或者开源的社区,生态发展能够看出一些端倪。框架

第二个开源重要的消息就是说有些开源的厂商在最近这段时间里面,从彻底开源的许可证协议转向了部分开源,或者说有条件的开源,把一个彻底开放的生态变成了变动的许可证协议,mongoDB更改开源协议是能够继续用个人代码,若是把它做为一个服务开放出来的话,要开放全部的支撑服务代码。Redis加了一个规定是能够正常使用分发,但不能销售这个产品。咱们看到这些曾经乐于开源的厂商,如今对开源的许可证加了不少限制和条款。机器学习

img

开源产品的“冰山困境”

整体来讲,站在支持纯开源的、我的的角度来看,这是从开源到部分限制性的一种倒退。形成倒退的缘由是什么呢?对于基于开源项目的产品,个人总结是可能面临所谓的冰山困境。什么意思?就是说从用户视角去看开源产品也好,或者说非开源的产品也好,可能不少时候关注的是产品的功能和性能。冰山下面的这些技术的复杂性、成熟度可能关注不足,可能在挑选相似功能产品的时候每每从功能、性能、价格等外部的维度角度来考虑。分布式

基于用户对于功能、性能以及性价比的追求,软件供应商可能更加放大或者专一于这些差别化的软件的开发和研发。对于冰山底部的大开源平台,这个开源部分的能力,他本质上是属于同质化的。不少软件供应商会去想:若是我在这里投入大规模的研发,实际上与市场上的竞争对手的产品之间就体现不出差别性。因此这里的冰山困境是指对开源产品,无论是用户仍是商业组织,会更多的关注水面以上的部分。形成的结果会是什么呢?若是你们真的只关注水面上的部分,只关心上层建筑是否搭的愈来愈高,愈来愈好看,而不注意维护冰山底座的部分,会形成底部消融,若是底部不稳,整座冰山都会出现问题,围绕开源项目所构建的生态体系就会垮掉。这样的事情发生的多了,会影响公众对开源项目与软件的信心,咱们这样一个开源大发展的时代又会回退到闭源的状态。oop

img

开源的产品发展到今天,咱们一块儿要反思一下,为何会出现所谓的冰山困境,怎么样突破这些冰山困境。我以为从一个开源软件的整个生命周期来看,咱们可能有不同的观点。对于开源软件供应商来讲,开发阶段用所谓的拿来主义,基于现成的软件来构建,能够下降他的开发成本,包括在社区里面利用一些社区外部的资源来促进开发流程或者开发的进度,这些都是很好的布局。布局

可是对于测试部分和维护部分,无论是开源软件的发行商或是云厂商,可能都有关注不足的部分。什么意思?刚刚咱们说到基于开源能够作开发,能够下降所谓的开发成本,但相应的测试成本并无太多的下降,由于测试的复杂度很高,这些开源软件都是独立的社区去开发的。它们之间在版本发布的时间点上没法作到同步,因此这些不一样步形成了不少时候版本之间有版本或者时间点上的冲突,须要你去测试不一样软件之间的边界与协同。性能

因此在这个层面上,虽然使用基于开源的软件去打造一个企业化的软件,咱们能够下降一些开发成本,可是在测试成本这块,不要轻易下降这部分的成本和投入。在这块,须要厂商而且清醒的认识和严谨的态度。若是测试不到位,对用户的感受是开源软件很不稳定,实际上这不是开源软件的错,而是软件提供商没有通过严格意义上的测试。无论是开源仍是闭源,没有通过充分测试的软件是不稳定的。

img

无论是开源的,仍是闭源产品。重要的不是代码,重要的是后面的社区、后面的人,若是没有后面精通这些代码的人,拿了这些代码也没用,由于有些技术债,是早晚要还的。对于维护阶段的技术债,如今的开源软件提供商、尤为是开源社区投入资源不足的发行商,彻底没有这个概念。若是从软件整个生命周期来看这个问题,若是在用户侧和软件提供商侧达成这样一个共识,就天然不只会专一冰山上面的一层,冰山下的广大的底座也会相应的重视和增强投入。这样整个开源生态就会走一个正向、积极的循环。

从维护开源生态健康的角度来讲,腾讯云也有一些相关的尝试,这里以云上的大数据产品为例,作一些分享,包括后面的一些实际的成果。

腾讯云大数据的开源实践与贡献

举一款产品,咱们叫腾讯云数据仓库产品Sparkling,是基于不少开源的技术,打造了一款云仓库,它能够对云上多种数据源进行存储,好比说云对象存储COS,云数据库,弹性MapReduce等等,还有传统的关系型数据库也能够对接。后面经过数据集成来构建数仓,数据集市来知足BI等数据应用。它基于很是强大的Hadoop以及Spark开源大数据技术,并进行了相应的一些优化。这些优化已经以patch的方式回馈给社区。同时它提供一个数据开发IDE,这样用户能够写传统的数据分析SQL,也能够支持机器学习经常使用的python,R等语言。除此以外,对于数据资产管理、数据门户、数据质量控制这块也都有相应的解决方案。

img

值得一提的是,由于它是一款针对云的特性而设计的一款数仓产品,因此对于云特性的利用已经到了一个比较高的阶段。咱们把全部的节点分为三种,主节点、核心节点和弹性计算节点。主节点是一些重要的控制性节点,核心节点包含数据节点和计算节点,而弹性计算节点只有计算节点,因此支持可伸缩的部署。咱们对开源的项目作了不少改进,好比说支持一些企业级的安全特性,包括对于数据受权和鉴权的支持等等,咱们还跟英特尔一块儿合做,在社区里面持续优化SparkSQL的任务执行器,在执行的时候能够动态调整执行计划。咱们对于数仓的列式存储层,也作了不少优化工做,包括咱们也回馈到Parquet社区里的bloomfliter功能来支持更快速的数据扫描。咱们当前也在针对于列存作基于MVCC的ACID支持,也有计划把相应的方案和代码回馈给社区。咱们的这款产品会在开源的基础上把相应的技术优化提高以后,再回馈给开源社区。

img

因此咱们试图为这些开源项目作更多的贡献,若是每个云厂商都可以积极主动的贡献技术力量、技术资源给开源社区,这对开源的生态健康是很是有意义的。咱们仍是Apache开源软件基金会的白金赞助商,这个组织有不少大厂来支持它,为何会有这些大厂来支持?由于它是不少软件,包括大数据,包括人工智能等核心软件背后的一个很重要的源泉,是水源地,咱们作这些贡献和赞助不是由于有相应的权利保障,而是为了保护好这个水源地,这对开源生态是很是重要的。咱们是国内第一家白金赞助商,咱们之后也会持续赞助下去。咱们今年也帮助Hadoop,Spark社区发布了最新的release,咱们投入了团队的committer和PMC在社区里组织协调这些release的发布,促进社区的健康发展,也开了国内大数据厂商的先河。咱们仍是不少开源项目的积极参与方之一,好比Hadoop社区的Ozone项目以及Spark社区的Hydrogen项目等,与社区里的其余开发者一块儿协同开发这些项目,尤为把云厂商的能力和经验带进来,最终会使整个社区受益。

img

大数据与AI领域的热点开源技术

开源大数据技术发展历程

Apache Hadoop是在2006年左右成立的,这十几年有了很大的发展,甚至能够说是如日中天的过程。近期的热点主要在云原生,包括与AI平台的集成与协同。还有一个简单的列表,列出大数据每一个细分领域,好比:SQL,流计算等等,能够看到在每一个领域都会有不少竞品和精品,为何会有这么多出来?总有人对以前的项目不认同,或者认为还有改进的空间。从研发资源的组织来讲,开源这种跨企业和组织的协同和传统的企业内组织是很不同的。但从结果来看,开源是一种颇有效的资源组织方式,既避免了大量的重复车轮子的工做,又保证了更新、更好的轮子能及时出现。

img

大数据与AI技术相互融合

对于数据的访问之间,咱们计算和物理分离,有很强的优点。数据平台还会往外进展,能够把GPU能力集成,在这上面经过增强调度,统一数据的训练以及推理。包括Spark社区也提出了氢计划,在应用层把大数据和AI开源的框架所有串联在一块儿,经过分布式的调度方式,把这些框架调度到分布式数据与AI平台之上。

img

传统的机器学习和大数据,两个社区、两套技术,能不能作一个融合,或者有没有关联?相对于传统的机器学习,深度学习对于数据、大数据的利用,应该说效率更高。由于传统的机器学习到必定规模以后,训练的指标和效果就上不去了,可是Deep Learning是不同的,海量的数据可让大规模神经网络有更好的训练效果。腾讯也开源了Angel的框架。因此在融合的基础上,咱们认为将来的技术方向,会是AI与大数据技术相互融合的过程,从原始数据导入到数据准备、数据训练到模型部署,整个是一套闭环,这是将来的一个趋势。

img

总结

最后作一个简单的总结,咱们认为开源项目属于社会公共资源,就像是水,上善若水,水润万物,虽然须要有人来维护,但其核心属性仍然是免费的公共品。在开源生态圈的利益相关方,包括咱们的用户,包括咱们的软件提供商,包括咱们的开发者,咱们都是有义务来投入资源,来维护这片水源地的。咱们须要建设好社区生态,让开发者能够对接用户的需求。将来这个社区的开发方向和用户实际的需求能够作直接的对接,而不必定经过软件供应厂商,由于厂商的优先级不少时候体现了付费客户的需求,尤为是大客户的优先需求。面对海量的开发者与社区用户,咱们须要这样一个平台,让长尾的用户可以把声音传递到社区,和社区长尾的开发者对接,这样才有助于社区的健康发展。

咱们要重视社区、重视人,而不是重视代码自己。有些公司开源的代码,会有人跳出来会说你这个代码写的很差,我以为这是一个对开源很是不友好的行为。无论是任何公司开听任何代码,这都是值得鼓励的一个现象。若是代码写的很差,你能够帮助它变好,哪怕是写一个相似的东西开放出来和它竞争。开源在中国仍是一个萌芽期,在这个状况下过度强调代码质量,而不是开源自己的行为,我以为会有点适得其反。

最后一句话总结今天的演讲,第一个是做为咱们的开发者来讲应该大胆开源,把一些产品还有技术大胆的开源出去,开源有不少的商业模式,我以为开源软件的商业模式在云时代下会愈来愈成功。第二个是对于用户来讲,要放心、大胆的使用开源软件和技术,由于这个时代基于开源技术的产品彻底能够知足大多数的场景和需求,并且可以保证你不被少数的闭源软件所绑架。

此文已由腾讯云+社区在各渠道发布

获取更多新鲜技术干货,能够关注咱们腾讯云技术社区-云加社区官方号及知乎机构号

相关文章
相关标签/搜索