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 ...
随机推荐
- ACM:读入优化
两个简单的读入优化 int getin(){ ;; while(!isdigit(tmp=getchar()) && tmp!='-'); ,tmp=getchar(); )+(ans ...
- EF Core利用Scaffold从根据数据库生成代码
在EF6 之前的时代,如果需要从数据库中生成代码,是可以直接在界面上操作的,而到了EF Core的时代,操作方式又有更简便的方式了,我们只需要记住以下这条指令. Scaffold-DbContext ...
- centos7 python3 pip
pip of python3 installed is play well with Django and spider. #安装pip可以很好的使用django和爬虫 wget https:// ...
- Python编程从入门到实践笔记——字典
Python编程从入门到实践笔记——字典 #coding=utf-8 #字典--放在{}中的键值对:跟json很像 #键和值之间用:分隔:键值对之间用,分隔 alien_0 = {'color':'g ...
- svn 卡死住,关闭后,用CleanUp报错解决
一.问题描述: 经常用SVN的人都知道,有时候更新文件更新着更新一般,突然卡顿住,死在那边动都不动出现提示:svn cleanup failed–previous operation has not ...
- 三位数流水码的生成(000·····009··00A····00Z····ZZZ)
//规格代码的生成 private String getCode (String code) { char[] chars=code.toCharArray(); if (chars[2]==57){ ...
- 在虚拟机中搭建qduoj(一)——准备工作
为缩减篇幅,已略去ubuntu镜像下载.虚拟机(VirtualBox.VMware)安装等操作,若有疑问请搜索相关教程. 1.虚拟机系统安装 本教程使用Ubuntu16.04 server版本(des ...
- 给萌新的Flexbox简易入门教程
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.sitepoint.com/flexbox-css-flexible-bo ...
- Android为TV端助力之WebView开发踩坑一
在Android清单配置文件里面 自定义application时,在4.4系统上面不能加上一个属性,见下图 否则界面将不会显示任何数据,在更高或者更低的系统上面没有测试!
- selenium-自动化用例(十一)
思路 将页面操作与用例case分别封装,编写case时就可以用同一个操作方法对应多个case 如下图: PageGUI:存放页面操作方法,每个页面写一个文件,每个文件中写同一个页面不同的操作,例如检索 ...