hive基本概念

hive简介

hive是什么

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

为什么使用hive

1)简单易上手。提供了类sql查询语言HQL,提供快速开发的能力。

2)避免了去写MapReduce,减少开发人员的学习成本。

3)统一的元数据管理(HCalalog)。可与pig,presto等共享。

4)为超大数据集设计的计算/扩展能力。MR作为计算引擎,HDFS作为存储系统。

hive的特点

  • 可扩展
    Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。

  • 延展性
    Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

  • 容错
    良好的容错性,节点出现问题SQL仍可完成执行。

hive的系统架构

hive基本组成

1)用户接口

  • CLI,JDBC/ODBC,WebUI

2)元数据存储(matastore)

  • 默认存储在自带的数据库derby中,线上使用时一般换为MySQL

3)驱动器(Driver)

  • 解析器,编译器,优化器,执行器

4)Hadoop

  • 用MR计算,用HDFS存储

hive各组件基本功能

  • 用户接口主要由三个:CLI、JDBC/ODBC和WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive

  • 元数据存储:Hive 将元数据存储在数据库中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

  • 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。

Hive与SQL的比较

1)查询语言

  • hive使用类SQL的HQL
  • sql使用sql

2)数据存储位置

  • hive是将数据存储在HDFS中
  • sql可以将数据保存在块设备或者本地文件系统中

3)数据格式

  • Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\t”、”\x001″)、行分隔符(”\n”)以及读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)
  • 数据库中,不同的数据库有不同的存储引擎,定义了自己的数据格式

4)数据更新

  • Hive 中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的
  • sql支持数据更新

5)执行延迟

  • hive延迟性高
  • sql延迟性低

6)扩展性

  • hive扩展性好
  • sql扩展性有限

7)索引

  • hive和sql都支持索引

8)分区

hive和sql都支持分区

hive的数据存储

  • hive的所有数据存储基于hadoop的HDFS,hive没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)

  • 在创建表时,指定Hive 数据的列分隔符和行分隔符,Hive 就可以解析数据

  • 存储结构主要包括:数据库、文件、表、视图、索引

  • Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket

1) db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹

2) table:在hdfs中表现所属db目录下一个文件夹
3) external table:外部表, 与table类似,不过其数据存放位置可以在任意指定路径。普通表:删除表后,hdfs上的文件都删了;外部表删除后, hdfs上的文件没有删除, 只是把文件删除了
4) partition:在hdfs中表现为table目录下的子目录
5) bucket:桶, 在hdfs中表现为同一个表目录下根据hash散列之后的多个文件, 会根据不同的文件把数据放到不同的文件中

hive学习1(hive基本概念)的更多相关文章

  1. hive学习(二) hive操作

    hive   ddl 操作官方手册https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL hive  dml 操作官方手 ...

  2. hive学习(四) hive的函数

    1.内置运算符 1.1关系运算符 运算符 类型 说明 A = B 所有原始类型 如果A与B相等,返回TRUE,否则返回FALSE A == B 无 失败,因为无效的语法. SQL使用”=”,不使用”= ...

  3. hive学习(三) hive的分区

    1.Hive 分区partition 必须在表定义时指定对应的partition字段 a.单分区建表语句: create table day_table (id int, content string ...

  4. Hive学习笔记——Hive中的分桶

    对于每一个表(table)或者分区, Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分.Hive也是针对某一列进行桶的组织.Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记 ...

  5. Hive学习:Hive连接JOIN用例详解

    1 准备数据: 1.1 t_1 01 张三 02 李四 03 王五 04 马六 05 小七 06 二狗 1.2 t_2 01 11 03 33 04 44 06 66 07 77 08 88 1.3 ...

  6. hive学习

    大数据的仓库Hive学习  10期-崔晓光 2016-06-20  大数据   hadoop   10原文链接 我们接着之前学习的大数据来学习.之前说到了NoSql的HBase数据库以及Hadoop中 ...

  7. Hive学习路线图(转)

    Hadoophivehqlroadmap学习路线图   1 Comment Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig ...

  8. 【转】Hive学习路线图

    原文博客出自于:http://blog.fens.me/hadoop-hive-roadmap/ 感谢! Hive学习路线图 Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Ha ...

  9. Hive学习路线图--张丹老师

    前言 Hive是Hadoop家族中一款数据仓库产品,Hive最大的特点就是提供了类SQL的语法,封装了底层的MapReduce过程,让有SQL基础的业务人员,也可以直接利用Hadoop进行大数据的操作 ...

  10. Hive学习 系列博客

    原 Hive作业优化 原 Hive学习六:HIVE日志分析(用户画像) 原 Hive学习五--日志案例分析 原 Hive学习三 原 Hive学习二 原 Hive学习一 博客来源,https://blo ...

随机推荐

  1. Linux 的字符串截取很有用。有八种方法。

    假设有变量 var=http://www.aaa.com/123.htm 1. # 号截取,删除左边字符,保留右边字符. echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// ...

  2. VS2012如何显示行号

    Tools-Options-Text Editor-All Languages –General – Display

  3. RocketMq的安装使用

    RocketMq的安装使用 .一.预备环境 1.系统 Windows 2. 环境 JDK1.8.Maven.Git 1.下载 1.1地址:http://rocketmq.apache.org/rele ...

  4. echarts之series,markLine、markPoint

    一.标记线和标志点 markLine 标记线 标记线的添加,如最大值.最小值.平均值的标记线 symbol 标记的图形. data->type 特殊的标注类型,用于标注最大值最小值等. 可选: ...

  5. api xml database 设计一种数据库

    w 问题 0-新增和读取,可以忽略更新和删除: 1-被请求方的xml dom结构多层且不定,且未来可能增删某些键(dom节点),且键值长度最值可能无法确定: 3-请求过程可能出现异常exception ...

  6. spring cloud 微服务应用间通讯

    SpringCloud 应用间通信基于HTTP的Restful调用方式有两种,RestTemplate与Feign. 1.RestTemplate应用间通讯 通过 @LoadBalanced,可在re ...

  7. Ubuntu 16.04特性及使用基本方法

    十招让Ubuntu 16.04用起来更得心应手 Ubuntu 16.04 LTS的这十项新功能,每个Ubuntu用户必须要知道! Ubuntu 16.04 LTS安装好需要设置的15件事

  8. VCL控件组件大都应该重载TWinControl的虚函数WndProc来进行处理窗口消息的工作

    TWinControl的构造函数中会调用MakeObjectInstance并且传递MainWndProc作为窗口消息处理函数,而MainWndProc则会调用虚函数WndProc来处理窗口消息.留个 ...

  9. nginx配置文件解析工具

    最近花了一些时间自己实现解析nginx配置文件的功能,这里有个工具先记下以后用. https://github.com/nginxinc/crossplane

  10. 我的Android进阶之旅------>解决Bug:打开eclipse报错,发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。

    今天来打开Eclipse 报错了,错误信息如下: [2015-08-01 09:07:43 - Android SDK] Error when loading the SDK: Error: Erro ...