Greenplum 对比 Hadoop

Greenplum属于MPP架构,和Hadoop一样都是为了解决大规模数据的并行计算而出现的技术,两者的相似点在于:

  • 分布式存储,数据分布在多个节点服务器上
  • 分布式并行计算框架
  • 支持横向扩展来提高整体的计算能力和存储容量
  • 都支持X86开放集群架构

但两种技术在数据存储和计算方法上,也存在明显的差异:

  • 是否有模式概念:Greenplum MPP按照关系数据库行列表方式存储数据(有模式);Hadoop按照文件切片方式分布式存储(无模式)。
  • 数据分布机制:MPP主要采用Hash分布,计算节点和存储紧密耦合,数据分布粒度在记录级的更小粒度;Hadoop FS按照文件切块后随机分配,节点和数据无耦合,数据分布粒度在文件块级(缺少64MB)。
  • 计算框架:MPP采用SQL并行查询计划,Hadoop采用MapReduce计算框架。

基于上述不同,体现在效率、功能等特性方面也大不相同。

计算效率对比

MapReduce相比而言是一种较为蛮力的计算方式,数据处理过程分为Map->Shuffle->Reduce的过程,相比MPP而言,MapReduce的数据在计算前未经整理和组织,而MPP预先把数据有效的组织,例如:行列表关系、Hash分布、索引、分区、列存、统计信息收集等,这决定了在计算过程中效率大不相同。

  • MAP效率。 Hadoop的MAP阶段需要对数据再解析,而MPP数据库则会直接取行列表,效率高。Hadoop按默认64MB拆分文件,而且数据不能保证在所有节点均匀分布,因此,MAP过程的并行化程度低;MPP数据库按照数据记录拆分和Hash分布,粒度更细,数据分布在所有节点中非常均匀,并行化程度更高。Hadoop HDFS 没有灵活的索引、分区、列存等技术,而MPP通常利用这些技术大幅提高数据的检索效率。
  • Shuffle效率。 Shuffle对比MPP计算中的重分布,由于 Hadoop数据与节点的无关性,Shuffle基本避免不了;而MPP数据库对于相同Hash分布数据不需要重分布,节点大量网络和CPU消耗。MapReduce没有统计信息,不能做基于cost based的优化;MPP数据库可以利用统计信息很好的进行并行计算优化。例如,MPP对于不同分布的数据可以在计算中基于cost动态决定最优执行路径,如采用重分布还是小表广播。
  • Reduce效率。 对比MPP数据库的SQL执行器executor,MapReduce缺乏灵活的Join技术支持;MPP可以基于cost来自动选择Hash Join、Merge Join还是Nested Join,基于可以在Hash Join通过cost选择小表做Hash,在Nested Join中选择index提高Join性能等。MPP对于Aggregation提供Multiple-agg、Group-agg、Sort-agg等多种技术来提供计算性能,MapReduce需要开发人员自己实现。

另外,MapReduce在整个Map->Shuffle->Reduce过程中通过文件来交换数据,效率很低,MapReduce要求每个步骤间的数据都要序列化到磁盘,意味着MapReduce作业的IO成本很高,导致交互分析和迭代算法开销很大,MPP数据库采用Pipline方式在内存数据流中处理数据,效率比文件方式高很多。

总结:MPP数据库在计算并行度、计算算法上比Hadoop更优,效率更高。

功能对比

MPP数据库采用SQL作为交互式语言,SQL简单易学,具有很强的数据操纵能力和过程语言能力,SQL语言是专门为统计和数据分析开发的语言,各种功能和函数琳琅满目,SQL语言不仅适合开发人员,也适用于分析业务人员,大大简化数据的操作和交互过程。

MapReduce编程明显困难,在原生的MapReduce开发框架基础上开发,需要熟悉JAVA开发和并行原理。为了解决易用性的问题,近近来SQL on Haddop技术大量涌现,几乎成为当前Hadoop开发使用的一个技术热点趋势。这些技术包括Hive、HAWQ、Spark SQL、Impala、Presto、Drill、Tajo等。这些技术有些是在MapReduce上做优化,比如Spark采用内存中的MapReduce技术,有的采用C/C++代替Java语言重构Hadoop和MapReduce,有些是直接绕开MapReduce,如Impala、HAWQ借鉴MPP计算思想来做查询优化和内存数据Pipeline计算,以此提高性能。

虽然SQL on Hadoop比原始MapReduce在易用上有所提高,但SQL成熟度和关系分析上目前还与MPP数据库有较大差距。

上述产品,除了HAWQ外,对SQL的支持非常有限,特别是分析型复杂SQL,如SQL 2003 OLAP 窗口函数,几乎都不支持。由于Hadoop本身Append-only特性,SQL on Hadoop大多不支持数据局部更新和删除功能,基本上都缺少索引和存储过程等特征。除HAWQ外,大多对于ODBC/JDBC/DBI/OLEDB/.NET接口的支持有限,与主流第三方BI报表工具的兼容性不如MPP数据库

SQL on Hadoop不擅长交互式的Ad Hoc查询,大多通过预关联的方式规避这个问题。另外,在并发处理方面能力较弱。高并发场景下,需要控制计算请求的并发度,避免资源过载导致的稳定性问题和性能下降问题。

架构灵活性对比

为保证数据的高性能计算,MPP数据库节点和数据之间是紧耦合的,相反,Hadoop的节点和数据是没有耦合关系的。这决定了Hadoop的架构更加灵活,存储节点和计算节点的无关性,现在在2个方面:

  • 扩展性。 Hadoop架构支持单独增加数据节点或计算节点,依托Hadoop的SQL on Hadoop系统,例如HAWQ、SPARK均可单独增加计算层的节点或数据层的HDFS存储节点,HDFS数据存储对计算层来说是透明的。MPP数据库扩展时,一般情况下是计算节点和数据节点一起增加的,增加节点后需要对数据做重分布才能保证数据与节点的紧耦合,进而保证系统的性能。Hadoop增加存储层节点后虽然也需要Rebalance数据,但不是那么紧迫。
  • 节点退服。 Hadoop节点宕机退服对系统影响较小,并且系统会自动将数据在其它节点扩充到3份;MPP数据库节点宕机时,系统性能损耗大于Hadoop。HAWQ实现了计算节点和HDFS数据节点的解耦,采用MR2.0的YARN来进行资源调度,同时具有Hadoop的灵活伸缩的架构特性和MPP的高效能计算能力。不过HAWQ比Greenplum MPP数据库要低一倍左右,但比其它基于MapReduce的SQL on Hadoop性能要好。

选择MPP还是Hadoop?

如果数据需要频繁的计算和统计并且希望具有更好的SQL交互式支持和更快计算性能及复杂SQL语法支持,建议选择MPP数据库。特别如数据仓库、集市、ODS、交互式分析数据平台等系统,MPP有明显的优势。

如果数据加载后只会被用于读取少数次的任务和用于少数次的访问,而且主要用于Batch,对计算性能不是很敏感,选择Hadoop也不错,Hadoop不需要花费较多的精力来模式化你的数据,节点数据模型设计和数据加载设计方面的投入。包括历史数据系统、ETL临时数据区、数据交换平台等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/91896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8、表格标签

8、表格标签 一、为什么使用表格 简单通用结构稳定 二、基本结构 (一)单元格 (二)行 行的英语是rows所以,行就用tr表示 (三)列 使用td表示 (四)跨行 &#xff…

蓝桥等考Python组别九级002

第一部分:选择题 1、Python L9 (15分) 运行下面程序,可以输出几行“*”?( ) for i in range(5): for j in range(6): print(*, end = ) print() 3456正确答案:C 2、Python L

Spark SQL

Spark SQL 一、Spark SQL概述二、准备Spark SQL的编程环境三、Spark SQL程序编程的入口四、DataFrame的创建五、DataFrame的编程风格六、DataSet的创建和使用七、Spark SQL的函数操作 一、Spark SQL概述 Spark SQL属于Spark计算框架的一部分,是专门负责结构化数据的…

运算符 - Go语言从入门到实战

运算符 - Go语言从入门到实战 算术运算符 假设A变量等于10,B变量等于20。 运算符描述实例相加A B 输出结果 30-相减A - B 输出结果 -10*相乘A * B 输出结果 200/相除B / A 输出结果 2%求余B % A 输出结果 0⾃增A 输出结果 11–⾃减A-- 输出结果 9 特性&#xf…

NIO基础

nio : non-blocking io 非阻塞IO 1. 三大组件 1.1 channel和buffer channel 有点像stream ,他就是读写数据的双向通道,可以从channel将数据读入buffer,也可以将buffer的数据写入channel,之前的stream 要么输入,要么…

建筑能源管理(3)——建筑能源监管

为了全面落实科学发展观,提高建筑能源管理水平,进一步降低能源和水资源消耗、合理利用资源,以政府办公建筑和大型公共建筑的运行节能管理为突破口,建立了既有政府办公建筑和大型公共建筑运行节能监管体系,旨在提高政府…

【bug 记录】yolov5_C_demo 部署在 rv1126

问题1:opencv find 不到 在 CMakeLists 中将正确的 OpenCV库 路径添加到 CMAKE_PREFIX_PATH 变量中 set(CMAKE_PREFIX_PATH “/mnt/usr/local” ${CMAKE_PREFIX_PATH}) 问题2: rknn_api.h 找不到 将该文件从别处复制到项目 include 文件夹 问题3&…

28271-2012 米制超细牙螺纹 公差

声明 本文是学习GB-T 28271-2012 米制超细牙螺纹 公差. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了米制超细牙螺纹的公差和标记。 本标准适用于精密仪器和电子设备等领域的螺纹连接。 2 规范性引用文件 下列文件对于本文件…

windows server 2019 、win11安装docker desktop

Docker Desktop Docker Desktop是可以部署在windows运行docker的应用服务,其基于windos的Hyper-V服务和WSL2内核在windos上创建一个子系统(linux),从而实现其在windows上运行docker。 前提条件 WSL 查看wsl是否安装 我们可以直接在 cmd 或 powershe…

vue3中的watch

在Vue3中,watch中的参数可以分为两部分,即要监听的响应式数据以及回调函数。 语法格式如下: watch(要监听的响应式数据, 回调函数)除了以上的两个还有其他的参数 immediate:是否在初始化时立即执行一次回调函数,默认…

MySql出错点

一、DDL 1.修改表,添加新的字段时,不要加引号 2.在修改表中字段的类型时,会发生数据截断。 像DATETIME 转化为 TIME 二、DML 1.插入和删除的注意点 2.可以通过 select 来协助插入 3.

Linux 基本语句_4_指针和函数

指针函数 顾名思义&#xff0c;即返回值为指针的函数 int * f (int n){int *p NULL;//空指针return p;//返回一个地址 }函数指针 指向函数的指针&#xff0c;每个函数都有自己的入口地址&#xff0c;函数指针专门指向这些地址#include <stdio.h>int max(int a, int b)…

【Linux】完美解决ubuntu18.04下vi不能使用方向键和退格键

今天在刚安装完ubuntu18.04&#xff0c;发现在使用vi命令配置文件时使用方向键并不能移动光标&#xff0c;而是出现一堆奇怪的英文字母&#xff0c;使用退格键也不能正常地删除内容&#xff0c;用惯了CentOS的我已经感觉到ubuntu没有centos用着丝滑&#xff0c;但是没办法&…

【C++】类和对象(中)

一、类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。但是空类中并不是真的什么都没有&#xff0c;任何类在什么都不写的时候&#xff0c;编译器会自动生成以下 6 个默认成员函数。 默认成员函数&#xff1a;用户没有显式实现&#xff0c;编译器会生成…

5G消息发展的前景与挑战

随着5G技术的快速发展和普及&#xff0c;5G消息正逐渐成为全球通信领域的新焦点。 随着5G技术的快速发展和普及&#xff0c;5G消息正逐渐成为全球通信领域的新焦点。 5G消息发展呈现规模化、产业化趋势 自2020年4月国内三大运营商联合发布5G消息白皮书以来&#xff0c;已经过…

【C语言】通讯录系统实现 (保姆级教程,附源码)

目录 1、通讯录系统介绍 2、代码分装 3、代码实现步骤 3.1、制作菜单menu函数以及游戏运行逻辑流程 3.2、封装人的信息PeoInfo以及通讯录Contact结构体类型 3.3、初始化通讯录InitContact函数 3.4、增加联系人AddContact函数 3.5、显示所有联系人ShowContact函数 3.6、…

【Idea】idea、datagrip设置输入法

https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases/tag/jbr-release-17.0.6b829.5https://github.com/RikudouPatrickstar/JetBrainsRuntime-for-Linux-x64/releases/tag/jbr-release-17.0.6b829.5 下载后解压并重命名为 jbr, 然后替换对应 ide…

CTF-XSS

知识 例子 。2022 CNSS夏令营 To_be_Admin_Again_and_Again XSS攻击. 与admin有关, 可以尝试http://1.117.6.207:65005/admin, 显示Get out, HACKER! Only admin can see the flag!, 说明需要一个admin的验证, 这里想到获取admin的cookie. 每条留言会自动查看, 可以使用XS…

Python-Flask:编写自动化连接demo脚本:v1.0.0

主函数&#xff1a; # _*_ Coding : UTF-8 _*_ # Time : 13:14 # Author : YYZ # File : Flask # Project : Python_Project_爬虫 import jsonfrom flask import Flask,request,jsonify import sshapi Flask(__name__)# methods: 指定请求方式 接口解析参数host host_info[…

TSM动作识别模型【详解】

文章目录 本文使用的是somethingv2数据集&#xff0c;解压后是如下形式&#xff1b; 由于该压缩数据进行了分卷操作&#xff0c;需要合并后才能进行解压。首先我们将下面4个json文件剪贴到其他文件夹&#xff0c;只保留00-19的文件&#xff0c;然后在该文件夹下打开cmd&#xf…