Hadoop 和 MPP 作为数仓组件的区别
作者:互联网
1,原理对比
MPP方案中的数据通常在节点之间拆分(分片),每个节点仅处理其本地数据。而且,每家都有专门为 MPP 解决方案开发的复杂而成熟的 SQL 优化器。它们都可以在内置语言和围绕这些解决方案的工具集方面进行扩展,支持地理空间分析、数据挖掘的全文搜索。在任务执行过程中,单一的 Executor 只处理一个单一的 task,因此可以简单直接将数据 stream 到下一个执行阶段。这个过程称为pipelining
,它提供了很大的性能提升。而Hadoop 需要保存中间状态数据,IO存储速度拖慢了数据处理效率。
MPP 方案: Teradata greenpalm presta impala
hadoop 批处理方案: Mapreduce , HIVE , spark
2,对比表格
对比项 | MPP | Hadoop |
平台开放 | 封闭和专有。对于某些技术,非客户甚至无法下载文档 | 完全开源的供应商和社区资源可通过互联网免费获得 |
硬件选项 | 许多解决方案都是使用供应商的设备的,您无法在自己的集群上部署软件。所有解决方案都需要特定的企业级硬件,例如快速磁盘、具有大量 ECC RAM 的服务器、10GbE/Infiniband 等。 | 对硬件要求低,自己定制 |
可扩展性(节点) | 平均数十个节点,最多 100-200 个 | 平均 100 个节点,最多数千个 |
可扩展性(用户数据) | 平均数十 TB,PB 为最大值 | 平均数百 TB,最大数十 PB |
查询延迟 | 10-20 毫秒 | 10-20 秒 |
查询平均运行时间 | 5-7秒 | 10-15分钟 |
查询最大运行时间 | 1-2小时 | 1-2周 |
查询优化 | 复杂的企业查询优化器引擎被保存为最有价值的企业机密之一 | 没有优化器或功能非常有限的优化器,有时甚至不是基于成本的 |
查询调试和分析 | 代表性查询执行计划和查询执行统计信息,解释性错误消息 | OOM 问题和 Java 堆转储分析、集群组件上的 GC 暂停、每个任务的单独日志给你很多有趣的时间 |
价格 | 每个节点数万到数十万美元 | 每个节点免费或高达数千美元 |
最终用户的可访问性 | 简单友好的 SQL 界面和简单的可解释的数据库内函数 | SQL 并不完全符合 ANSI,用户应该关心执行逻辑、底层数据布局。函数通常需要用Java编写,编译并放在集群上 |
用户受众 | 业务分析师 | Java 开发人员和经验丰富的 DBA |
单一作业冗余 | 低,当 MPP 节点失败时作业失败 | 高,只有节点管理作业失败,作业执行会失败 |
目标系统 | 通用数仓系统 | 专用数据处理引擎 |
供应商锁定 | 典型 | 无 |
建议的最小集合大小 | 任何 | 任何 |
最大并发 | 数十到数百个查询 | 根据集群能力,任何 |
技术可扩展性 | 仅使用供应商提供的工具 | 与引入的任何全新开源工具(Spark、Samza、Tachyon 等)混合使用 |
DBA 技能水平要求 | 平均 RDBMS DBA | 很高,具有良好的 Java 和 RDBMS 背景 |
解决方案实施复杂性 | 一般 | 很高 |
对比结论:
MPP: 商业化软件,服务更好, 查询效率和优化器更好, 价格更高,生态扩展性差,开发难度低。
hadoop 批处理方案: 开源方案, 生态扩展性好,开发难度高。对于海量数据,处理低价值密度数据更适合。
标签:数仓,Java,解决方案,Hadoop,查询,MPP,优化,节点 来源: https://www.cnblogs.com/gao1261828/p/16400128.html