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. PHP静态成员变量

      静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员.. ...

    2. django源码简析——后台程序入口

      这一年一直在用云笔记,平时记录一些tips或者问题很方便,所以也就不再用博客进行记录,还是想把最近学习到的一些东西和大家作以分享,也能够对自己做一个总结.工作中主要基于django框架,进行项目的开发 ...

    3. AngularJS自定义指令之可选参数replace

      replace是一个可选参数,如果设置了这个参数,值必须为true,因为默认值为false.默认值意味着模板会被当作子元素插入到调用此指令的元素内部: 如: <my-directive>& ...

    4. linux下安装Mysql 以及导入数据库

      1.下载mysql的rpm包,创建一个文件夹例如software来放置下面文件 可以通过wget下载具体的地址 (1)MySQL-server-5.6.10-1.rhel5.x86_64.rpm:My ...

    5. 在CentOS 7中安装Redis 3.2.8

      文章环境: CentOS 7 biuld 1611最小化安装@VMware Redis 3.2.8 安装步骤: #安装gcc yum -y install gcc #下载redis curl -O h ...

    6. 小红帽5.9 配置静态IP上网问题

      本来无一物,何处染尘埃. DHCP连得好好的,手痒试下STATIC,静态IP 首先进入/etc/sysconfig/network-scripts/ifcfg-eth0, 写入各种参数: BOOTPR ...

    7. php表单修改数据

      (接前面写的) 第一个页面xiugai.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

    8. (三目运算符)PHP中问号?和冒号: 的作用

      <表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如 ...

    9. 对JavaScript中变量类型的重新理解

      <JavaScript启示录>这本书中提出:JavaScript中,对象为“王”(JavaScript里的几乎所有东西都是对象或者用起来像对象). 飞燕草对JavaScript最深刻的理解 ...

    10. Spring框架中 配置c3p0连接池 完成对数据库的访问

      开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...