从数据仓库系统对比看Hive发展前景

本文讲的是从数据仓库系统对比看Hive发展前景,大数据时代的信息爆炸,使得分布式/并行处理变得如此重要。无论是传统行业,还是新兴行业(特别是互联网行业),日常业务运行所产生的海量用户和服务数据都需要更大的硬件资源来处理。需要并行处理的应用领域主要为网页搜索、广告投放和机器翻译等。从单机应用到集群应用的过渡中,诞生了MapReduce这样的分布式框架,简化了并行程序的开发,提供了水平扩展和容错能力。

  虽然MapReduce(Hadoop)的应用非常广泛,但这类框架暴露出来的编程接口仍然比较低级,编写复杂处理程序或Ad-hoc查询仍然十分耗时,并且代码很难复用。目前,Google、Facebook和微软等公司都在底层分布式计算框架之上又提供更高层次的编程模型,将开发者不关心的细节封装起来,提供了更简洁的编程接口。

  目前应用最广泛的当属Facebook开源贡献的Hive。Hive是一个基于Hadoop的数据仓库平台,通过Hive,可以方便地进行数据提取转化加载(ETL)的工作。Hive定义了一个类似于SQL的查询语言HQL,能够将用户编写的SQL转化为相应的MapReduce程序。当然,用户也可以自定义Mapper和Reducer来完成复杂的分析工作。从2010年下半年开始,Hive成为Apache顶级项目。

  基于MapReduce的Hive具有良好的扩展性和容错性。不过由于MapReduce缺乏结构化数据分析中有价值的特性,以及Hive缺乏对执行计划的充分优化,导致Hive在很多场景下比并行数据仓库慢(在几十台机器的小规模下可能相差更大),Hive的架构如图1所示。


▲图1 Hive架构图

  强大的数据仓库和数据分析平台至少需要具备以下几点特性。

  ·灵活的存储引擎

  ·高效的执行引擎

  ·良好的可扩展性

  ·强大的容错机制

  ·多样化的可视化

  本文将简要阐述Hive是否完全具备了以上几点,以及与传统的并行数据仓库对比优劣如何。

  存储引擎

  Hive没有自己专门的数据存储格式,也没有为数据建立索引,用户可以非常自由地组织Hive中的表,只要在创建表时告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据。Hive的元数据存储在RDBMS中,所有数据都基于HDFS存储。Hive包含Table、External Table、Partition和Bucket等数据模型。

  并行数据仓库需要先把数据装载到数据库中,按特定的格式存储,然后才能执行查询。每天需要花费几个小时来将数据导入并行数据库中,而且随着数据量的增长和新的数据源加入,导入时间会越来越长。导入时大量的写I/O与用户查询的读I/O产生竞争,会导致查询的性能很差。

  Hive执行查询前无需导入数据,执行计划直接执行。Hive支持默认的多种文件格式,同时也可以通过实现MapReduce的InputFormat或OutputFormat类,由用户定制格式。因为公司的数据种类很多,存储于不同的数据源系统,可能是MySQL、HDFS或者Hypertable等,很多时候Hive的分析过程会用到各种数据源的数据。当然使用多个存储数据源,除了功能上要能够支持导入/导出之外,如何根据各种存储源的能力和执行流获得最优执行计划也是件麻烦事儿。

作者:王玉圆

来源: IT168

原文标题:从数据仓库系统对比看Hive发展前景

时间: 2024-09-10 09:48:52

从数据仓库系统对比看Hive发展前景的相关文章

Hive简介、什么是Hive、为什么使用Hive、Hive的特点、Hive架构图、Hive基本组成、Hive与Hadoop的关系、Hive与传统数据库对比、Hive数据存储(来自学习资料)

1.1 Hive简介 1.1.1   什么是Hive Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1.2   为什么使用Hive Ø  直接使用hadoop所面临的问题 人员学习成本太高 项目周期要求太短 MapReduce实现复杂查询逻辑开发难度太大   Ø  为什么要使用Hive 操作接口采用类SQL语法,提供快速开发的能力. 避免了去写MapReduce,减少开发人员的学习成本. 功能扩展很方便. 1.1.3   H

两组数据循环对比

问题描述 求教,有两组数据循环对比,要出现图上那样的结果,请问怎么写. 解决方案 解决方案二:x,y代表那两组数据,count是结果解决方案三:怎么个对比法?你得把规则说清楚吧,不可能让我们玩找规律的数学题吧.解决方案四:x和y对比,count取小的那个值,x消耗就取下一个x,y消耗完就取下一个y.解决方案五:xcounty37507507500375030009000---------------------------------------这种怎么算?不知道你说的消耗是什么意思.解决方案六

Access使用查询--1.3.用交叉表查询体现一组数据的对比

3.用交叉表查询体现一组数据的对比 新建查询,选择"交叉表查询向导",接着选择"车队运输查询",出现上面的对话框,从可用字段中选择"司机"字段作为行标题.单击下一步. 接着从字段中选择"货物类别"作为列标题.单击下一步. 选择"净重"字段,函数选择"求和",最后为这个交叉表查询起一个名字,向导结束. 上图是刚生成的查询的设计视图. 下表是交叉表的查询结果,清晰地对比了每个司机运输各种货物

透过vs.net数据窗体向导看Ado.net

ado|数据 透过vs.net数据窗体向导看Ado.net 郑佐2005-1-1 在csdn上经常碰到有人问一些Ado.net的问题,特别是开发信息管理系统之类的跟数据库比较密切的程序时,在数据和界面层的开发中会遇到不少常见问题,下面我们通过vs.net自带的数据窗体向导来看看能它能帮我们决绝什么问题. 一.使用向导 新建Windows 应用程序,为当前项目添加组件,选择数据窗体向导,这里名称填写为DataForm1.cs.单击打开出现数据窗体向导对话框.创建新的类型化数据集MyDataSet.

c# ado.net 前台用ajax传数据到后台 看图 大家觉得我后台怎么接收

问题描述 c# ado.net 前台用ajax传数据到后台 看图 大家觉得我后台怎么接收 并且放到数据库执行 执行成功 返回一个1 失败则是0 划红线都是文本框中已经获取的值 解决方案 Request.Params["pointJson"] http://blog.csdn.net/chinacsharper/article/details/9748639 解决方案二: http://www.cnblogs.com/ambar/archive/2010/07/13/parse-json

hadoop streaming多路输出方法和注意点(附超大数据diff对比源码)

简介 hadoop 支持reduce多路输出的功能,一个reduce可以输出到多个part-xxxxx-X文件中,其中X是A-Z的字母之一,程序在输出<key,value>对的时候,在value的后面追加"#X"后缀,比如#A,输出的文件就是part-00000-A,不同的后缀可以把key,value输出到不同的文件中,方便做输出类型分类, #X仅仅用做指定输出文件后缀, 不会体现到输出的内容中 使用方法 启动脚本中需要指定-outputformat org.apache.

数据比较/对比

问题描述 假设我从SqlServer2000中一张表中取出一行数据,又要在另一张表中取出行数据(两行数据的字段都是完全一样),对这两行数据对比,那么选用什么样的数据结构比较好点,又怎样实现对比?当然我要实现的是两个数据库中的数据的对比,不仅仅就是两行 解决方案 解决方案二:乱!比较连个数据库的数据干什么用啊解决方案三:对比是否满足要求啊,一个模板,一个有效数据解决方案四:不十分清楚,只会用for遍历解决方案五:把模板中的数据做为查询条件,在数据库中查询,如果都存在,就表示一样啦.解决方案六:根本

ajax返回xml数据问题(帮忙看一下)

问题描述 ajax返回xml数据问题(帮忙看一下) if (xhr.readyState == 4) { if (xhr.status == 200) { var myval=""; var myval=xhr.responseXML; var myvals=xhr.responseText; window.alert(myvals); var cons=myval.getElementsByTagName("content");//报错说:Uncaught Typ

云要“下雨”,大数据要“落地”—漫谈大数据云计算在中国的发展前景与钱途

问题描述 云要"下雨",大数据要"落地"-漫谈大数据云计算在中国的发展前景与钱途,详情请阅读我的博文:http://blog.csdn.net/easyhadoop/article/details/21044303 解决方案