唐伯虎 发表于 2021-6-28 17:27:44

刚哥谈架构(十三)大数据软件开源版图

开源一词最初是指开源软件(OSS)。开源软件是源代码可以任意获取的计算机软件,任何人都能查看、修改和分发他们认为合适的代码。
开源软件依托同行评审和社区生产,皆以分散、协作的方式开发。开源软件由社区开发,而非单个作者或公司,因此通常成本更低、更灵活,寿命比专有软件更长。
开源已成为一种超越软件生产界限的运动和工作方式。开源运动旨在利用开源软件的价值和分散的生产模型,为其社区和行业的问题寻找新的解决方法。
Redhat对于开源的定义
刚哥在软件行业摸爬滚打了二十多年了,经历了开源软件的发展,感触颇多。最早,刚开始做软件开发的时候,开源软件非常有限,很多东西都需要自己去打造,当然,程序员这个群体对于造轮子,那是情有独钟的,技术上无可厚非,但是从效率上就差了不少了。今天的软件业和软件从业人员其实是非常幸福的,开源社区提供的诸多选项极大的提高了软件开发的生产率,而云计算也使得软件的大规模部署和运行变的简单。软件从业者可以花出更多的时间来关注自己的业务,这是实实在在的进步。

    我本人是开源软件的忠实拥护者,很早就开始在开源中国写博客,关注各种开源软件,自己贡献过一些小品级别的开源软件,每每发现了新的开源软件,也会发送给开源中国,总共投递了超过40个开源软件。我是看着开源中国从一个小网站做到今天的,希望红薯带着开源中国越办越好。
我有幸在大数据这个领域先后做了数据可视化,数据的准备和采集,机器学习,以及现在负责一个大数据软件端到端的架构,对于大数据软件领域有不少的了解,今天就来和大家分享一下我眼中,大数据软件开源领域的版图。

    在上图中,我把大数据开源软件的版图分类为:数据摄取(data ingestion),数据流传输(data streaming),数据管道(data pipeline),元数据仓库(metastore),对象/文件存储(object/file storage),数据湖/数据格式(data format/data lake),OLAP数据仓库(OLAP/ data warehouse),即席查询(Ad hoc query),流分析(stream analytics),图数据库(graph database),时序数据库(time serials database),机器学习运维(MLOps),搜索引擎(search engine),元数据管理(metadata management),数据可视化(data visualization)。
大数据领域的开源软件数量繁多,我不可能一一覆盖,同时因为软件的功能有可能用于不同的场景,上面的分类也不一定准确。但是我们可以看到大数据开源软件的基本图景,这里做个简单的总结:

[*]大数据的开源软件是大数据领域的基石,各种大数据产品和解决方案都离不开这些开源软件的支持。flink,spark,kafka,elastic是构建大数据栈的常客。
[*]以为Hadoop为核心的大数据生态曾经是大数据领域的标准,但是我们看到从趋势上来看,新兴的大数据软件中,hadoop所扮演的角色越来越不重要,Hadoop的存储HDFS正在被各种以S3为主的数据湖的解决方案所取代,Mapduce的计算模型被数据仓库/Spark/Flink的计算所取代。


[*]大部分的开源软件背后都是有大型软件厂商,或者独立软件开发商来运营,以开源为营销手段,扩大用户群体和知名度。但是开源厂商正在受到云计算的竞争和威胁,开源厂商迫于生计,开始通过修改软件许可证(Elastic/Mongo)来打击云厂商。
[*]新兴大数据开源软件,也受到了大厂商和风险投资的关注,例如Datadog收购Vector,Databrick收购Redash。


[*]国内的大数据开源产品受到关注,例如Nebula Graph,Milvus,DorisDB,Plato,TiDB(TiBD没有在本文中覆盖)等等


    开源软件毫无疑问是大数据领域基础中的基础,各种大数据产品和解决方案都离不开这些开源软件的支持。flink,spark,kafka,elastic, zookeeper 是构建大数据栈的常客,你尽可放心大胆地选用。

    以Hadoop为核心的大数据生态曾经是大数据领域的标准,当我们说到大数据的时候,不可避免地会涉及Hadoop生态系统。但是我们看到从趋势上来看,新兴的大数据软件中,hadoop所扮演的角色越来越不重要,Hadoop的存储HDFS正在被各种以S3为主的数据湖的解决方案所取代,Mapduce的计算模型被数据仓库/Spark/Flink的计算所取代。
Apache基金会宣布退役的Hadooop项目包含:

[*]Apex:基于 HadoopYARN 的统一大数据流和批处理平台
[*]Chukwa:基于 Hadoop 分布式文件系统(HDFS)构建的,用于监视大型分布式系统的数据收集系统
[*]Crunch,提供了用于编写、测试和运行 MapReduce(包括 HadoopMapReduce)管道的框架
[*]Eagle:一种分析解决方案,可在包括 Hadoop 在内的大数据平台上迅速识别安全和性能问题
[*]Falcon:针对 Hadoop 的数据处理和管理解决方案,设计用于数据移动、数据管道协调、生命周期管理和数据发现
[*]Hama:一种用于大数据分析的框架,运行在 Hadoop 上,并且基于 BulkSynchronousParallel 范式
[*]Lens,提供了统一的分析界面,将 Hadoop 与传统数据仓库深度集成在一起
[*]Marmotta:链接数据的开放平台
[*]Metron:专注于实时大数据安全性
[*]PredictionIO:一种用于管理和部署生产就绪的预测服务的机器学习服务器
[*]Sentry:一种用于对 ApacheHadoop 中的数据和元数据执行细粒度授权的系统
[*]Tajo:Hadoop 上的大数据仓库系统
[*]Twill,它使用 HadoopYARN 的分布式功能和类似的编程模型来运行线程
与此同时以Hadoop运营为主的公司Cloudera,也举步维艰。最近有消息称Cloudera想卖身,可是谁会出手呢?IBM在收购红帽子后,会把Cloudera也并入旗下吗?我们拭目以待。与此相对应的,风光无限的Snowflake火热上市,如今的市值突破700亿美元的天文数字。IT圈毫无疑问也是喜新厌旧的。

    开源软件要发展,离不开组织的力量,我们看到大数据开源软件背后的三个主要的力量:Apache基金会,大的软件厂商和创业公司。
大数据里面的明星项目大多来自apache基金会,包括我们之前提到的kafka,Spark,Flink等。
Apache软件基金会(Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非营利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证(Apache License)。
Apache这个名字还有流传着一段有意思的故事。因为这个服务器是在NCSA HTTPd服务器的基础之上,通过众人努力,不断地修正、打补丁(Patchy)的产物,被戏称为“A Patchy Server”(一个补丁服务器)。在这裡,因为“A Patchy”与“Apache”是谐音,故最后正式命名为“Apache Server”。
另外一只主要的力量就是大的软件和互联网厂商,例如谷歌是Kubernetes和Tensorflow的拥有者,Databrick拥有Spark。Deltalake等产品。
最后就是创业公司,现在大数据行业创业公司非常多,大多数也是采用的了开源的形式来为自己的软件背书。
这三股力量并不是对立的,它们融合在一起推进开源事业的发展,大多数的厂商愿意把自己的软件贡献给apache,甚至以能入选Apache基金会的顶级项目为荣,而创业公司也会借着开源的力量走向成熟,变大变强。例如谷歌,Databrick,Elastic也都是从创业开始他们的脚步。

    开源厂商正在受到云计算的竞争和威胁,开源厂商迫于生计,开始通过修改软件许可证来打击云厂商。这里归根结底都是商业利益,对于开源厂商,它们之所以愿意贡献他们的代码,并不是像“雷锋”一样助人为乐,不图回报的。任何的公司都是以盈利为目标的。以AWS为首的云厂商,自己本身有很强大的技术实力,把开源的东西拿过来,在云上打个服务就开始赚钱了,对于这样的“白嫖”,开源厂商自然是很不爽!这样的对抗,短期不会改变。

    新兴的大数据软件越来越受到市场尤其是资本的追捧。Databrick收购了redash,Datadog收购vector来完善他们的大数据软件版图。国内的PinCAP/涛思/Kyligence也纷纷获得数目不小的投资。大数据软件越来越被重视。
上面的这些没有包含国内的内容,我们也看一看国内大数据开源的情况:

    国产开源大数据软件的现状是:

[*]数据库和数据仓库领域很热闹,聚集了很多玩家,其中TiDB无论从融资还是社区活跃度,都是该领域最受追捧的产品
[*]在数据可视化领域,百度Echart和蚂蚁金服的AntV是该领域的领导者,完全不弱于该领域传统的开源领导者Highcharts


[*]在机器学习领域,华为的Mindsopre和百度的飞浆社区活跃度很高
[*]华为为开源社区贡献了不少产品,包含Apache CarbonData,Apache OpenLooKong,OpenGauss,MindSpore,其它大公司也有自己的明星产品,百度的飞浆和ECharts,蚂蚁金服的AntV,阿里的PolarDB
当然,国内和国外的划分也不一定能分得那么清楚,我们知道Flink背后有阿里巴巴,Apache Pulsar背后也是有一个国内为主的组织在运作。
对比国内和国外大数据开源软件的情况,我做了一些简单的数据分析:

    从社区的活跃度来看,国内的大数据开源软件整体的活跃度和认知度都会低一些,在github上有1w以上star的项目有十多个,而国内只有5/6家,但是这几家都值得大家关注。

    从语言采用的角度来看,Java/Python/C/C++是主力。未来我想也许会有越来越多的Golang/Rust的项目出现。

总结
本文对大数据开源领域的现状做了一个简要的分析,也分析了国内和国外在大数据开源软件版图上的差异。希望开源软件,尤其是国内的大数据开源软件未来有很好的发展。

页: [1]
查看完整版本: 刚哥谈架构(十三)大数据软件开源版图