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. 1.使用SignalR实现页面即时刷新(服务端主动推送)

      模块功能说明: 实现技术:sqlserver,MVC,WebAPI,ADO.NET,SignalR(服务器主动推送) 特殊车辆管理--->移动客户端采集数据存入数据库---->只要数据库数 ...

    2. SharePoint 2016 配置用户请求应用程序

      最近看了看SharePoint的应用程序,觉得还是不错的,以前都没怎么注意过这样的功能.当然,应用程序除了让用户和管理员添加外,还可以让他们进行请求,把应用程序添加到应用程序目录,然后由统一的管理员进 ...

    3. CREELINKS平台_处理器CeGpio资源使用说明(CeGpio的配置与使用)

      0x00 CREELINKS平台简介     CREELINKS(创e联)是由大信科技有限公司研发,集合软硬件.操作系统.数据云储存.开发工具于一体,用于物联网产品的设计.研发与生产的平台.    平 ...

    4. JS事件流理解

      事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字. 事件是javaScript和DOM之间的桥梁. 你若触发,我便执行--事件发生,调用它的处理函数执行相 ...

    5. Qt 中QString 字符串操作:连接、组合、替换、去掉空白字符

      Qt中的字符串类 QString类 保存了16位Unicode值,提供了丰富的操作.查询和转换等函数. QString 字符串有如下几个操作符: (1) "+" 用于组合两个字符串 ...

    6. JavaScript内置对象-Object

      ▓▓▓▓▓▓ 大致介绍 JavaScript的简单数据类型包括:Undefined.Null.Boolean.Number.String.JavaScript中这五种基本数据类型不是对象,其他所有值都 ...

    7. Javascript基本语句

      1.单行语句是大家用的最多的,下面讲讲复合语句的用法. 用一对花括号括起来,处理的时候,可以用单句来对待.这样做的好处是避免复合语句中语句互相干扰执行. 语法如下: { var x=1111: var ...

    8. SQL SERVER的检查点checkpoint

      1 什么是检查点 数据修改操作 都是在 内存中的数据页进行修改,每次修改后并没有立即把这些页面写入磁盘,而是等到一定时期,数据库引擎对数据库发起 检查点命令,这时,该命令就会创建一个已知的正常点,把当 ...

    9. mysql忘掉密码

      1. 先杀掉mysqld的进程: service mysql stop 2. 使用skip-grant-tables这个选项启动MySQL: vi /etc/my.cnf 在mysqld 下添加 sk ...

    10. 每天一个Linux命令(23)--linux 目录结构(一)

      对于每一个Linux 学习者来说,了解 Linux 文件系统的目录结构,是学好Linux 的至关重要的一步,深入了解Linux 文件目录结构的标准和每个目录的详细功能,对于我们用好Linux 系统至关 ...