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. Spring DM所提供的Bundle监听接口OsgiBundleApplicationContextListener

      通过使用Spring DM提供的监听接口,我们可以更好的对服务进行管控,其实该接口也非常简单就能使用上,只要自定义一个类实现OsgiBundleApplicationContextListener接口 ...

    2. js设置、获取、清除cookie

      <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

    3. Myeclipse 搭建Java Web 项目:Servlet 《二》

      上一节,我们使用myeclipse部署了web项目,但那部署的为静态的web项目,下面我们来学习编写动态的web项目,编写动态项目必须要用到的为:servlet. Servlet是由sun公司命名的, ...

    4. iOS开发——设计模式那点事

      单例模式(Singleton) 概念:整个应用或系统只能有该类的一个实例 在iOS开发我们经常碰到只需要某类一个实例的情况,最常见的莫过于对硬件参数的访问类,比如UIAccelerometer.这个类 ...

    5. ABP Zero源码

      测试运行地址:http://ghy.demo.aspnetzero.com 账号:admin  密码:123456 需要源码,请加QQ:858-048-581 1.先编译成功,Nuget下载ABP的依 ...

    6. Node.js~在linux上的部署~外网不能访问node.js网站的解决方法

      这是上一篇node.js部署到linux上的后续文章,当我们安装完node.js之后,建立了sailsjs的网站,然后在外面电脑上无法访问这个网站,这个问题我们如何去解决? 解决思路: 查看linux ...

    7. Hibernate执行流程和关系映射

      一.Hibernate的执行流程 hibernate作为一个ORM框架,它封装了大量数据库底层的sql语句操作的方法,这样在执行hibernate的过程中理解hibernate的执行流程很有必要. 由 ...

    8. .NET 发布网站步骤

      本文章分为三个部分: web网站发布.IIS6 安装方法.ASP.NET v4.0 安装方法 一.web网站发布 1.打开 Visual Studio 2013 编译环境 2.在其解决方案上右击弹出重 ...

    9. 读书笔记 effective c++ Item 31 把文件之间的编译依赖降到最低

      1. 牵一发而动全身 现在开始进入你的C++程序,你对你的类实现做了一个很小的改动.注意,不是接口,只是实现:一个私有的stuff.然后你需要rebuild你的程序,计算着这个build应该几秒钟就足 ...

    10. 从数据库读取二进制图片,img标签显示图片

      引自 http://www.w3dev.cn/article/20110214/asp-net-csharp-image-base64-change.aspx      <img src=&qu ...