2022年需要了解的17大数据工具和技术

2022-03-15 19:17:03.0

在大数据应用中,有很多工具可用。下面是17种流行的开源技术,以及关于NoSQL数据库的附加信息。

大数据的世界正变得越来越大。各行各业的企业组织都在年复一年地生产更多的数据,他们也在寻找更多的方法来利用这些数据来改进运营、更好地了解客户、更快地以更低的成本交付产品以及其他应用程序。此外,希望更快地从数据中获得价值的企业高管也在寻求实时分析能力。

这些都推动了对大数据工具和技术的大量投资。市场研究公司IDC在2021年8月的一份报告中预计,2021年全球在大数据和分析系统上的支出将达到2157亿美元,同比增长10.1%。它还预测,到2025年,消费支出将以12.8%的复合年增长率增长。

大数据技术的列表很长,有大量的商业产品可以帮助组织实施从实时报告到机器学习应用的全范围的数据驱动分析计划。

此外,有许多开源的大数据工具,其中一些也提供商业版本或作为大数据平台和托管服务的一部分。以下是17种流行的用于管理和分析大数据的开源工具和技术,按字母顺序排列,并总结了它们的关键特性和功能。

1. Airflow

Airflow是大数据系统中用于调度和运行复杂数据管道的工作流管理平台。它使数据工程师和其他用户能够确保工作流中的每个任务都按照指定的顺序执行,并能够访问所需的系统资源。Airflow也被推广为易于使用:工作流是用Python编程语言创建的,它可以用于构建机器学习模型,传输数据和各种其他目的。

该平台于2014年末由Airbnb发起,并于2015年年中正式宣布为开源技术;第二年,它加入了Apache软件基金会的孵化器计划,并于2019年成为Apache的顶级项目。Airflow还包括以下主要特点:

  • 围绕有向无环图(dag)概念构建的模块化、可扩展的体系结构,说明了工作流中不同任务之间的依赖关系;
  • 一个web应用UI来可视化数据管道,监控其生产状态和排除问题;
  • 与主要云平台和其他第三方服务的现成集成。

2. Delta Lake

由Spark处理引擎的创造者创立的软件供应商Databricks Inc.开发了Delta Lake,并在2019年通过Linux基金会开放了基于Spark的技术。该公司将Delta Lake描述为“一个开放格式的存储层,可为数据湖提供流和批处理操作的可靠性、安全性和性能。”

Delta Lake不能取代数据湖;相反,它的设计是在这些数据之上,为结构化、半结构化和非结构化数据创建一个单独的home,消除可能阻碍大数据应用的数据竖井。此外,根据Databricks的说法,使用Delta Lake可以帮助防止数据损坏,实现更快的查询,增加数据的新鲜度,并支持合规工作。该技术也具有以下特点:

  • 支持ACID事务;
  • 以开放的Apache Parquet格式存储数据;
  • 包括一组Spark兼容的API。

3. Drill

Apache Drill网站将其描述为“用于大规模数据集的低延迟分布式查询引擎,包括结构化和半结构化/嵌套数据。”Drill可以扩展到数千个集群节点,并且能够通过使用SQL和标准连接API查询PB级的数据。

专为探索大数据集而设计,Drill位于多个数据源之上层,使用户能够以不同格式查询广泛的数据,从Hadoop序列文件和服务器日志到NoSQL数据库和云对象存储。它还可以做以下事情:

  • 通过插件访问大多数关系数据库;
  • 使用常用的BI工具,如Tableau和Qlik;
  • 在任何分布式集群环境中运行,尽管它需要Apache的ZooKeeper软件来维护关于集群的信息。

4. Druid

Druid是一个实时分析数据库,它提供了查询的低延迟、高并发性、多租户能力和流数据的即时可见性。根据其支持者的说法,多个终端用户可以同时查询存储在Druid中的数据,而不会影响性能。

Druid是用Java编写的,创建于2011年,并于2018年成为Apache的一项技术。它通常被认为是最适合事件驱动数据的传统数据仓库的高性能替代品。与数据仓库一样,它使用面向列的存储,并可以以批处理模式加载文件。但它也整合了搜索系统和时间序列数据库的功能,包括以下内容:

  • 本机反向搜索索引,加速搜索和数据过滤;
  • 基于时间的数据分区和查询;
  • 灵活的模式,支持半结构化和嵌套数据。

5. Flink

Flink是另一种Apache开源技术,它是一种用于分布式、高性能和始终可用的应用程序的流处理框架。它支持有界和无界数据流上的有状态计算,可以用于批处理、图处理和迭代处理。

Flink的支持者吹捧的一个主要优点是它的速度:它可以实时处理数百万个事件,具有低延迟和高吞吐量。Flink旨在在所有常见的集群环境中运行,它还包括以下特性:

  • 内存计算,在需要时能够访问磁盘存储;
  • 三层API用于创建不同类型的应用程序;
  • 一套用于复杂事件处理、机器学习和其他常见大数据用例的库。

6. Hadoop

Hadoop是一种分布式框架,用于存储数据和在商用硬件集群上运行应用程序。Hadoop是一种开创性的大数据技术,用于帮助处理日益增长的结构化、非结构化和半结构化数据。它于2006年首次发布,在早期几乎就是大数据的同义词;此后,它被其他技术所取代,但仍被广泛使用。

Hadoop有四个主要组件:

  • Hadoop分布式文件系统(HDFS),将数据分割成块存储在集群的节点上,使用复制方法防止数据丢失,并管理对数据的访问;
  • YARN是Yet Another Resource Negotiator的缩写,它负责调度在集群节点上运行的作业,并为它们分配系统资源;
  • Hadoop MapReduce,一个内置的批处理引擎,可以分割大型计算,并在不同的节点上运行,以提高速度和负载平衡;
  • Hadoop Common,一个公用程序和库的共享集合。

最初,Hadoop仅限于运行MapReduce批处理应用程序。YARN在2013年的加入为其他处理引擎和用例打开了大门,但是这个框架仍然与MapReduce紧密相关。更广泛的Apache Hadoop生态系统还包括各种大数据工具和用于处理、管理和分析大数据的附加框架。

7. Hive

Hive是一款基于sql的数据仓库基础设施软件,用于在分布式存储环境中读取、写入和管理大型数据集。它是由Facebook创建的,但后来开源给了Apache,后者继续开发和维护这项技术。

Hive运行在Hadoop之上,用于处理结构化数据;更具体地说,它用于数据汇总和分析,以及查询大量数据。虽然Hive不能用于在线事务处理、实时更新以及需要低延迟数据检索的查询或作业,但它的开发者将其描述为可伸缩、快速和灵活的。

其他主要特点包括:

  • 用于数据查询和分析的标准SQL函数;
  • 内置机制,帮助用户对不同的数据格式施加结构;
  • 访问HDFS文件和存储在其他系统(如Apache HBase数据库)中的文件。

8. HPCC Systems

HPCC Systems是由LexisNexis公司开发的大数据处理平台,于2011年对外开放。正如其全称“高性能计算集群”(高性能计算集群),该技术的核心是一个由商用硬件构建的计算机集群,用于处理、管理和交付大数据。

HPCC Systems是一种生产就绪的数据湖平台,能够实现快速开发和数据勘探,包括三个主要组件:

  • Thor,数据精炼引擎,用于清理、合并和转换数据,以及分析、分析数据,并为查询做准备;
  • Roxie,是一个数据传递引擎,用于提供精炼准备好的数据;
  • 企业控制语言(ECL),一种开发应用程序的编程语言。

9. Hudi

Hudi(发音为hoodie)是Hadoop Upserts删除和增量的缩写。这是Apache维护的另一项开源技术,用于管理hadoop兼容的文件系统(包括HDFS和云对象存储服务)上的大型分析数据集的摄取和存储。

Hudi最初由Uber开发,旨在提供高效、低延迟的数据摄取和数据准备能力。此外,它还包括一个数据管理框架,企业可以使用它来做以下事情:

  • 简化增量数据处理和数据管道开发;
  • 提高大数据系统的数据质量;
  • 管理数据集的生命周期。

10. Iceberg

Iceberg是一种开放的表格式,用于管理数据湖中的数据,它在一定程度上是通过跟踪表中的单个数据文件来实现的,而不是通过跟踪目录。Iceberg由Netflix创建,用于公司的PB规模大小的表,现在是Apache的一个项目。根据该项目的网站,冰山通常“用于一个表可以包含几十PB的数据的生产中”。

Iceberg表格式旨在改进Hive、Presto、Spark和Trino等工具中存在的标准布局,其功能类似于关系数据库中的SQL表。但是,它也可以容纳在同一数据集上运行的多个引擎。其他值得注意的特点包括:

  • 模式演化,无需重写或迁移数据就可以修改表;
  • 隐藏数据分区,避免了用户维护分区的需要;
  • “时间旅行”功能,支持使用相同表快照的可重复查询。

11. Kafka

Kafka是一个分布式事件流平台,据Apache称,超过80%的财富100强公司和数以千计的其他企业都在使用它,用于高性能数据管道、流分析、数据集成和关键任务应用程序。简单来说,Kafka是一个存储、读取和分析流数据的框架。

该技术将数据流和系统解耦,保存数据流,这样它们就可以在其他地方使用。它运行在分布式环境中,并使用高性能的TCP网络协议与系统和应用程序进行通信。Kafka由LinkedIn创建,在2011年被传给Apache。

下面是Kafka的一些关键组件:

  • Java和Scala编程语言的五个核心API;
  • Kafka集群中的服务器和客户端的容错;
  • 每个集群可以有多达1000个“brokers”或存储服务器的弹性伸缩性。

12. Kylin

Kylin是一个分布式的大数据仓库和分析平台。它提供了一个在线分析处理(OLAP)引擎,旨在支持非常大的数据集。据其支持者称,因为Kylin是建立在其他Apache技术(包括Hadoop、Hive、Parquet和Spark)之上的,所以它可以轻松地扩展以处理这些大数据负载。

它还非常快,提供以毫秒为单位的查询响应。此外,Kylin为大数据的多维分析提供了简单的接口,并集成了Tableau、Microsoft Power BI等BI工具Kylin最初是由eBay开发的,eBay在2014年将其作为开源技术贡献出来;第二年,它成为了Apache的顶级项目。它提供的其他功能包括:

  • 用于大数据多维分析的ANSI SQL接口;
  • 与Tableau、Microsoft Power BI等BI工具进行集成;
  • 预先计算多维OLAP cubes以加速分析。

13. Presto

这个开源SQL查询引擎以前称为PrestoDB,它可以同时处理快速查询和分布式数据集中的大数据量。Presto针对低延迟的交互式查询和扩展进行了优化,以支持跨数据仓库和其他存储库中多个PB级数据的分析应用程序。

Presto的开发始于2012年的Facebook。2018年,当它的创造者离开公司时,这项技术分成了两个分支:PrestoDB(仍由Facebook领导)和PrestoSQL(最初的开发者推出)。这种情况一直持续到2020年12月,PrestoSQL被重命名为Trino, PrestoDB恢复为Presto名称。Presto开源项目现在由Presto基金会监督,该基金会于2019年成立,是Linux基金会的一部分。

Presto还包括以下功能:

  • 支持在Hive、各种数据库和专有数据存储中查询数据;
  • 能够将来自多个数据源的数据组合在一个查询中;
  • 查询响应时间通常小于1秒到1分钟。

14. Samza

Samza是一个分布式流处理系统,由LinkedIn构建,现在是一个由Apache管理的开源项目。根据该项目的网站,Samza允许用户构建有状态的应用程序,可以对来自Kafka、HDFS和其他源的数据进行实时处理。

该系统可以运行在Hadoop YARN或Kubernetes上,并提供一个standalone部署选项。Samza网站表示,它可以处理“几tb”的状态数据,具有低延迟和高吞吐量的快速数据分析。通过统一的API,它还可以使用为数据流作业编写的相同代码来运行批处理应用程序。其他功能包括:

  • 内置与Hadoop、Kafka等数据平台的集成;
  • 能够在Java和Scala应用中作为嵌入式库运行;
  • 容错功能设计,从系统故障快速恢复。

15. Spark

Spark是一个内存数据处理和分析引擎,可以在Hadoop YARN、Mesos和Kubernetes管理的集群上运行,也可以在独立模式下运行。它支持大规模数据转换和分析,可用于批处理和流应用程序,以及机器学习和图处理用例。这些功能是由下面的内置模块和库支持的:

  • Spark SQL,通过SQL查询优化结构化数据处理;
  • Spark Streaming和Structured Streaming,两个流处理模块;
  • MLlib,一个包含算法和相关工具的机器学习库;
  • GraphX,一个支持图应用程序的API。

数据可以从各种来源访问,包括HDFS、关系型数据库和NoSQL数据库,以及平面文件数据集。Spark还支持各种文件格式,并为开发人员提供了一系列不同的API。

但它最大的特点是速度:Spark的开发人员声称,当在内存中处理批处理任务时,它的执行速度可以比传统的MapReduce快100倍。因此,Spark成为大数据环境中许多批处理应用程序的首选,同时也作为通用引擎发挥作用。它最初由加州大学伯克利分校(University of California, Berkeley)开发,现在由Apache维护,当数据集太大而无法装入可用内存时,它还可以在磁盘上进行处理。

16. Storm

Storm是Apache的另一项开源技术,它是一个分布式实时计算系统,旨在可靠地处理无限数据流。根据该项目网站介绍,它可以用于包括实时分析、在线机器学习和连续计算,以及提取、转换和加载(ETL)工作的应用。

Storm集群类似于Hadoop集群,但应用程序会持续运行,除非它们被停止。系统具有容错能力,保证数据能够被处理。此外,Apache Storm网站表示,它可以与任何编程语言、消息队列系统和数据库一起使用。Storm还包括以下元素:

  • 一个Storm SQL特性,允许对流数据集运行SQL查询;
  • Trident和Streams API,另外两个用于Storm处理的高级接口;
  • 使用Apache Zookeeper技术来协调集群。

17. Trino

如上所述,Trino是Presto查询引擎的两个分支之一。在2020年12月重新命名之前,Trino一直被称为PrestoSQL。用Trino软件基金会的话说,它“运行速度快得惊人”。该组织负责监督Trino的开发,最初成立于2019年,名为Presto软件基金会(Presto Software Foundation);作为品牌重塑的一部分,它的名字也被更改了。

Trino允许用户查询数据,而不管数据存储在哪里,支持在Hadoop和其他数据存储库中本地运行查询。和Presto一样,Trino也:

  • 为AD hoc交互式分析和长时间运行的批量查询而构建;
  • 可以在查询中组合来自多个系统的数据;
  • 与Tableau, Power BI, R等BI和分析工具合作。

还要考虑:NoSQL数据库

NoSQL数据库是另一种主要的大数据技术。它们打破了传统的基于SQL的关系数据库设计,支持灵活的模式,这使得它们非常适合处理所有类型的大量数据——特别是不适合关系系统中使用的严格模式的非结构化和半结构化数据。

NoSQL软件出现于21世纪头十年末,帮助解决组织生成、收集和分析的越来越多的不同数据,这些数据是大数据计划的一部分。从那时起,NoSQL数据库被广泛采用,现在已被应用于跨行业的企业。许多是开源技术,也由供应商提供商业版本,而一些是由单个供应商控制的专有产品。

此外,NoSQL数据库本身有多种类型,支持不同的大数据应用程序。以下是四个主要的NoSQL类别,每个类别中都有可用技术的例子:

  • 文档数据库。它们使用JSON等格式以类似文档的结构存储数据元素。例如Apache CouchDB、Couchbase Server、MarkLogic和MongoDB。
  • 图数据库。它们以图结构连接数据“节点”,以强调数据元素之间的关系。例如AllegroGraph, Amazon Neptune和Neo4j。
  • 键值存储。它们在一个相对简单的数据模型中对唯一的键和关联的值进行配对,这种数据模型很容易伸缩。例如Aerospike, Amazon DynamoDB和Redis。
  • 宽栏数据库。它们跨表存储数据,这些表可以包含大量的列,以处理大量的数据元素。例如:Cassandra,谷歌Cloud Bigtable, HBase。

多模型数据库也被创建,支持不同的NoSQL方法,以及在某些情况下的SQL;ArangoDB和微软的Azure Cosmos数据库就是一个例子。其他NoSQL供应商已经在他们的数据库中添加了多模型支持。例如,MarkLogic现在包括一个图存储,Couchbase Server支持键值对,Redis提供文档和图数据库模块。


《PySpark原理深入与编程实战》