Hive记录-Hive介绍(转载)
1.Hive是什么?
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能,将类 SQL 语句转换为 MapReduce 任务执行。
2.Hive数据结构-HDFS-Table-Partiton-Bucket
- Table:每个表存储在HDFS上的一个目录下
- Partition(可选):每个Partition存储再Table的子目录下
- Bucket(可选):某个Partition根据某个列的hash值散列到不同的Bucket中,每个Bucket是一个文件
3.Hive架构
由上图可知,hadoop 和 mapreduce 是 hive 架构的根基。
MetaStore:存储和管理Hive的元数据,使用关系数据库来保存元数据信息。
解释器和编译器:将SQL语句生成语法树,然后再生成DAG,成为逻辑计划
优化器:只提供了基于规则的优化
列过滤:只查询投影列
行过滤:子查询where语句包含的partition
谓词下推:减少后面的数据量
Join方式
Map join:一大一小的表,将小表广播(指定后在执行前统计,没有数据直方图)
shuffle join:按照hash函数,将两张表的数据发送给join
sort merge join:排序,按照顺序切割数据,相同的范围发送给相同的节点(运行前在后台创建立两张排序表,或者建表的时候指定)
执行器:执行器将DAG转换为MR任务
4.Hive特点
·Hive 最大的特点是 Hive 通过类 SQL 来分析大数据,而避免了写 MapReduce 程序来分析数据,这样使得分析数据更容易
·Hive 是将数据映射成数据库和一张张的表,库和表的元数据信息一般存在关系型数据库上(比如 MySQL)
·Hive 本身并不提供数据的存储功能,数据一般都是存储在 HDFS 上的(对数据完整性、格式要求并不严格)
·Hive 很容易扩展自己的存储能力和计算能力,这个是继承自 hadoop 的(适用于大规模的并行计算)
·Hive 是专为 OLAP 设计,不支持事务
5.Hive流程
执行流程详细解析
Step 1:UI(user interface) 调用 executeQuery 接口,发送 HQL 查询语句给 Driver
Step 2:Driver 为查询语句创建会话句柄,并将查询语句发送给 Compiler, 等待其进行语句解析并生成执行计划
Step 3 and 4:Compiler 从 metastore 获取相关的元数据
Step 5:元数据用于对查询树中的表达式进行类型检查,以及基于查询谓词调整分区,生成计划
Step 6 (6.1,6.2,6.3):由 Compiler 生成的执行计划是阶段性的 DAG,每个阶段都可能会涉及到 Map/Reduce job、元数据的操作、HDFS 文件的操作,Execution Engine 将各个阶段的 DAG 提交给对应的组件执行。
Step 7, 8 and 9:在每个任务(mapper / reducer)中,查询结果会以临时文件的方式存储在 HDFS 中。保存查询结果的临时文件由 Execution Engine 直接从 HDFS 读取,作为从 Driver Fetch API 的返回内容。
容错(依赖于 Hadoop 的容错能力)
Hive 的执行计划在 MapReduce 框架上以作业的方式执行,每个作业的中间结果文件写到本地磁盘,从而达到作业的容错性。
最终输出文件写到 HDFS 文件系统,利用 HDFS 的多副本机制来保证数据的容错性。
6.Hive缺陷
MapReduce:
Map任务结束后,要写磁盘
一个MapReduce任务结束后,需要将中间结果持久化到HDFS
DAG生成MapReduce任务时,会产生无谓的Map任务
Hadoop在启动MapReduce任务要消耗5-10秒,需要多次启动MapReduce任务
7.SparkSQL
SparkSQL在架构上和Hive类似,只是底层把执行引擎MapReduce替换为执行引擎Spark
Hive记录-Hive介绍(转载)的更多相关文章
- Hive记录-Hive on Spark环境部署
1.hive执行引擎 Hive默认使用MapReduce作为执行引擎,即Hive on mr.实际上,Hive还可以使用Tez和Spark作为其执行引擎,分别为Hive on Tez和Hive on ...
- Hive记录-Hive常用命令操作
1.hive支持四种数据模型 • external table ---外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该 ...
- Hive记录-Hive调优
1.Join优化 a.map join b.reduce join 小表为驱动表,或直接将小表加载到内存,做map端join,它的关键字为/*+MAP JOIN(t1)*/ 如果想自动开启map端Jo ...
- Hive记录-hive权限控制
在使用Hive的元数据配置权限之前必须现在hive-site.xml中配置两个参数,配置参数如下: <property> <name>hive.security.authori ...
- Hive学习笔记【转载】
本文转载自:http://blog.csdn.net/haojun186/article/details/7977565 1. HIVE结构 Hive 是建立在 Hadoop 上的数据仓库基础构架. ...
- hive中简单介绍分区表
所介绍内容基本上是翻译官方文档,比较肤浅,如有错误,请指正! hive中创建分区表没有什么复杂的分区类型(范围分区.列表分区.hash分区.混合分区等).分区列也不是表中的一个实际的字段,而是一个或者 ...
- hadoop记录-hive常见设置
分区表 set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict;create tabl ...
- Hive记录-部署Hive环境
1.配置 hive1.2.0(前提要配置hadoop2.7.2,前面文档有介绍) #官网下载二进制包,解压到/usr/app 下,配置/etc/profile: export HIVE_HOME=/u ...
- Hive记录-配置远程连接(JAVA/beeline)
1.修改配置hive-site.xml hadoop core-site.xml限制---参考Hive记录-部署Hive环境 2.启动hadoop #sh /usr/app/hadoop/sbi ...
随机推荐
- Win2016以及win10 IIS10 下安装IEwebcontrol的方法
1. 公司产品需要安装IE webcontrol控件 但是在win2016以及win10 上面安装时 因为IIS 已经升级到了IIS10 安装时会提示: 兼容解决的方法比较简单,修改注册表即可 HKE ...
- K3CLOUD安装教程
1.安装SQLSERVER2008 2.安装K3CLOUD安装包,此处各种安装iis,tomcat,ftp等环境,有过it经验的应该都能自己搞定,不详细赘述 3.进入管理中心,进行设置,默认为127. ...
- SourceTree 如何下载git 管理的代码-如何创建分支,删除分支,提交代码,回退代码
把用户给的链接拿过来,然后输入浏览器,然后在左侧会有Actions 中有个Clone;点击Clone之后,有个 Clone in Source Tree 点击,打开你的本地Source Tree,然后 ...
- 【Mysql】—— MySQL存储引擎中的MyISAM和InnoDB区别详解
在使用MySQL的过程中对MyISAM和InnoDB这两个概念存在了些疑问,到底两者引擎有何分别一直是存在我心中的疑问.为了解开这个谜题,搜寻了网络,找到了如下信息: MyISAM是MySQL的默认数 ...
- jdk1.8 HashMap的扩容resize()方法详解
/** * Initializes or doubles table size. If null, allocates in * accord with initial capacity target ...
- PHP生成二维码并上传到七牛云
参考资料 qr-code生成二维码 七牛云上传图片 实现步骤 //拿到插入后的id $res = DB::table('book_book')->insertGetId($data); i ...
- C# SFTP
最近需要通过SFTP来获取文件. 下面是我整理的相关信息. 以下只是大致代码,大家看看就行了. 我的是window service.每天会去下载文件. 1 下载 Renci.SshNet 通过 nu ...
- day14 装饰器模拟验证附加功能
user_list=[ {'}, {'}, {'}, {'}, ] current_dic={'username':None,'login':False} def auth_func(func): d ...
- 【 Gym - 101138J 】Valentina and the Gift Tree(树链剖分)
BUPT2017 wintertraining(15) 4 D Gym - 101138J 数据 题意 n个节点的一棵树,每个节点的权值为g,q个询问,树上的节点U-V,求U到V的路径的最大子段和. ...
- bzoj3209 花神的数论题——数位dp
题目大意: 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积. 要对1000 ...