`
085567
  • 浏览: 217488 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hive与并行数据仓库的体系结构比较

    博客分类:
  • hive
阅读更多

转自:http://www.db2china.net/club/thread-11637-1-1.html

最近分析和比较了Hive和并行数据仓库的架构,本文记下一些体会。
Hive是架构在Hadoop MapReduce Framework之上的开源数据分析系统。 Hive具有如下特点:

1. 数据以HDFS文件的形式存储,从而可以很方便的使用外部文件
2. 元数据存储独立于数据存储之外,从而解耦合元数据和数据,同样的数据,不同的用户可以有不同的元数据
3. 查询计划被分解为多个MapReduce Job,并按照依赖关系依次执行,复用了MapReduce的执行架构
4. 灵活的存储格式,通过ObjectInspector将对数据列的访问与数据的具体存储格式解耦合,同一行数据在同一个数据处理流中可以以不同的格式出现
5. 基于规则的查询优化器,依次使用规则转换逻辑计划

下面,我们就把Hive跟传统的并行数据仓库进行一下深入的比较:

1. 存储引擎。 并行数据仓库需要先把数据装载到数据库中,按特定的格式存储成特定的页文件,然后才能查询;而Hive则不用装载数据,也不用格式转换,Hive内置了多种文件格式的支持,并且可以使用用户定制的格式实现(inputformat),这样大大节省了数据导入的开销。传统数据仓库是把数据导入系统中,而 Hive则是动态的将对数据处理的逻辑(代码)导入系统中。

2. 执行引擎。Hive架构于MapReduce Framework之上,执行计划的灵活性较差,优化器可做的选择很少,例如:Join算法只有Grace Hash Join一种选择,性能更加优秀且稳定的Hybrid Hash Join则无法实现; Map端的Group-by算法只有Hash Group-by一种选择, Reduce端的Group-by只有sort group-by一种选择(不然MapReduce提供的sort就浪费了); limit无法和sort融合起来,很多情况下,用堆排序来融合limit与sort会更加高效。 Join, Group-by, Limit在OLAP,日志分析等任务中非常常用的Operator,而Hive在这3个Operator的实现上都依赖于MapReduce Frameowork提供的partition和sort,好处是实现比较简单,缺点是效率往往不是最优的。 然而,由于MapReduce数据处理流程的限制,效率更高的算法却无法实现。 相反,并行数据仓库实现了各种算法,它的查询优化器可以更加灵活的选择这3个Operator的不同实现。

3. 查询优化器。大多数商用数据仓库使用基于代价的优化器,在生成查询计划时,利用元数据中的统计信息估算每个operator要处理的数据量,选取代价较低的执行计划。不过,这些商用数据仓库的都起步于基于规则的查询优化器,而Hive正处于这样一个类似的起步阶段。因而Hive查询优化器能做的优化并不多,仅限于10几条转换规则。

4. 索引和缓冲管理。 对于查询来说,索引的作用至关重要,尽管Hive中的partition起到和索引类似的作用,但还比较初级,与并行数据仓库较为完善的索引 (primary,secondary, clustered, unclustered)还有很大差距。 当然,Hive也没有缓冲区管理机制,只能依赖于文件系统的缓冲机制;并行数据仓库往往禁用操作系统的缓冲机制,针对不同的查询的特点设计了多种缓冲机制,从而优化了性能。

5. 并行扩展性。MapReduce将MR job的中间结果保存到Map Task的本地硬盘,从而MR Job的容错性非常好,Hive自然的利用了这一点;Hive执行计划中,每一个MapReduce job又把处理结果写到HDFS,从而又利用了HDFS的容错性。 因此,Hive有非常好的intra-query fault-tolerance,所以可扩展性非常强,例如一个查询可以在4000个节点上同时跑;缺点是大大减少了pipeline parallelism的机会。 并行数据仓库往往采用的是pipeline架构,上游的Operator每产生一条数据就会送去下游的Operator。这样的好处是最大化了 pipeline parallelism并避免了中间结果的磁盘读写,但是,当一个查询运行于并行数据库上时,一旦一个节点出现故障,并行数据仓库就必须重新执行该查询。所以,当一个集群中的单点故障发生率较高时,并行数据仓库的性能就会下降了。假设每个节点故障发生率是0.01%,那么1000个节点的集群中,单点故障发生率则为10%;假设每个节点故障发生率是0.0001%,那么5000个节点的集群中,单点故障发生率为0.5%!

6. 内存拷贝开销。 千万别小看这一点,内存拷贝会很大程度上拖累系统性能。 我们可以注意到,Hive中所有的哈希,比较,数值运算操作,都需要操作在Writable Object上,而每次重置(reset)这些Writable Object,都需要将数据从byte array拷贝到这些对象的byte[]成员中。 在更精巧的实现中,很多内存拷贝其实是可以避免的,并行数据仓库往往做了很多优化(甚至包含操作系统内核的优化,比如Teradata的PDE)去节省不必要的内存拷贝,从而又带来了性能提升。

在实际应用中,到底该选用Hive还是并行数据仓库,取决于这些:
1. 钱,Hive是开源的,并行数据仓库(db2, teradata, netezza, vertica)是非常昂贵的
2. 还是钱,Hive只需要普通机器集群,并且集群节点的操作系统和硬件都可以是异构的,单点故障发生率高也无所谓;并行数据仓库往往希望使用性能较高的服务器作为集群节点,从而单点故障发生率可以控制在一个非常低的范围。
3. 数据规模,如果是google, facebook这种规模的应用,需要几千甚至上万节点的集群,目前的并行数据仓库产品就不能支撑了;如果是沃尔玛,eBay这些应用,并行数据库还是完全可以胜任的。

分享到:
评论

相关推荐

    第四十九章:Hive数据仓库工具1

    【Hive 数据仓库工具概述】 Hive 是一个基于 Hadoop 的数据仓库工具,最初由 Facebook 开发,旨在解决非 ...了解 Hive 的体系结构、与其他数据库的差异以及如何在实际环境中部署和使用,对于进行大数据分析至关重要。

    Hive数据仓库全套电子课件完整版ppt整本书电子教案最全教学教程.pptx

    2. **Hive 体系结构**:Hive 包括客户端、元数据存储、驱动器和执行器等组件。客户端是用户与 Hive 交互的接口,元数据存储通常在 MySQL 或其他 RDBMS 中,包含表结构、分区信息等。驱动器解析 SQL 查询并生成执行...

    数据仓库之Hive.zip

    4. **执行引擎(Execution Engine)**:Hive执行引擎负责运行由编译器生成的MapReduce任务,它与Hadoop紧密集成,利用Hadoop的并行处理能力处理大规模数据。 5. **存储体系(Storage Hierarchy)**:Hive支持多种...

    主要介绍大数据数据仓库的理论知识,hadoop和hive相关知识

    ### 大数据与数据仓库基础知识 #### 一、大数据数据仓库概述 大数据数据仓库是用于存储、管理和分析大规模数据集的系统。随着信息技术的发展,企业需要处理的数据量日益增大,传统的关系型数据库难以满足需求。...

    深入浅出 Hive

    7. Hive 体系结构 Hive 包含了元数据服务器、客户端和执行器等组件,元数据服务器负责管理元数据,客户端用于提交查询,执行器则负责将查询转换为 MapReduce 任务并执行。 8. 日志调试 调试 Hive 查询通常涉及...

    大规模数据查询Hive及Impala技术原理及架构.pdf

    **二、Hive的体系架构与数据模型** 1. **用户接口** - **CLI (命令行界面)**:用户可以通过 CLI 直接与 Hive 交互,启动时会同时启动一个 Hive 实例。 - **Client (客户端)**:用于连接到 Hive Server,需要指定 ...

    云计算HIVE使用.docx

    5. **索引机制**:Hive在加载数据时不创建索引,因此访问延迟较高,但得益于MapReduce并行处理能力,仍适用于大规模数据处理。相比之下,传统数据库通过建立索引提高查询效率。 6. **执行机制**:Hive多数查询操作...

    《企业级Hive实战课程》大纲

    - 元数据与数据存储机制。 2. **Hive Shell常用命令** - `hive-e`、`hive-f`、`hive-v`、`hive-i`、`hive-S`等命令的使用方法及其应用场景。 3. **Hive表操作** - 内部表、外部表、分区表的定义与区别; - 表...

    大数据系列-Hive入门与实战.pptx

    【Hive 体系结构】 Hive 的体系结构包括以下几个关键组件: 1. **元数据**:元数据存储了关于 Hive 数据库、表、列、分区及其属性的信息,通常存储在外部的关系型数据库如 MySQL 或 Derby 中。 2. **用户接口**: ...

    大数据体系结构.ppt

    大数据的体系结构通常由多个层次组成,包括数据准备、存储与管理、计算处理、数据分析和知识展现。其中,数据准备涉及数据采集和预处理,存储与管理则涵盖了分布式文件系统如Hadoop的HDFS,以及NoSQL数据库如HBase。...

    大数据体系结构.pptx

    在这一背景下,大数据体系结构应运而生,旨在解决海量数据的存储、管理和分析问题。 一、大数据时代的新命题 大数据时代的核心特征是数据的爆炸性增长,包括互联网海量数据和物联网的各种类型数据。这要求系统具备...

    基于分布式存储系统的Hive与Hbase的研究.pdf

    【分布式存储系统】分布式存储系统是一种将数据分散存储在多台独立设备上的计算机存储体系结构。这种系统可以处理大量数据,提高数据的可用性和容错性,并通过并行处理提高数据访问速度。Hadoop分布式文件系统(HDFS...

    大数据体系结构及关键技术.ppt

    大数据体系结构及关键技术是当前信息技术领域的重要研究方向,随着数据量的爆炸性增长,传统的数据处理方式已经无法满足需求。本讲座将深入探讨大数据的新命题、体系结构以及关键技术和应用。 一、大数据时代的新...

    1大数据体系结构97.pptx

    大数据的体系结构通常采用分层架构,从数据的生命周期来看,包括数据准备、数据存储与管理、计算处理、数据分析和知识展现五个环节。整体系统架构中,大数据处理涉及到多个组件的协同工作,如数据采集、预处理、存储...

    大数据体系结构及技术解决方.pptx

    它提供了分布式文件系统(HDFS)、并行计算框架MapReduce以及其他如HBase(NoSQL数据库)、Hive(数据仓库工具)、Zookeeper(分布式协调服务)、Avro(数据序列化工具)、Pig(数据流分析平台)和Sqoop(数据库与...

    详解Hadoop核心架构HDFS+MapReduce+Hbase+Hive

    通过对Hadoop分布式计算平台最...整个Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持,并通过MR来实现对分布式并行任务处理的程序支持。HDFS采用主从(Master/Slave)结构模型,一个HDFS集群是由一个Nam

    湖仓一体构建大数据中台及解决方案.pptx

    - **数据仓库**:利用Apache Hive、Presto等工具进行数据的结构化处理,并存储在专门的数据库系统中,如Redshift或BigQuery。 - **数据集成**:使用ETL工具(如Apache Spark)进行数据的清洗、转换和加载过程,确保...

    大数据体系结构及关键技术.pptx

    5. Hive:基于Hadoop的数据仓库工具,提供SQL接口进行数据分析。 6. ZooKeeper:分布式协调服务,实现高可用性和一致性。 7. Avro:数据序列化工具,优化数据传输效率。 8. Pig:数据流分析平台,提供高级语言进行大...

Global site tag (gtag.js) - Google Analytics