访问量: 853 次浏览

搜索数据集成和数据管理软件可能是一个令人望而生畏(也是昂贵的)过程,
这需要长时间的研究和雄厚的财力。
最流行的企业数据工程工具通常提供了非企业组织所需的更多功能,
其高级功能仅与最精通技术的用户相关。
值得庆幸的是,
市面上有很多好的开源数据工程工具。
其中一些解决方案是由希望最终向您销售其企业产品的供应商提供的,
而其他解决方案是由希望实现流程民主化的开发人员维护和运营的。
在本文中,
我们将研究最好的开源数据工程工具,
首先提供预期的简要概述,
并简要介绍该领域当前可用的每个选项。
(注:最好的开源数据工程工具按字母顺序列出。)

Apache Airflow 是一个允许以编程方式创作、安排和监控工作流的平台。
该工具使用户能够将工作流创作为有向无环图 (DAG)。
气流调度程序在遵循指定的依赖关系的同时在一组工作人员上执行任务。
Airflow 提供丰富的命令行实用程序,
使对 DAG 执行复杂的操作变得简单。
用户界面还提供了一些功能,
使用户能够可视化运行生产的管道、监控进度并在需要时解决问题。

ApacheCassandra 是一个免费的开源数据库管理系统,
可以处理跨商品服务的大量数据。
因此,它提供了无单点故障的高可用性。
Cassandra 的特点是支持跨多个数据中心进行复制,
并提供低延迟、容错和可扩展性,
使其成为任务关键型数据的考虑因素,
用户可以为每次更新选择同步或异步复制。

Hadoop 是一个开源框架,
由 ApacheSoftware Foundation 用 Java 编写。
该框架用于编写需要处理大量数据的软件应用程序。
它在大型集群上并行工作,
集群上可能有数千台计算机(节点)。
它还以非常可靠和容错的方式处理数据。
我们今天所知道的 Hadoop 最初是一个用于雅虎互联网搜索的分布式计算实验,
但后来发展成为一些世界上最大组织选择的开源大数据框架。

Apache Hive 是一个构建在 Apache Hadoop 生态系统之上的开源数据仓库。
它旨在促进数据摘要、特别查询以及对存储在与 Hadoop 集成的各种数据库和文件系统中的超大数据量的分析。Hive 为将结构应用于大量非结构化数据和执行类似 SQL 的批处理查询提供了一个极好的软件包。
它与使用 JDBC/OBC 接口的传统数据中心解决方案集成。

Apache Kafka 是一个分布式流媒体平台,
使用户能够发布和订阅记录流,
存储记录流,
并在记录流出现时进行处理。
Kafka 最显著的用途是构建实时流数据管道和应用程序,
并在一个或多个服务器上作为集群运行,
这些服务器可以跨越多个数据中心。
Kafka 集群将记录流存储在称为主题的类别中,
每条记录由一个键、一个值和一个时间戳组成。

Apache Kudu 是一个开源分布式数据存储引擎,
可解决流媒体和实时数据分析。
Kudu 提供了快速插入/更新和高效的柱状扫描的组合,
以实现跨单个存储层的多个实时分析工作负载。
Apache Kudu 由 Apache 大数据生态系统的长期贡献者创建,
是根据 Apache 2 许可证发布的顶级 Apache 软件基金会项目。

ApacheSpark 是一个用于大规模数据处理的统一分析引擎。
它通过使用 DAG 调度器、查询优化器和物理执行引擎,
以批处理和流数据的高性能而闻名。
Spark 提供了80多个高级操作符,
这些操作符可以在 Scala、Python、R 和 SQL 外壳中交互使用。
该引擎支持一系列库,包括 SQL 和 DataFrames、用于机器学习的 MLIB、GraphX 和 Spark Streaming。
Spark 可以在 Hadoop、ApacheMesos、Kubernetes、单机版或云中运行。

Great Expectations 是数据质量的共享开放标准,
可帮助团队消除管道债务。
执行数据测试、文档编制和分析。
Great Expectations 建议在不熟悉软件的情况下在虚拟环境中部署。
主要功能包括数据断言、自动数据分析、数据验证以及可插拔和可扩展性功能。

MariaDB 是 MySQL 关系数据库管理系统的开源和商业支持的分支。
它是由 MySQL 的最初创建者开发的,
在广泛的应用程序中将数据转换为结构化信息。
MariaDB 拥有一个由存储引擎、插件和许多其他工具组成的庞大生态系统。
最新版本的 MariaDB 包括了地理信息系统和 JSON 功能。
该数据库受到 Microsoft Azure 和 Amazon RDS 的支持,
并且由 MariaDB Corporation 作为 SkySQL 从源作为服务提供给生产工作负载。

Metabase 是一个开源的商业智能工具,
允许用户询问有关数据的问题。
该工具以最有意义的格式显示答案,
无论是在条形图还是详细表格中。
问题可以保存以供以后使用,
也可以分组到仪表板中供以后使用。
元数据库还允许用户与团队的其他成员共享问题和仪表板,
该工具还为需要更高级功能的开发人员提供了 SQL 接口。

PostgreSQL 是一个使用并扩展了 SQL 语言的对象关系数据库系统。
它提供了许多功能,
旨在帮助用户构建应用程序、保护数据完整性和构建容错环境
PostgreSQL 符合 SQL:2-11核心一致性的179项强制功能中的160项,并支持多种数据类型。
该软件具有高度的可扩展性,
并且许多功能(如索引)都定义了API,
因此可以使用它来构建以解决独特的挑战。

Presto 是一个开源 SQL 查询引擎,
旨在快速运行交互式和临时查询。
Presto 可以查询关系数据库和 NoSQL 数据库、数据仓库、数据湖等,
目前已有数十个连接器可用。
它还允许查询其所在的数据,
一个 Presto 查询可以组合来自多个来源的数据,
从而允许在整个组织中进行分析。
Presto 可用于交互式和批处理工作负载、少量和大量数据,
并可从少数用户扩展到数千用户。

Python 是一种面向对象的编程语言,
与 Perl、Ruby、Scheme 和 Java 相当。
它使用了一种优雅的语法,
使编写的程序更易于阅读,
并且非常适合于原型开发和其他特殊任务。
Python 附带了一个大型标准库,
它还支持许多常见的编程任务,
包括连接到 web 服务器、使用表达式搜索文本以及读取和修改文件。
该语言也可以通过添加新模块来扩展。

SQL 是一种特定于域的编程语言,
旨在管理关系数据库管理系统中保存的数据,
该语言最常见的应用是处理结构化数据。
SQL 由若干子语言组成,
包括用于数据查询、数据定义、数据控制和数据操作的子语言。
对标准 SQL 的扩展添加了过程性编程语言功能,
如流控制构造。
SQL 最初基于关系代数和元组关系演算。

Terraform 由 HashiCorp 提供,
是一个开源的基础设施,
作为代码软件工具,
它能够使用户可以预见地创建、更改和改进基础设施。
该解决方案使用 HCL 将基础设施作为 Terraform 文件中的代码来配置资源。
Terraform 还包括自动化工作流,
用于跨 IT 运营和开发人员团队编写、协作、重用和供应基础设施作为代码。
基础设施自动化工作流也通过自助服务扩展到组织中的所有团队。