2.4 开源软件
开源的列车势不可挡,开源技术凭借其开放性、低成本、灵活性和创新性等特点迅速被大众所接受,逐步发展成一种主流模式。可以说开源软件已经渗透到人们的日常工作和生活中,像Google的Android系统、关系数据库MySQL和DeepMind,就是非常成功的案例。
下面简单列举一些相关的大数据开源项目。
1.Hadoop
鉴于Hadoop的知名度和其衍生的项目之多,这里将它单独归为一类。Hadoop是一个开发和运行处理大规模数据的软件平台,其核心是HDFS(Hadoop Distributed File System)和MapReduce引擎。Hadoop 2.0推出了新的资源管理器YARN(Yet Another Resource Negotiator),为上层应用提供统一的资源管理和调度,突破了MRv1(MapReduce Version 1)的局限,并且更进一步加大了结构的灵活性。Hadoop无疑是大数据领域中最热门的开源技术之一,曾经一提到大数据,人们就会想到Hadoop。如今虽然已有很多后起之秀正在慢慢赶超Hadoop,但其地位仍然难以被撼动。Hadoop经过十几年的发展,现在已经形成了一整套生态系统,有了众多开源工具来面向高度扩展的分布式计算,比如,分布式数据库HBase、针对Hadoop生态系统的数据仓库Hive、面向分布式大数据分析的平台Pig、主要用于关系数据库与Hadoop之间传输数据的Sqoop、分布式的应用程序协调服务ZooKeeper等。Hadoop已经变得无处不在,Dell、EMC、IBM等众多大公司都已经跻身Hadoop阵营。国内的盛大、百度、腾讯等公司也都已应用Hadoop技术。
2.数据存储
MongoDB是一个是基于文档的高性能、无模式的数据库,是一种介于关系数据库和非关系数据库之间的开源产品。
Neo4j是一个面向网络的NoSQL图形数据库管理系统,有着嵌入式、高性能、轻量级等优势,拥有包括eBay、Telenor、Pitney Bowes、Wazoku、Schleich和Crunchbase等在内的用户。
Redis是一个高性能的键值存储数据库系统,它支持多种Value类型,包括字符串、链表、集合和有序集合。它的特点是数据结构丰富、低延时、高吞吐、纯内存。
Cassandra是一个混合型的NoSQL数据库,其在集群规模管理的方面表现突出,并且操作和开发也较为简单。现在已被包括Apple、Netflix、GitHub、Instagram、GoDaddy、Hulu、Reddit在内的众多大型企业及机构使用。
CouchDB是一个面向文档的数据库管理系统,它将数据存储在JSON文档中,这种文档可以通过Web浏览器来查询。实际上它的口号是“下一代的Web应用存储系统”,其特点就是在分布式网络上具有高可用性和高扩展性。
3.数据处理
Spark是一个高速的通用并行处理框架,现在也是名声大噪了。相比Hadoop而言,其在迭代计算上具有更高的效率,还提供了更为广泛的数据集操作类型的开发等,以此能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce算法。
Spark Streaming可实现微批处理,目标是方便地建立可扩展、容错的流应用,可支持Java、Scala和Python,能和Spark无缝集成,具有高吞吐量和容错能力强这两个特点,并且支持包括Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字在内的众多数据输入源。
Kinesis出自Amazon,可以构建用于处理或分析流数据的自定义应用程序,可以实时接收、缓冲和处理数据,可以处理来自几十万个来源的任意数量的流数据,并且延迟非常低。
Samza出自LinkedIn,是构建在Kafka之上的分布式流计算框架,是Apache顶级开源项目,可直接利用Kafka和Hadoop YARN提供容错、进程隔离及安全、资源管理。
Storm现在是一个Apache项目,它提供了实时处理大数据的功能,是一个实时的分布式流计算框架。与其他计算框架相比,Storm最大的优点是毫秒级低延时。
4.机器学习
TensorFlow是Google开源的一款深度学习工具,使用C++语言开发,上层提供Python API。它能将复杂的数据结构传输至人工智能神经网中进行分析和处理。
Theano是深度学习开源工具的鼻祖,框架使用Python语言开发。有许多在学术界和工业界有影响力的深度学习框架都构建在Theano之上,包括了著名的Keras、Lasagne和Blocks等,逐步形成了其自身的生态系统。
RapidMiner是一个数据软件平台,它能用来进行机器学习、深度学习、文字挖掘和预测分析等。它常用于各种商业、研究、教育、培训、应用开发,并支持机器学习过程的所有步骤,包括数据准备、可视化、模型验证和优化等。
DL4J的特点之一就是它兼容JVM,也适用于Java、Clojure和Scala。虽然说Python在深度学习领域的应用更加广泛,但是DL4J的出现给了大多数熟悉Java的软件工程师以便利。
5.商业智能
Pentaho是基于Java平台的商业智能套件,其以工作流为核心,强调面向解决方案而非工具组件。包括一个Web Server平台和几个工具软件:报表、分析、图表、数据集成、数据挖掘等,可以说包含范围极广。
Talend Open Studio是Talend(一家主营数据集成和数据管理解决方案的企业)的开源软件,提供了数据整合功能,拥有用户友好型、综合性很强的IDE。其用户包括美国国际集团(AIG)、Comcast Corporation、General Electric、Samsung和Vilisun等企业组织。
KNIME是基于Eclipse环境的商业智能工具。核心版本已经包含数百个数据集成模块、数据转换以及常用的数据分析和可视化方法。其号称拥有超过1000个模块,可运行数百个实例。
Jaspersoft套件提供了灵活、可嵌入的商业智能工具,可为客户提供综合报告、数据分析和数据集成功能,使企业能够更快、更准确地做决策。其用户众多,如:冠群科技、Ericsson、美国农业部(USDA)、Time Warner、Olympic Steel和General Dynamics等。
最后讨论一下国内总体的开源现状。现在国内已经有很多企业从以前的拿来主义变为积极参与到开源社区中,并有不少公司把自己的一些项目开源了出来。比如,阿里的Tair、360的Atlas、百度的UEditor、腾讯的WeUI、新浪的MemcacheDB、小米的Minos等。其实通过参与开源社区,企业可以第一时间了解到最新的开源技术,能与开源社区的优秀人才进行交流,并能以最快的速度部署新的应用等,这是一种互利共赢的模式。对中小型企业来说,开源软件还有利于减少单个公司或者某些公司对于某方面技术的垄断,有利于公平竞争及帮助中小型企业的成长和创新。但国内开源软件也存在很多问题,比如缺乏重量级软件、缺乏后续的维护和更新、和国际主流开源社区有所脱节、各个企业单打独斗、质量一般、用户不多等。当然,最近几年国内的开源软件也正在往好的地方发展。