Hadoop 不能成为数据仓库的功能原因有哪些

Hadoop 不能成为数据仓库的功能原因有哪些

Hadoop 不能成为数据仓库的功能原因有哪些

在多个网站上,人们都看到有人声称 Hadoop 集群无法替代传统的数据仓库。但是,我找不到真正的原因。

我知道从技术上讲,Hadoop 中有些功能尚未实现/尚未成熟,但我真正在寻找的是功能影响。


我目前发现的情况,包括缓解措施

我发现了一些论点,但都不是那么重要,以至于我不建议使用 Hadoop 作为 DWH。以下是部分内容:

  1. 您无法进行快速的临时查询或报告因为 Hadoop 往往会因 map 和 Reduce 作业而产生开销。

但是,就我所见的情况而言,这应该不是问题,因为数据仅通过(常规)数据集市提供。此外,如果您想深入研究某些表,则可以使用 spark sql。

  1. 你无法获得确定的结果,因为 Hadoop 不支持存储过程。

在我所看到的情况下,没有太多的存储过程(幸运的是!)并且使用像 R 或 Python 这样的工具你真的可以获得你需要的任何结果。

  1. 灾难无法恢复,因为 Hadoop 没有集成备份

然而,由于所有代码都是脚本化的,并且数据可以卸载到备份,因此应该可以从灾难中恢复。

  1. 你无法兼顾合规性和隐私性,因为没有安全性和数据沿袭

使用 Knox + Ranger + Atlas 这样的工具包可以实现这一点。

  1. 建立查询并不容易,因为您无法构建流程,但需要编写 sql 或 pig 代码。

似乎有几种像 Talend 这样的工具,您可以像在典型的查询生成器中一样使用图标构建流程。

  1. Hadoop 更难维护因为它需要特定的知识

确实如此,但就我所见的情况而言,他们拥有相当多的知识,因为他们目前使用 Hadoop 分析平台。

答案1

Hadoop 集群绝不是传统数据仓库的替代品。裸 Hadoop 只做两件事:

  1. 分布式存储和资源
  2. 映射Reduce

Hadoop 之上构建了一整套软件包生态系统,最著名的有 Pig、Hive、HBase、Phoenix、Spark、ZooKeeper、Cloudera Impala、Flume、Sqoop、Oozie 和 Storm。

今天,您可以从众多产品中选择您想要的产品。

想要使用 SQL?请查看这些数据虚拟化服务器:Cirro Data Hub、Cisco/Composite Information Server、Denodo Platform、Informatica Data Services、Red Hat JBoss Data Virtualization 和 Stone Bond Enterprise Enabler Virtuoso。

想要产品将数据存储在其自己的原生 SQL 数据库或 Hadoop 中吗?例如 EMC/Greenplum UAP、HP Vertica(在 MapR 上)、Microsoft PolyBase、Actian ParAccel 和 Teradata Aster Database(通过 SQL-H)。

添加到这些:

  • Apache Hive——原始的 SQL-on-Hadoop
  • Hortonworks 的 Stinger
  • Apache Drill——Google Dremel(又名 BigQuery)的开放实现
  • Spark SQL - 实时、内存、并行处理
  • Apache Phoenix——“HBase 的 SQL 皮肤”
  • Cloudera Impala - Dremel/Apache Drill 的另一种实现
  • HAWQ for Pivotal HD - 并行 SQL 处理,高度符合 Pivotal 自己的 Hadoop 发行版上的 SQL 标准
  • Presto - 由 Facebook 工程师构建并内部使用
  • Oracle Big Data SQL - 仅与 Oracle Database 12c 集成
  • IBM BigSQL——与 IBM 的 Hadoop 和 InfoSphere BigInsights 相关联

结论:无论您的数据库仓库要求是什么,您都可以在 Hadoop 上找到一些满足您需要的产品或产品组合。

缺点:找到理想的产品,学习如何使用它们以及它们的缺点是什么,开发分布式数据库应用程序,报告错误并推动改进——所有这些都将花费您大量的时间。您正在寻找功能影响——因此寻找对您和您的时间的影响,特别是如果您的团队中没有 Hadoop 专家。

最终结论:Hadoop 不是数据仓库,但构建在其上的应用程序是数据仓库,并且它能够满足各种需求。但祝您在这片丛林中航行顺利。如果您的需求足够低,我建议您创建基于 MapReduce 的应用程序,或者使用您熟悉的工具寻求更经典的解决方案。同时要知道,MapReduce 并不适合解决所有问题。

更多阅读:

答案2

确实,利用 Hadoop 和一些技巧您可以做 DWH 能够做的事情。

然而,重新发明轮子让 Hadoop 以低效的方式完成数据仓库的相同任务是没有意义的。很多人会说 Hadoop 在硬件和软件方面比数据仓库便宜:确实,两者有很大区别,但我们必须考虑实施此类系统所花费的时间、所需的专业知识和技能、集群的维护、服务的升级以及使用不成熟工具或未来可能被抛弃的工具的风险。

在 Hadoop 和数据仓库之间进行选择的真正方面是:

  • 工作负载类型(读取与写入、战术与报告等)
  • 数据类型(结构化或非结构化)
  • 数据集成(读取模式与写入模式)
  • 查询 SLA(执行时间、并发性等)
  • 所需技能(实施所需的资源量和专业知识)
  • SQL 合规性(与工具集成)
  • 优化(工作负载管理、索引、哈希图等)
  • 成熟度(安全性、错误等)
  • 分析类型(SQL 或非 SQL 分析)

两者结合的混合架构最适合多种用例。我可以从数据仓库卸载历史数据和 Hadoop 上的 ETL 处理中节省资源(CPU、存储),可以对非结构化数据进行分析,同时还可以获得更高的性能、数据集成和高并发性,查询数据仓库中存储的“热”数据。

回答评论:

这取决于您想用 Hadoop 做什么,您可以直接填充数据仓库,将原始数据放在 Hadoop 上,然后对其执行 ETL 或为仓库充电。

有很多与 Hadoop 与数据仓库集成相关的用例,例如:

  • 数据湖:所有原始数据都存储在 Hadoop 上。这可以为您提供一个地方,您可以在这里捕获、改进和探索原始数据和元数据,并可能进行聚合或 ETL 以填充数据仓库中的数据模型。
  • 历史化:您可以开发脚本将冷数据卸载到 Hadoop(例如,DWH 上的去年交易和 Hadoop 上的旧交易)。您可以通过查询联合器(例如 Presto)访问这两种数据,它可以让您连接位于不同平台上的数据(即在 Hadoop 上的表的历史部分和数据仓库上的最近部分之间执行 UNION ALL)

如果您想将 Hadoop 用作数据湖,数据流为:源 -> HDFS(清理)-> 数据仓库

如果仅将 Hadoop 用于历史化:源 -> 数据仓库 -> HDFS

像 Presto 这样的查询联合器开辟了许多用例,并提供了在同一查询中使用来自不同系统的数据的可能性。这开启了将冷数据放在 Hadoop 上,将热数据放在数据仓库上的可能性,或者将“核心”数据放在数据仓库上,将其余数据放在 Hadoop 上的可能性。

答案3

Hadoop 是您列出的几种情况的选项之一。听起来您正在寻找一个单一的系统/联合器/数据管道,您可以从中临时查询多个数据源。Hadoop 功能的其他选项包括 Spark、Pentaho、Apache Pig 和 Hortonworks。

但首先不要看这个工具,而是要看您的数据和分析需求。

  1. 您有多个数据源
  2. 您想要运行临时查询
  3. 您需要管理这些多个数据源,以便您的分析师/最终用户能够访问和“查询”。而且您(在这里从 IT 角度思考)需要能够进行这种管理,而不会让它成为第二份工作。
  4. 我假设随着时间的推移您会添加更多数据源。
  5. 我假设您的数据源将会增长,并且存在对更大数据集进行查询的潜力。6、您需要灾难恢复和安全性/合规性。
  6. 您希望选择使用多种查询方法,包括存储过程。

首先,确定哪些工具可以满足这些需求。有 IPaaS(集成平台即服务 - 本质上是云中的数据集成)供应商,例如 Mulesoft 和 SnapLogic。您有 Hadoop 及其同类产品,我说同类产品是因为该领域的产品往往具有足够的差异,以至于我无法将它们像 SQL 数据库一样混为一谈。您有数据湖,它使用原始数据,从而减轻了繁重的转换工作。您还有数据流处理,它可以处理多个数据流并过滤数据而不是丢弃数据。

了解您的业务需求(包括预算和资源),将其与现有资源进行比较,然后确定最适合您公司的工具。

答案4

Hadoop 是一个框架,而数据仓库是一个软件……搞混了吗?数据仓库只会协调数据和你之间的关系。它只会处理数据的存储和维护生命周期。而 Hadoop 除了协调数据和你之间的关系外,还会根据你的要求对数据执行简单/复杂的操作。

hadoop 之所以不能更好地适合数据仓库,是因为有其他几种工具可以比 hadoop 更有效地完成相同的任务。

相关内容