一、产生背景

1.MapReudce编程繁琐,需要编写大量的代码

2.HDFS中存放的都是文件,在HDFS中没有Scheme的概念,无法用SQL进行快速的查询。

二、Hive的概念

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。它使用一种使用类似于SQL的查询语句直接作用在分布式存储文件系统之上的数据仓库工具,用于解决海量结构化的日志数据统计问题。

Hive的数据存储在HDFS中,Hive的底层的计算是通过MR、Spark(Hive On Spark)Tez来实现的。HQL语句通过Hive引擎被转化成map作业并提交到集群去运行,因此Hive的查询具有高延时性。

特别指出,Hive和SQL语言一样支持删查增改,但对于分布式文件系统中的大规模数据来说,Hive主要用于查询。那么Hive和关系型数据库有什么关联呢?没有任何关联,只是HQL和SQL相似而已。

Hive和关系型数据库比较:

  • Hive侧重于分析,而不是实时在线交易
  • Hive也支持事务,但是用的非常少
  • Hive不能随意地insert和update
  • Hive可以利用MR、Spark、Tez进行分布式处理,而传统关系型数据库不可以
  • Hive可以拓展到上百个服务器,而关系型数据库最多只能扩展到几十个服务器

三、Hive的架构

1.用户接口

命令行Cli接口、Web接口(WUI)、远程服务接口(Client)

2.元数据(Meta)存储

Hive的元数据可以存放在Derby、MySQL、Oracle、postgres等关系型数据库库中,在实际开发中通常使用MySQL。Derby是一种单Session数据库,不支持两台机器同时对一个数据仓库进行访问,不适用于生产环境。

Hive的元数据存放在关系型数据库中,如MySQL中,下图就是存储在Hive安装目录的与元数据相关的sql文件:

Meta ==> HA Database : MySQL主备 vip 。Hive、Spark SQL、impala等SQL on Hadoop使用同一套元数据。

为什么需要元数据?因为HDFS里的数据是以文件的形式存在的,无法使用SQL进行快速查询,而元数据的作用就是给HDFS中的文件作用上Scheme信息。

三、外部表和内部表的区别

内部表:存储目录默认是/user/hive/warehouse,其存储目录可以通过修改hive-site.xml文件的hive.metastore.dir参数进行配置。

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

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

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

  2. Hive基础知识梳理

    Hive简介 Hive是什么 Hive是构建在Hadoop之上的数据仓库平台. Hive是一个SQL解析引擎,将SQL转译成MapReduce程序并在Hadoop上运行. Hive是HDFS的一个文件 ...

  3. (cdh)hive 基础知识 名词详解及架构

    过程 启动 hive 之后出现的 CLI 是查询任务的入口,CLI 提交任务给 Driver Driver 接收到任务后调用 Compiler,Executor,Optimizer 将 SQL 语句转 ...

  4. hive基础知识五

    Hive 主流文件存储格式对比 1.存储文件的压缩比测试 1.1 测试数据 https://github.com/liufengji/Compression_Format_Data ​ M 1.2 T ...

  5. hive基础知识四

    1. hive表的数据压缩 1.1 数据的压缩说明 压缩模式评价 可使用以下三种标准对压缩方式进行评价 1.压缩比:压缩比越高,压缩后文件越小,所以压缩比越高越好 2.压缩时间:越快越好 3.已经压缩 ...

  6. hive基础知识三

    1. 基本查询 注意 SQL 语言大小写不敏感 SQL 可以写在一行或者多行 关键字不能被缩写,也不能分行 各子句一般要分行写 使用缩进提高语句的可读性 1.1 全表和特定列查询 全表查询 selec ...

  7. hive基础知识二

    1. Hive的分区表 1.1 hive的分区表的概念 在文件系统上建立文件夹,把表的数据放在不同文件夹下面,加快查询速度. 1.2 hive分区表的构建 创建一个分区字段的分区表 hive> ...

  8. hive基础知识一

    1. Hive是什么 1.1 hive的概念 Hive:由Facebook开源,用于解决海量(结构化日志)的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表 ...

  9. hive基础知识or基本操作命令

    MySQL的密码是:123456 1.hive创建标准表(以后均可以按照这样创建): create [external] table [if not exists] records (year STR ...

随机推荐

  1. 【activity任务栈】浅析

    背景知识 Activity四种启动模式 标准模式 standard 栈顶复用模式 singleTop 栈内复用模式 singleTask 单例模式 singleInstance 任务栈 Activit ...

  2. springboot~JPA把ORM统一起来

    JPA介绍 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主要是为了简 ...

  3. Maven-常用插件

    罗列笔者认为比较有用的一些maven打包插件,方便后续查阅 spring-boot-maven-plugin springboot自带的maven插件,可用于简单的JAR/WAR方式打包,官方地址为h ...

  4. Hexo优化 | 创建sitemap站点地图并向Google提交

    前言 站点地图是一种文件,您可以通过该文件列出您网站上的网页,从而将您网站内容的组织架构告知Google和其他搜索引擎.Sitemap 可方便管理员通知搜索引擎他们网站上有哪些可供抓取的网页.搜索引擎 ...

  5. Ambiguous HTTP method Actions require an explicit HttpMethod binding for Swagger 2.0

    异常内容 NotSupportedException: Ambiguous HTTP method for action . Actions require an explicit HttpMetho ...

  6. 斑马打印机的安装调试,生成PDF

    1.  我使用的斑马打印机GK888T.有问题打客服,耐心等待.售后电话4006456456得到了解决. 2.  我遇到的问题是打印一张之后指示灯变为红灯,时好时坏.解决方案,长按指示键,待指示灯连续 ...

  7. Java SimpleDateFormat处理日期与字符串的转换

    1.为什么要使用SimpleDateFormat? 在Java中,如果我们想获取当前时间,一般会使用Date类的无参构造函数,如下所示,我们获取到当前时间并输出: import java.util.D ...

  8. spring通知执行的顺序

    点击下载本示例相关代码 关于spring aop的具体使用,暂时不在这里讲解,后面会特定来讲解,本次主要探讨spring中通知执行的顺序. spring中通知分为以下几种: before:前置通知,在 ...

  9. Hive动态分区

    1.开启支持动态分区 set hive.exec.dynamic.partition=true; --默认为false set hive.exec.dynamic.partition.mode=nos ...

  10. SQLServer 日期函数及日期转换数据类型

    一.统计语句 1.--统计当前[>当天00点以后的数据] SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT( ...