Hive基础知识
一、产生背景
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基础知识的更多相关文章
- 《Programming Hive》读书笔记(两)Hive基础知识
<Programming Hive>读书笔记(两)Hive基础知识 :第一遍读是浏览.建立知识索引,由于有些知识不一定能用到,知道就好.感兴趣的部分能够多研究. 以后用的时候再具体看.并结 ...
- Hive基础知识梳理
Hive简介 Hive是什么 Hive是构建在Hadoop之上的数据仓库平台. Hive是一个SQL解析引擎,将SQL转译成MapReduce程序并在Hadoop上运行. Hive是HDFS的一个文件 ...
- (cdh)hive 基础知识 名词详解及架构
过程 启动 hive 之后出现的 CLI 是查询任务的入口,CLI 提交任务给 Driver Driver 接收到任务后调用 Compiler,Executor,Optimizer 将 SQL 语句转 ...
- hive基础知识五
Hive 主流文件存储格式对比 1.存储文件的压缩比测试 1.1 测试数据 https://github.com/liufengji/Compression_Format_Data M 1.2 T ...
- hive基础知识四
1. hive表的数据压缩 1.1 数据的压缩说明 压缩模式评价 可使用以下三种标准对压缩方式进行评价 1.压缩比:压缩比越高,压缩后文件越小,所以压缩比越高越好 2.压缩时间:越快越好 3.已经压缩 ...
- hive基础知识三
1. 基本查询 注意 SQL 语言大小写不敏感 SQL 可以写在一行或者多行 关键字不能被缩写,也不能分行 各子句一般要分行写 使用缩进提高语句的可读性 1.1 全表和特定列查询 全表查询 selec ...
- hive基础知识二
1. Hive的分区表 1.1 hive的分区表的概念 在文件系统上建立文件夹,把表的数据放在不同文件夹下面,加快查询速度. 1.2 hive分区表的构建 创建一个分区字段的分区表 hive> ...
- hive基础知识一
1. Hive是什么 1.1 hive的概念 Hive:由Facebook开源,用于解决海量(结构化日志)的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表 ...
- hive基础知识or基本操作命令
MySQL的密码是:123456 1.hive创建标准表(以后均可以按照这样创建): create [external] table [if not exists] records (year STR ...
随机推荐
- LindDotNetCore~Scheduling任务调度模块的介绍
回到目录 任务调度组件 位于Scheduling目录 基类JobBase,所有JOB都派生自它,重写Cron属性可以修改调度周期 支持单次JOB,即执行完成后马上停止 支持对外API接口,以便获取和修 ...
- 前端笔记之服务器&Ajax(上)服务器&PHP&数据交互&HTTP
一.服务器 1.1 什么是服务器,做什么的? 服务器,就是放在机房中的电脑,和我们的电脑的区别在与服务器有固定的IP,服务器的安全性和稳定性相当的高;性能一般就可以了,但是CPU的性能要比普通的客户机 ...
- [开源]Entity Framework 6 Repository 一种实现方式
在使用Entity Framework这种ORM框架得时候,一般结合Repository仓储形式来处理业务逻辑:虽然这种模式带来很多好处,但是也会引发一些争议,在此抛开不谈,小弟结合项目经验来实现一下 ...
- 10-Flink集群的高可用(搭建篇补充)
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- 【我们一起写框架】MVVM的WPF框架(四)—DataGrid
前言 这个框架写到这里,应该有很多同学发现,框架很多地方的细节,其实是违背了MVVM的设计逻辑的. 没错,它的确是违背了. 但为什么明知道违背设计逻辑,还要这样编写框架呢? 那是因为,我们编写的是框架 ...
- fuzzing学习
1.简介 1.1 fuzzing 模糊测试(fuzzing)是一种通过向程序提供非预期的输入并监控输出中的异常来发现软件中的故障的方法. 用于模糊测试的模糊测试器(fuzzer)可以按照以下3种方式进 ...
- WebForm+一般处理程序+Ajax聊天
#### 很容易理解 插入数据 到数据库 在使用 setInterval() 读取数据 显示在 页面中 好了 不废话 直接上代码 不会的 可以加我 微信 Jth11163## 效果图片 ![在这里插入 ...
- 杭电ACM2020--绝对值排序
输入n(n<=100)个整数,按照绝对值从大到小排序后输出.题目保证对于每一个测试实例,所有的数的绝对值都不相等. Input 输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整 ...
- 怎么从Linux服务器上下载超过4G的文件?
使用sz命令下载文件时,超过4G下载不了,如何下载呢? 本文介绍的方法是先对该文件进行拆分,拆分成多个小于4G的文件,然后分别下载,下载到本地后再进行合并或直接解压,具体操作如下: 1.分拆为多个文件 ...
- C++系列总结——继承
前言 前面讲了封装,但封装只是隐藏了类内部实现.如果使用多态隐藏类本身的话,只有封装是不够的,还需要继承. 继承 通过封装.我们把一些相关的函数和变量包裹在了一起,这些函数和变量就叫做类的成员函数和成 ...