一、产生背景

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. Spring Cloud微服务系列文,Hystrix与Eureka的整合

    和Ribbon等组件一样,在项目中,Hystrix一般不会单独出现,而是会和Eureka等组件配套出现.在Hystrix和Eureka整合后的框架里,一般会用到Hystrix的断路器以及合并请求等特性 ...

  2. Spring Boot 中的静态资源到底要放在哪里?

    当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:"松哥,我的HTML页面好像没有样式?& ...

  3. LogUtil【实现自由的控制日志的打印的封装类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要用于控制项目开发和上线阶段日志的打印. 效果图 暂不需要. 代码分析 在LogUtil类中声明代表不同日志级别的常量值(VERB ...

  4. django插入数据库错误:mysql的1267错误

    错误信息: django.db.utils.OperationalError: (1267, "Illegal mix of collations (latin1_swedish_ci,IM ...

  5. Python:说说字典和散列表,散列冲突的解决原理

    散列表 Python 用散列表来实现 dict.散列表其实是一个稀疏数组(总是有空白元素的数组称为稀疏数组).在一般书中,散列表里的单元通常叫做表元(bucket).在 dict 的散列表当中,每个键 ...

  6. 【技术解析】如何用Docker实现SequoiaDB集群的快速部署

    1. 背景 以Docker和Rocket为代表的容器技术现在正变得越来越流行,它改变着公司和用户创建.发布.运行分布式应用的方式,在未来5年将给云计算行业带来它应有的价值.它的诱人之处在于: 1)资源 ...

  7. k8s部署使用Dashboard(十)--技术流ken

    安装Dashboard 前面博客Kubernetes 所有的操作我们都是通过命令行工具 kubectl 完成的.为了提供更丰富的用户体验,Kubernetes 还开发了一个基于 Web 的 Dashb ...

  8. SpringBoot系列——Redis

    前言 Redis是一个缓存.消息代理和功能丰富的键值存储.StringBoot提供了基本的自动配置.本文记录一下springboot与redis的简单整合实例 官方文档:https://docs.sp ...

  9. go并发调度原理学习

    aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQAAkACQAAD/4QB0RXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAA

  10. InnoSetup 以命令行自动编译打包

    本章介绍,在新建Innosetup的编译脚本iss文件后,在不运行Innosetup软件的基础上,以bat自动编译运行打包. 一.添加Innosetup软件包 下载InnoSetup软件包并解压到bu ...