Hive简介

Hive是什么

  • Hive是构建在Hadoop之上的数据仓库平台。
  • Hive是一个SQL解析引擎,将SQL转译成MapReduce程序并在Hadoop上运行。
  • Hive是HDFS的一个文件目录,一个表名对应一个目录名,若该表是分区表,则分区值对应子目录名。

    Hive的历史由来

    Hive体系结构

    Hive在Hadoop中的位置

    Hive设计特征

    Hive 做为Hadoop 的数据仓库处理工具,它所有的数据都存储在Hadoop 兼容的文件系统中。

    Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。

    Hive 的设计特点如下:

  • 支持索引,加快数据查询。
  • 不同的存储类型,例如,纯文本文件、HBase 中的文件。
  • 将元数据保存在关系数据库中,减少了在查询中执行语义检查时间。
  • 可以直接使用存储在Hadoop 文件系统中的数据。
  • 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。
  • 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。
  • 编码跟Hadoop同样使用UTF-8字符集。
  • Hive体系结构

    用户接口:

  • CLI:命令行界面,Cli 启动的时候,会同时启动一个 Hive 副本。
  • JDBC客户端:封装了Thrift,java应用程序,可以通过指定的主机和端口连接到在另一个进程中运行的hive服务器
  • ODBC客户端:ODBC驱动允许支持ODBC协议的应用程序连接到Hive。
  • WUI 接口:是通过浏览器访问 Hive
  • Thrift服务器:

  • 基于socket通讯,支持跨语言。Hive Thrift服务简化了在多编程语言中运行Hive的命令。绑定支持C++,Java,PHP,Python和Ruby语言。
  • 解析器:

  • 编译器:完成 HQL 语句从词法分析、语法分析、编译、优化以及执行计划的生成。
  • 优化器是一个演化组件,当前它的规则是:列修剪,谓词下推。
  • 执行器会顺序执行所有的Job。如果Task链不存在依赖关系,可以采用并发执行的方式执行Job。
  • 元数据库:

  • Hive的数据由两部分组成:数据文件和元数据。元数据用于存放Hive库的基础信息,它存储在关系数据库中,如 mysql、derby。元数据包括:数据库信息、表的名字,表的列和分区及其属性,表的属性,表的数据所在目录等。
  • Hadoop:

  • Hive 的数据文件存储在 HDFS 中,大部分的查询由 MapReduce 完成。(对于包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 作业)
  • Hive运行机制

    ① 用户通过用户接口连接Hive,发布Hive SQL

    ② Hive解析查询并制定查询计划

    ③ Hive将查询转换成MapReduce作业

    ④ Hive在Hadoop上执行MapReduce作业


    Hive适用场景

    Hive的优势

    • 解决了传统关系数据库在大数据处理上的瓶颈。适合大数据的批量处理。
    • 充分利用集群的CPU计算资源、存储资源,实现并行计算。
    • Hive支持标准SQL语法,免去了编写MR程序的过程,减少了开发成本。
    • 具有良好的扩展性,拓展功能方便。

    Hive的缺点

    • Hive的HQL表达能力有限:有些复杂运算用HQL不易表达。
    • Hive效率低:Hive自动生成MR作业,通常不够智能;HQL调优困难,粒度较粗;可控性差。
    • 针对Hive运行效率低下的问题,促使人们去寻找一种更快,更具交互性的分析框架。 SparkSQL 的出现则有效的提高了Sql在Hadoop 上的分析运行效率。

    Hive的应用场景

    适用场景

    • 海量数据的存储处理
    • 数据挖掘
    • 海量数据的离线分析

    不适用场景

    • 复杂的机器学习算法
    • 复杂的科学计算
    • 联机交互式实时查询

    Hive安装

    参考:Hive伪分布式下安装

    Hive基础知识梳理的更多相关文章

    1. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

      SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

    2. [SQL] SQL 基础知识梳理(二) - 查询基础

      SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

    3. [SQL] SQL 基础知识梳理(三) - 聚合和排序

      SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

    4. [SQL] SQL 基础知识梳理(四) - 数据更新

      SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

    5. [SQL] SQL 基础知识梳理(五) - 复杂查询

      SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

    6. Anliven - 基础知识梳理汇总 - 软件测试

      基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...

    7. [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型

      引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

    8. java基础知识梳理

      java基础知识梳理 1 基本数据类型

    9. 《Programming Hive》读书笔记(两)Hive基础知识

      <Programming Hive>读书笔记(两)Hive基础知识 :第一遍读是浏览.建立知识索引,由于有些知识不一定能用到,知道就好.感兴趣的部分能够多研究. 以后用的时候再具体看.并结 ...

    随机推荐

    1. Easy单例模式

      在学习单例模式前,不妨问自己几个问题:单例模式是怎么来的,单例模式怎么去用? 单例模式是怎么来的? 这就从设计模式起源开始,他是在实际实践中遇到类似情况可以通用经验所得到的总结,一般在其他模块或者方法 ...

    2. 重新认识一个强大的 Gson

      从一个 Bug 说起 不知道你们发现没有,你写完的程序无论当时怎么测试,过一段时间总会出 Bug .再说一个每天都在发生的例子:在你写完一篇博客后,立即检查的话,总是查不出自己写的错别字. 据说这些都 ...

    3. https post

      using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

    4. C语言总结

      我们用了20天的时间左右的时间来学习简单的C语言,对于C语言,总体来说我是学的不是特别透彻,感觉自己什么都不懂一样.明天就要考试了,希望明天考个好成绩,为明年打下一个良好的基础. 这段时间我们学习了: ...

    5. GDKOI2015滚粗记

      又是愉悦的滚粗了hahaha(特别不甘心啊啊啊) 其实去比赛每次都一样啦,就是每次吃饭睡觉补番考试评讲互黑跪烂什么的,这次就不用说了啦,先把老师要求写的东西贴出来再写点别的啦 这次暴露了很多问题,首先 ...

    6. Python2.7学习笔记-定义函数、filter/map/reduce/lambda

      我把写的代码直接贴在下面了,注释的不是很仔细,主要是为了自己复习时方便查找,并不适合没有接触过python的人看,其实我也是初学者. #定义函数 def my_abs(x): if x>=0: ...

    7. 自行搭建私有云ownCloud,启用SSL,其他配置

      ownCloud简介 ownCloud(官网)是一款开源的私有云框架,可以通过它实现个人网盘的功能,如果拥有一个性能不错的VPS,那么就可以摆脱奇慢无比的百度云等网盘啦!我花了大约一天的时间总算搭好了 ...

    8. ios常用资源网址链接

      M了个J博客 http://www.cnblogs.com/mjios/tag/objective-c/  Cocoa China http://www.cocoachina.com  git网 ht ...

    9. MongoDB【第一篇】安装

      第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. MongoDB 版本 mongodb-linux-x86_64-rhel70-3.4.2 3. 设置 ...

    10. 1.5编程基础之循环控制44:第n小的质数

      #include<iostream>#include<cmath>using namespace std;int main(){ int n; cin>>n; in ...