数据仓库选择Greenplum还是SQL-on-Hadoop

这篇具有很好参考价值的文章主要介绍了数据仓库选择Greenplum还是SQL-on-Hadoop。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Greenplum和Hadoop都是为了解决大数据并行计算而出现的技术,二者的相似点在于:

  1. 分布式存储数据在多个节点上。
  2. 采用分布式并行计算框架。
  3. 支持向外扩展来提高整体的计算能力和存储容量。
  4. 支持X86开放集群架构。

但两种技术在数据存储和计算方法上,也存在很多显而易见的差异:

  1. Greenplum按照关系数据库行列表方式存储数据(有模式);Hadoop按照文件切块方式分布式存储(无模式)数据。
  2. 两者采用的数据分布机制不同,Greenplum采用Hash分布,计算节点和存储紧密耦合,数据分布在记录级的更小粒度,一般在1KB以下;Hadoop FS按照文件切块后随机分配,节点和数据无耦合,数据分布粒度在文件块级,默认为64MB。
  3. Greenplum采用SQL并行查询计划;Hadoop采用MapReduce框架。

基于以上不同,体现在效率、功能特性等方面也大不相同。Greenplum数据库在计算并行度、计算算法上比Hadoop更加优雅,效率更高。图3-11由Pivotal提供,显示相同硬件环境下,基于MapReduce的Hive和Greenplum在TPC-H(商业智能测试)22个SQL测试中的性能比较,可以看到两者的执行速度相去甚远。

数据仓库选择Greenplum还是SQL-on-Hadoop

 文章来源地址https://www.toymoban.com/news/detail-458671.html

图3-11  Hive和Greenplum在TPCH中的性能比较

为了取得第一手数据,笔者做了以下两个简单的Greenplum与MySQL查询性能对比测试,以便有一个最初的直观体验。也许你会觉得拿分布式集群数据库与单机集中式数据库作比较有失公允,没错!笔者想说明的是:这两个查询都是线上实际在MySQL上运行的慢查询,而考虑Greenplum就是为了解决大数据量在MySQL上查不动的问题。而且这也并不是严格的对等测试,Greenplum只是由三台测试机组成的集群,而MySQL使用的是线上高配服务器。

-- 查询1:
select userid, target, relation_type, update_time
  from relation
 where userid = 717600270
   and relation_type in (1, 2) 
 order by update_time desc
 limit 30;
 
-- 查询2:
select a.*
  from moments_dynamic a -- force index (idx_user_all)
  join (select target from relation r 
         where r.userid = 918046590 
           and (r.relation_type = 1 or r.relation_type = 2) 
         union all 
        select 918046590) b 
    on a.userid=b.target
 where dynamic_status = 0
   and dynamic_type in (1, 6, 8, 11, 13) 
 order by id desc
 limit 80;

moments_dynamic表有79309341行,relation表有499194521行。查询1,Greenplum用时44 ms,MySQL用时9210 ms;查询2,Greenplum用时75ms,MySQL用时170 ms(force index (idx_user_all))。

在功能上Greenplum数据库采用SQL作为主要交互式语言。SQL语言简单易学,具有很强的数据操纵能力和过程语言的流程控制能力,是专门为统计和数据分析开发的语言,丰富的功能和函数极大简化了数据操作和交互过程。

而对于MapReduce编程明显是困难的,在原生的MapReduce开发框架基础上进行开发,需要技术人员谙熟Java开发和并行原理,而这即便是技术人员也难以学习和操控。为了解决易用性问题,近年来SQL-on-Hadoop技术大量涌现出来,成为当前Hadoop开发使用的一个技术热点。其中,Hive支持MapReduce、Spark、Tez三种计算框架;Spark SQL采用内存中的MapReduce;Impala、HAWQ则借鉴MPP计算思想来做查询优化和内存数据管道计算,以此来提高性能。

虽然SQL-on-Hadoop比原始的MapReduce在易用性上有所提高,但在SQL成熟度和复杂分析上目前还与Greenplum数据库有较大差距,笔者在使用过程中对此深有体会:

  1. SQL-on-Hadoop系统中,除了HAWQ(HAWQ从代码级别上可以简单理解成是数据存储在HDFS上的Greenplum数据库)外,其余系统对SQL的支持都非常有限,特别是分析型复杂SQL,如SQL 2003 OLAP WINDOW函数,几乎都不支持,更不用说存储过程等数据库常规功能。以Impala为例,不支持Date数据类型,不支持XML和JSON相关函数,不支持covar_pop、covar_samp、corr、percentile、percentile_approx、histogram_numeric、collect_set等聚合函数,不支持rollup、cube、grouping set等操作,不支持数据抽样(Sampling)等数据分析中的常用操作。在TPC-DS测试中,Spark SQL、Impala、Hive等只支持其中1/3左右的SQL测试。TPC-DS是专门用于评测决策支持系统(大数据或数据仓库)的标准SQL测试集,包含99个SQL。
  2. 由于HDFS本身只能追加数据的特性(Append-only),SQL-on-Hadoop大多不支持行级数据更新(update)和删除(delete)功能。而像Hive虽然通过配置可以支持事务和行级更新,但实现极为别扭,性能更是无法接受,基本不具实用价值。
  3. SQL-on-Hadoop不擅长于交互式即席查询,多通过预关联的方式来规避这个问题。另外,在并发处理方面能力较弱,高并发大查询场景下,需要控制计算请求的并发度,避免资源过载导致的稳定性和性能下降等问题。笔者就曾多次遇到几个并发Spark SQL任务占用大量内存,最终出现OOM错误的情况。

反观专为大数据存储、计算、挖掘而设计的Greenplum,它所拥有的丰富特性使其成为构建数据仓库等分析型应用的理想选择:

  1. 完善的标准支持。Greenplum完全支持ANSI SQL 2008标准和SQL OLAP 2003 扩展。例如,支持内连接、外连接、全连接、笛卡尔连接、相关子查询等所有表连接方式,支持并集、交集、差集等集合操作,并支持递归函数调用。作为一个数据库系统,提供这些功能很好理解。
  2. 除了包含诸多字符串、数字、日期时间、类型转换等常规标量函数以外,Greenplum还包含丰富的窗口函数和高级聚合函数,这些函数经常被用于分析型数据查询。窗口函数包括cume_dist、dense_rank、first_value、lag、last_valueexpr、lead、ntile、percent_rank、rank、row_number等。高级聚合函数包括median、percentile_cont (expr) within group (order by expr [desc/asc])、percentile_disc (expr) within group (order by expr [desc/asc])、sum(array[])、pivot_sum (label[], label, expr)等。
  3. 得益于PostgreSQL良好的扩展性(这里是extension,不是scalability),Greenplum 可以采用各种开发语言来开发用户自定义函数(UDF)。自定义函数部署到Greenplum后,能充分享受到实例级别的并行性能优势。建议把库外的处理逻辑部署为用MPP数据库的UDF这种库内方式来处理,这将获得意想不到的性能和方便。
  4. 支持分布式事务,支持ACID,保证数据的强一致性。
  5. Greenplum支持用“Hadoop外部表”方式来访问、加载HDFS的数据。虽然Greenplum的Hadoop外部表性能大幅低于MPP内部表,但比Hadoop自身的Hive要快很多。Greenplum还提供了gpfdist文件服务器,可并行读写本地文件系统中的文件,最大化数据装载性能。
  6. Greenplum有完善的生态系统,可以与很多企业级产品集成,如SAS、Cognos、Informatic、Tableau等;也可以与很多种开源软件集成,如Pentaho、Talend等。

本文节选自《Greenplum构建实时数据仓库实践》,内容发布获得作者和出版社授权。

数据仓库选择Greenplum还是SQL-on-Hadoop

 

到了这里,关于数据仓库选择Greenplum还是SQL-on-Hadoop的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql数据库存储手机号字段选择bigint还是char?

    在MySQL中,存储手机号可以使用多种数据类型,包括bigint、char、varchar等。不同的数据类型有不同的优缺点,因此需要根据实际情况选择合适的数据类型。 bigint类型 bigint类型是一种整数类型,可以存储很大的整数,范围为-9223372036854775808到9223372036854775807。因此,如果使用big

    2024年02月11日
    浏览(77)
  • Hadoop数据仓库的主要特征有哪些?

    数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。 数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统; 同时数据仓库自身也不

    2024年02月08日
    浏览(30)
  • 大数据技术之Hadoop学习(七)——Hive数据仓库

    目录 素材 一、数据仓库简介 1、数据仓库的认识 (1)数据仓库是面向主题的。 (2)数据仓库是随时间变化的。 (3)数据仓库相对稳定 (4)OLTP和OLAP 2、数据仓库的结构 (1)数据源 (2)数据存储及管理 (3)OLAP 服务器 (4)前端工具 3、数据仓库的数据模型 (1)星状模

    2024年02月17日
    浏览(42)
  • 大数据之Hadoop分布式数据仓库HBase

    HBase 是一个构建在 Hadoop 文件系统之上的面向列的数据库管理系统。 要想明白为什么产生 HBase,就需要先了解一下 Hadoop 存在的限制?Hadoop 可以通过 HDFS 来存储结构化、半结构甚至非结构化的数据,它是传统数据库的补充,是海量数据存储的最佳方法,它针对大文件的存储,

    2024年02月02日
    浏览(53)
  • 机器学习——数据仓库与数据挖掘复习(选择题、判断题)

    1. 以下不是分类问题的是(  B )。 A. 用户流失模型 B. 身高和体重关系 C. 信用评分 D. 营销响应 2. 对于回归分析,下列说法错误的是( D ) A. 在回归分析中,变量间的关系若是非确定关系,那么因变量不能由自变量唯一确定 B. 线性相关系数可以是正的,也可以是负的 C. 回归

    2024年02月06日
    浏览(54)
  • Hadoop与Spark:大数据处理框架的比较与选择

    Hadoop与Spark:大数据处理框架的比较与选择 在大数据的时代背景下,数据处理和分析的需求日益增长。为了满足这些需求,开发者们创造了许多大数据处理框架,其中最为人们熟知的可能就是Hadoop和Spark了。这两者各有其优势,选择哪一个取决于你的具体需求。下面我们将对

    2024年01月25日
    浏览(41)
  • 数据仓库【SQL优化】

            每个sqlboy工作一段时间后都会面临这一个能力提升问题--Sql优化。本文通过更通俗易懂的话术讲解sql优化的策略内容。提供一个从业务需求探查到最终上线全流程的sql优化方案,如有缺失,希望大家多多交流补充。 数据探查阶段 业务探查:了解业务热点数据 数据建

    2024年02月21日
    浏览(40)
  • hql、数据仓库、sql调优、hive sql、python

    HQL(Hibernate Query Language) 是面向对象的查询语言 SQL的操作对象是数据列、表等数据库数据 ; 而HQL操作的是类、实例、属性 数据仓库的定义 英文名称为Data Warehouse,可简写为DW或DWH。 为企业级别的决策制定过程,提供所有类型数据支持的战略集合。 它出于分析性报告和决策支持

    2024年02月03日
    浏览(63)
  • 大数据技术之Sqoop——SQL to Hadoop

    sqoop (sql to hadoop)是一款开源的工具,主要用于在 Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MSQL,Oracle,Postgres 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。 将导入或导出命令翻译

    2023年04月08日
    浏览(36)
  • SQL 选择数据库 USE语句

    当SQL Schema中有多个数据库时,在开始操作之前,需要选择一个执行所有操作的数据库。 SQL USE语句用于选择SQL架构中的任何现有数据库。 句法 USE语句的基本语法如下所示 : 数据库名称在RDBMS中必须是唯一的。 您可以查看可用的数据库,如下所示: 现在,如果您想使用AMROOD数

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包