Hive的适用场景

  Hive是建立在Hadoop之上的数据仓库软件工具,它提供了一系列的工具,帮助用户对大规模的数据进行提取、转换和加载,即通常所称的ETL(Extraction,Transformation,and Loading)操作。Hive可以直接访问存储在HDFS或者其他存储系统(如Hase)中的数据,然后将这些数据组织成表的形式,在其上执行ETL操作。
  Hive定义了简单的类SQL查询语言,称为HiveSQL,它允许熟悉SQL的用户使用HiveSQL在大规模数据集上进行数据查询、数据分析等操作。从本质上讲,Hive就是一SQL解释器,它能够将用户输入的HiveSQL语句转换成MapReduce作业在Hadoop集群上执行,以达到快速查询的目的。Hive通过内置的Mapper和Reducer来执行数据分析操作,同时Hive也允许熟悉MapReduce编程框架的用户使用Hive提供的编程接口实现自己的Mapper和Reducer来处理内置的Mapper和Reducer无法完成的复杂数据分析工作。
  Hive的设计目标是,通过类SQL的语言实现在大规模数据集上快速的数据查询等操作,而不需要开发相应的MapReduce程序,所以Hive特别适合数据仓库的统计分析。Hive最初由Facebook开发实现,Facebook使用Hive来分析日益增长的日志数据。后来Facebook将Hive作为开源项目贡献给Apache基金会,如今Hive已经是Apache下的顶级开源项目,而且在很多大型企业得大了广泛使用,包括淘宝、腾讯等。
  Hive构建在基于静态批处理的Hadoop之上,Hadoop通常都有较高的延迟并且在作业提交和调度的时候需要大量的开销。因此,Hive并不能够在大规模数据集上实现低延迟快速的查询,例如,Hive在几百MB的数据集上执行查询一般有分钟级的时间延迟。因此,Hive并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP)。
  Hive查询操作过程严格遵守Hadoop MapReduce的作业执行模型,Hive将用户的HiveSQL语句通过解释器转换为MapReduce作业提交到Hadoop集群上,Hadoop监控作业执行过程,然后,返回作业执行结果给用户。Hive并非为联机事务处理而设计,Hive并不提供实时的查询和基于行级的数据更新操作。Hive的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。  

你可能感兴趣的:(hadoop,hive,数据,数据仓库)