对Hive的认识

学习Hive,要知道他是干什么,有什么优点和缺点,能够解决什么问题。以下内容是我从《Hive编程指南》中学到的东西,供以后学习使用。
一、Hive常识
1.Hive出现的原因:
    解决了用户从一个现有的数据基础架构转移到Hadoop上,并且是基于传统关系型数据库和结构化查询语句,方面sql用户的使用。利用HQL来查询存储在Hadoop集群中的数据。
2.Hive的限制:
  •     Hive不支持记录级别的更新、插入或者删除操作。但是用户可以通过查询生成新表或者将查询结果导入到文件中。
  •     Hive查询延时严重,因为Hadoop是一个面向批处理的系统,而MapReduce任务启动过程需要消耗较长的时间,HQL在底层转化为MapReduce任务执行。
  •     Hive不支持事务
3.总结
    Hive是最适合数据仓库应用程序的,可以维护海量数据,而且可以对数据进行挖掘,然后形成意见和报告等。
4.Hive组成模块
对Hive的认识
    所有的命令和查询都会进入到Drive(驱动模块),通过该模块对输入进行解析编译,对需求的计算进行优化,然后启动MapReduce任务,Hive本身不会生成Java MapReduce算法程序。相反,Hive通过一个表示job执行计划的XML文件驱动执行内置的、原生的Mapper和Reduce模块。
    Hive通过JobTracker通信来初始化MapReduce任务,
    Metastore(元数据存储)是一个独立的关系型数据库,其中保存表模式和其他系统元数据。
二、Hive和Pig的比较
    HQL是一种查询语言,Pig是一种数据流语言。在Pig中,需要写一系列的声明语句来定义某些关系和其他一些关系之间的联系,每个新的关系都会执行新的数据转换过程。pig会查找这些声明,然后创建一系列有次序的MapReduce任务,来对这些数据进行转换,直到产生我们所希望的结果。pig常用于ETL过程,也就是将外部数据装载到Hadoop集群中,然后转换成所期望的数据格式。