在 QCon2016 北京站上,Druid 开源项目的负责人,Imply 联合创始人 Fangjin Yang 分享了题为 《Evolution of Open Source Data Infrastructure》的主题演讲大数据开源技术演进,探讨了开源大数据世界的发展和方向。作为引申,我们希望在此基础上,利用Google Trends 的趋势分析能力对一些热门开源工具做了一一搜索、对比和排名。
因为大数据令人惊讶的高速发展以及知识局限性,本文没有(也不可能)列举出这个生态圈里的所有开源类型,比如机器学习、数据挖掘等等无法一一罗列,也无意涵盖所有大数据牵涉的各个角落,比如 OpenStack 、 Docker 等相关大热门。这里推荐了一些比较流行的开源产品,希望能引起大家兴趣和关注。在内容介绍上,因为它们大都耳熟能详,也仅仅是抛砖引玉的对每一款产品做了简单的描述,这些描述基本来自官网介绍以及各类技术网站的推介。
注意
- 图示来自 Google Trends 的随时间变化的热度趋势图(按全球范围 / 过去 5 年 /Google 网页搜索)。
- 图中数字代表相对于图表中指定区域和指定时间内最高点的搜索热度,例如,热度最高的字词得 100 分。
- 按照不同分类,热度更高的工具我们会放在前面介绍。
调度与管理服务
- Azkaban 是一款基于 Java 编写的任务调度系统任务调度,来自 LinkedIn 公司,用于管理他们的 Hadoop 批处理工作流。Azkaban 根据工作的依赖性进行排序,提供友好的 Web 用户界面来维护和跟踪用户的工作流程。
- YARN 是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,解决了旧 MapReduce 框架的性能瓶颈。它的基本思想是把资源管理和作业调度 / 监控的功能分割到单独的守护进程。
- Mesos 是由加州大学伯克利分校的 AMPLab 首先开发的一款开源群集管理软件,支持 Hadoop、ElasticSearch、Spark、Storm 和 Kafka 等架构。对数据中心而言它就像一个单一的资源池,从物理或虚拟机器中抽离了 CPU,内存,存储以及其它计算资源, 很容易建立和有效运行具备容错性和弹性的分布式系统。
- Ambari 作为 Hadoop 生态系统的一部分,提供了基于 Web 的直观界面,可用于配置、管理和监控 Hadoop 集群。目前已支持大多数 Hadoop 组件,包括 HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop 和 Hcatalog 等。
- ZooKeeper 是一个分布式的应用程序协调服务,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的工具,让 Hadoop 集群里面的节点可以彼此协调。ZooKeeper 现在已经成为了 Apache 的顶级项目,为分布式系统提供了高效可靠且易于使用的协同服务。
- Thrift 在 2007 年 facebook 提交 Apache 基金会将 Thrift 作为一个开源项目,对于当时的 facebook 来说创造 thrift 是为了解决 facebook 系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性。
- Chukwa 是监测大型分布式系统的一个开源数据采集系统,建立在 HDFS/MapReduce 框架之上并继承了 Hadoop 的可伸缩性和可靠性,可以收集来自大型分布式系统的数据,用于监控。它还包括灵活而强大的显示工具用于监控、分析结果。
文件系统
- Lustre 是一个大规模的、安全可靠的、具备高可用性的集群文件系统,它是由 SUN 公司开发和维护的。该项目主要的目的就是开发下一代的集群文件系统,目前可以支持超过 10000 个节点,数以 PB 的数据存储量。
- HDFS Hadoop Distributed File System,简称 HDFS,是一个分布式文件系统。HDFS 是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
- GlusterFS 是一个集群的文件系统,支持 PB 级的数据量。GlusterFS 通过 RDMA 和 TCP/IP 方式将分布到不同服务器上的存储空间汇集成一个大的网络化并行文件系统。
- Alluxio 前身是 Tachyon,是以内存为中心的分布式文件系统,拥有高性能和容错能力,能够为集群框架(如 Spark、MapReduce)提供可靠的内存级速度的文件共享服务。
- Ceph 是新一代开源分布式文件系统,主要目标是设计成基于 POSIX 的没有单点故障的分布式文件系统,提高数据的容错性并实现无缝的复制。
- PVFS 是一个高性能、开源的并行文件系统,主要用于并行计算环境中的应用。PVFS 特别为超大数量的客户端和服务器端所设计,它的模块化设计结构可轻松的添加新的硬件和算法支持。
- QFS Quantcast File System (QFS) 是一个高性能、容错好、分布式的文件系统,用于开发支持 MapReduce 处理或者需要顺序读写大文件的应用。
数据搜集
- Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。可以用它来统一对应用程序日志进行收集管理,提供了 Web 接口用于查询和统计。
- Scribe Scribe 是 Facebook 开源的日志收集系统,它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是 NFS,分布式文件系统等)上,以便于进行集中统计分析处理。
- Flume 是 Cloudera 提供的一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统。Flume 支持在日志系统中定制各类数据发送方,用于收集数据。同时,Flume 支持对数据进行简单处理,并写入各种数据接受方(可定制)。
消息系统
- RabbitMQ 是一个受欢迎的消息代理系统,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。RabbitMQ 提供可靠的应用消息发送、易于使用、支持所有主流操作系统、支持大量开发者平台。
- ActiveMQ 是 Apache 出品,号称“最流行的,最强大”的开源消息集成模式服务器。ActiveMQ 特点是速度快,支持多种跨语言的客户端和协议,其企业集成模式和许多先进的功能易于使用,是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现。
- Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模网站中的所有动作流数据,目前已成为大数据系统在异步和分布式消息之间的最佳选择。
数据处理
- Spark 是一个高速、通用大数据计算处理引擎。拥有 Hadoop MapReduce 所具有的优点,但不同的是 Job 的中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。它可以与 Hadoop 和 Apache Mesos 一起使用,也可以独立使用。
- Kinesis 可以构建用于处理或分析流数据的自定义应用程序,来满足特定需求。Amazon Kinesis Streams 每小时可从数十万种来源中连续捕获和存储数 TB 数据,如网站点击流、财务交易、社交媒体源、IT 日志和定位追踪事件。
- Hadoop 是一个开源框架,适合运行在通用硬件,支持用简单程序模型分布式处理跨集群大数据集,支持从单一服务器到上千服务器的水平 scale up。Apache 的 Hadoop 项目已几乎与大数据划上了等号,它不断壮大起来,已成为一个完整的生态系统,拥有众多开源工具面向高度扩展的分布式计算。高效、可靠、可伸缩,能够为你的数据存储项目提供所需的 YARN、HDFS 和基础架构,并且运行主要的大数据服务和应用程序。
- Spark Streaming 实现微批处理,目标是很方便的建立可扩展、容错的流应用,支持 Java、Scala 和 Python,和 Spark 无缝集成。Spark Streaming 可以读取数据 HDFS,Flume,Kafka,Twitter 和 ZeroMQ,也可以读取自定义数据。
- Trident 是对 Storm 的更高一层的抽象,除了提供一套简单易用的流数据处理 API 之外,它以 batch(一组 tuples) 为单位进行处理,这样一来,可以使得一些处理更简单和高效。
- Flink 于今年跻身 Apache 顶级开源项目,与 HDFS 完全兼容。Flink 提供了基于 Java 和 Scala 的 API,是一个高效、分布式的通用大数据分析引擎。更主要的是,Flink 支持增量迭代计算,使得系统可以快速地处理数据密集型、迭代的任务。
- Samza 出自于 LinkedIn,构建在 Kafka 之上的分布式流计算框架,是 Apache 顶级开源项目。可直接利用 Kafka 和 Hadoop YARN 提供容错、进程隔离以及安全、资源管理。
- Storm Storm 是 Twitter 开源的一个类似于 Hadoop 的实时数据处理框架。编程模型简单,显著地降低了实时处理的难度,也是当下最人气的流计算框架之一。与其他计算框架相比,Storm 最大的优点是毫秒级低延时。
- Yahoo S4 (Simple Scalable Streaming System)是一个分布式流计算平台,具备通用、分布式、可扩展的、容错、可插拔等特点,程序员可以很容易地开发处理连续无边界数据流(continuous unbounded streams of data)的应用。它的目标是填补复杂专有系统和面向批处理开源产品之间的空白,并提供高性能计算平台来解决并发处理系统的复杂度。
- HaLoop 是一个 Hadoop MapReduce 框架的修改版本,其目标是为了高效支持 迭代,递归数据 分析任务,如 PageRank,HITs,K-means,sssp 等。
查询引擎
- Presto 是一个开源的分布式 SQL 查询引擎,适用于交互式分析查询,可对 250PB 以上的数据进行快速地交互式分析。Presto 的设计和编写是为了解决像 Facebook 这样规模的商业数据仓库的交互式分析和处理速度的问题。Facebook 称 Presto 的性能比诸如 Hive 和 MapReduce 要好上 10 倍有多。
- Drill 于 2012 年 8 月份由 Apache 推出,让用户可以使用基于 SQL 的查询,查询 Hadoop、NoSQL 数据库和云存储服务。它能够运行在上千个节点的服务器集群上,且能在几秒内处理 PB 级或者万亿条的数据记录。它可用于数据挖掘和即席查询,支持一系列广泛的数据库,包括 HBase、MongoDB、MapR-DB、HDFS、MapR-FS、亚马逊 S3、Azure Blob Storage、谷歌云存储和 Swift。
- Phoenix 是一个 Java 中间层,可以让开发者在 Apache HBase 上执行 SQL 查询。Phoenix 完全使用 Java 编写,并且提供了一个客户端可嵌入的 JDBC 驱动。Phoenix 查询引擎会将 SQL 查询转换为一个或多个 HBase scan,并编排执行以生成标准的 JDBC 结果集。
- Pig 是一种编程语言,它简化了 Hadoop 常见的工作任务。Pig 可加载数据、转换数据以及存储最终结果。Pig 最大的作用就是为 MapReduce 框架实现了一套 shell 脚本 ,类似我们通常熟悉的 SQL 语句。
- Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。 其优点是学习成本低,可以通过类 SQL 语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。
- SparkSQL 的前身是 Shark,SparkSQL 抛弃原有 Shark 的代码并汲取了一些优点,如内存列存储(In-Memory Columnar Storage)、Hive 兼容性等。由于摆脱了对 Hive 的依赖性,SparkSQL 无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便。
- Stinger 原来叫 Tez,是下一代 Hive,由 Hortonworks 主导开发,运行在 YARN 上的 DAG 计算框架。某些测试下,Stinger 能提升 10 倍左右的性能,同时会让 Hive 支持更多的 SQL。
- Tajo 目的是在 HDFS 之上构建一个可靠的、支持关系型数据的分布式数据仓库系统,它的重点是提供低延迟、可扩展的 ad-hoc 查询和在线数据聚集,以及为更传统的 ETL 提供工具。
- Impala Cloudera 声称,基于 SQL 的 Impala 数据库是“面向 Apache Hadoop 的领先的开源分析数据库”。它可以作为一款独立产品来下载,又是 Cloudera 的商业大数据产品的一部分。Cloudera Impala 可以直接为存储在 HDFS 或 HBase 中的 Hadoop 数据提供快速、交互式的 SQL 查询。
- Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式、支持多用户的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索、稳定、可靠、快速、安装使用方便。
- Solr 基于 Apache Lucene,是一种高度可靠、高度扩展的企业搜索平台。知名用户包括 eHarmony、西尔斯、StubHub、Zappos、百思买、AT&T、Instagram、Netflix、彭博社和 Travelocity。
- Shark 即 Hive on Spark,本质上是通过 Hive 的 HQL 解析,把 HQL 翻译成 Spark 上的 RDD 操作,然后通过 Hive 的 metadata 获取数据库里的表信息,实际 HDFS 上的数据和文件,会由 Shark 获取并放到 Spark 上运算。Shark 的特点就是快,完全兼容 Hive,且可以在 shell 模式下使用 rdd2sql() 这样的 API,把 HQL 得到的结果集,继续在 scala 环境下运算,支持自己编写简单的机器学习或简单分析处理函数,对 HQL 结果进一步分析计算。
- Lucene 基于 Java 的 Lucene 可以非常迅速地执行全文搜索。据官方网站声称,它在现代硬件上每小时能够检索超过 150GB 的数据,它拥有强大而高效的搜索算法。
内存技术
- Terracotta 声称其 BigMemory 技术是“世界上首屈一指的内存中数据管理平台”,支持简单、可扩展、实时消息,声称在 190 个国家拥有 210 万开发人员,全球 1000 家企业部署了其软件。
- Ignite 是一种高性能、整合式、分布式的内存中平台,可用于对大规模数据集执行实时计算和处理,速度比传统的基于磁盘的技术或闪存技术高出好几个数量级。该平台包括数据网格、计算网格、服务网格、流媒体、Hadoop 加速、高级集群、文件系统、消息传递、事件和数据结构等功能。
- GemFire Pivotal 宣布它将开放其大数据套件关键组件的源代码,其中包括 GemFire 内存中 NoSQL 数据库。它已向 Apache 软件基金会递交了一项提案,以便在“Geode”的名下管理 GemFire 数据库的核心引擎。
- GridGain 由 Apache Ignite 驱动的 GridGrain 提供内存中数据结构,用于迅速处理大数据,还提供基于同一技术的 Hadoop 加速器。
数据存储
- MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 web 应用提供可扩展的高性能数据存储解决方案。介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富、最像关系数据库的产品。
- Redis 是一个高性能的 key-value 存储系统,和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)和 zset(有序集合)。Redis 的出现,很大程度补偿了 memcached 这类 key/value 存储的不足,在部分场合可以对关系数据库起到很好的补充作用。
- HDFS Hadoop 分布式文件系统 (HDFS) 被设计成适合运行在通用硬件 (commodity hardware) 上的分布式文件系统。它和现有的分布式文件系统有很多共同点。HDFS 是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
- HBase 是 Hadoop 的数据库,一个分布式、可扩展、大数据的存储。是为有数十亿行和数百万列的超大表设计的,是一种分布式数据库,可以对大数据进行随机性的实时读取 / 写入访问。提供类似谷歌 Bigtable 的存储能力,基于 Hadoop 和 Hadoop 分布式文件系统(HDFS)而建。
- Neo4j 是一个高性能的,NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中。自称“世界上第一个和最好的图形数据库”,“速度最快、扩展性最佳的原生图形数据库”,“最大和最有活力的社区”。用户包括 Telenor、Wazoku、ebay、必能宝(Pitney Bowes)、MigRaven、思乐(Schleich)和 Glowbl 等。
- Vertica 基于列存储高性能和高可用性设计的数据库方案,由于对大规模并行处理(MPP)技术的支持,提供细粒度、可伸缩性和可用性的优势。每个节点完全独立运作,完全无共享架构,降低了共享资源的系统竞争。
- Cassandra 是一个混合型的非关系的数据库,类似于 Google 的 BigTable,其主要功能比 Dynamo (分布式的 Key-Value 存储系统)更丰富。这种 NoSQL 数据库最初由 Facebook 开发,现已被 1500 多家企业组织使用,包括苹果、欧洲原子核研究组织(CERN)、康卡斯特、电子港湾、GitHub、GoDaddy、Hulu、Instagram、Intuit、Netfilx、Reddit 及其他机构。
- CouchDB 号称是“一款完全拥抱互联网的数据库”,它将数据存储在 JSON 文档中,这种文档可以通过 Web 浏览器来查询,并且用 JavaScript 来处理。它易于使用,在分布式上网络上具有高可用性和高扩展性。
- Dynamo 是一个经典的分布式 Key-Value 存储系统,具备去中心化、高可用性、高扩展性的特点。Dynamo 在 Amazon 中得到了成功的应用,能够跨数据中心部署于上万个结点上提供服务,它的设计思想也被后续的许多分布式系统借鉴。
- Amazon SimpleDB 是一个用 Erlang 编写的高可用的 NoSQL 数据存储,能够减轻数据库管理工作,开发人员只需通过 Web 服务请求执行数据项的存储和查询,Amazon SimpleDB 将负责余下的工作。作为一项 Web 服务,像 Amazon 的 EC2 和 S3 一样,是 Amazon 网络服务的一部分。
- Hypertable 是一个开源、高性能、可伸缩的数据库,它采用与 Google 的 Bigtable 相似的模型。它与 Hadoop 兼容,性能超高,其用户包括电子港湾、百度、高朋、Yelp 及另外许多互联网公司。
分析和报告工具
- Kettle 这是一个 ETL 工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。作为 Pentaho 的一个重要组成部分,现在在国内项目应用上逐渐增多。
- Kylin 是一个开源的分布式分析引擎,提供了基于 Hadoop 的超大型数据集(TB/PB 级别)的 SQL 接口以及多维度的 OLAP 分布式联机分析。最初由 eBay 开发并贡献至开源社区。它能在亚秒内查询巨大的 Hive 表。
- Kibana 是一个使用 Apache 开源协议的 Elasticsearch 分析和搜索仪表板,可作为 Logstash 和 ElasticSearch 日志分析的 Web 接口,对日志进行高效的搜索、可视化、分析等各种操作。
- Druid 是一个用于大数据实时查询和分析的高容错、高性能、分布式的开源系统,旨在快速处理大规模的数据,并能够实现快速查询和分析。
- KNIME 的全称是“康斯坦茨信息挖掘工具”(Konstanz Information Miner),是一个开源分析和报表平台。宣称“是任何数据科学家完美的工具箱,超过 1000 个模块,可运行数百个实例,全面的集成工具,以及先进的算法”。
- Zeppelin 是一个提供交互数据分析且基于 Web 的笔记本。方便你做出可数据驱动的、可交互且可协作的精美文档,并且支持多种语言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell 等。
- Talend Open Studio 是第一家针对的数据集成工具市场的 ETL(数据的提取 Extract、传输 Transform、载入 Load) 开源软件供应商。Talend 的下载量已超过 200 万人次,其开源软件提供了数据整合功能。其用户包括美国国际集团(AIG)、康卡斯特、电子港湾、通用电气、三星、Ticketmaster 和韦里逊等企业组织。
- Splunk 是机器数据的引擎。使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备(物理、虚拟和云中)生成的快速移动型计算机数据,从一个位置搜索并分析所有实时和历史数据。
- Pentaho 是世界上最流行的开源商务智能软件,以工作流为核心的、强调面向解决方案而非工具组件的、基于 java 平台的商业智能 (Business Intelligence) 套件。包括一个 web server 平台和几个工具软件:报表、分析、图表、数据集成、数据挖掘等,可以说包括了商务智能的方方面面。
- Jaspersoft 提供了灵活、可嵌入的商业智能工具,用户包括众多企业组织:高朋、冠群科技、美国农业部、爱立信、时代华纳有线电视、奥林匹克钢铁、内斯拉斯加大学和通用动力公司。
- SpagoBI Spago 被市场分析师们称为“开源领袖”,它提供商业智能、中间件和质量保证软件,另外还提供相应的 Java EE 应用程序开发框架。
开发平台
- Lumify 归 Altamira 科技公司(以国家安全技术而闻名)所有,这是一种开源大数据整合、分析和可视化平台。
- Lingual 是 Cascading 的高级扩展,为 Hadoop 提供了一个 ANSI SQL 接口极大地简化了应用程序的开发和集成。Lingual 实现了连接现有的商业智能(BI)工具,优化了计算成本,加快了基于 Hadoop 的应用开发速度。
- Beam 基于 Java 提供了统一的数据进程管道开发,并且能够很好地支持 Spark 和 Flink。提供很多在线框架,开发者无需学太多框架。
- Cascading 是一个基于 Hadoop 建立的 API,用来创建复杂和容错数据处理工作流。它抽象了集群拓扑结构和配置,使得不用考虑背后的 MapReduce,就能快速开发复杂的分布式应用。
- HPCC 作为 Hadoop 之外的一种选择,是一个利用集群服务器进行大数据分析的系统,HPCC 在 LexisNexis 内部使用多年,是一个成熟可靠的系统,包含一系列的工具、一个称为 ECL 的高级编程语言、以及相关的数据仓库,扩展性超强。
机器学习
- Hivemall 结合了面向 Hive 的多种机器学习算法,它包括了很多扩展性很好的算法,可用于数据分类、递归、推荐、k 最近邻、异常检测和特征哈希等方面的分析应用。
- RapidMiner 具有丰富数据挖掘分析和算法功能,常用于解决各种的商业关键问题,解决方案覆盖了各个领域,包括汽车、银行、保险、生命科学、制造业、石油和天然气、零售业及快消行业、通讯业、以及公用事业等各个行业。
- Mahout 目的是“为快速创建可扩展、高性能的机器学习应用程序而打造一个环境”,主要特点是为可伸缩的算法提供可扩展环境、面向 Scala/Spark/H2O/Flink 的新颖算法、Samsara(类似 R 的矢量数学环境),它还包括了用于在 MapReduce 上进行数据挖掘的众多算法。
感谢杜小芳对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论 1 条评论