标签:延迟 一个 计划 操作 访问hdfs 大量 关系 最优 sql解析
1.Hive简述
1.1 Hive是什么
Hive是数据仓库.它是构建在Hadoop之上的,通过解析QL(Hive SQL),转换成MR任务(Tez,Spark......)去提交执行.
1.2 Hive的优缺点
优点:
可以直接访问HDFS,或者其它的标准分布式文件系统(s3,oss等),并将这些分布式文件数据组织成表的形式
传统的MR任务编写,非常复杂,需要很高的学习成本.Hive的出现,可以将MR的任务编写转换成类SQL的形式,降低了学习和使用成本.
Hadoop良好的容灾能力和可扩展能力,几乎不受限制的数据处理量.因为它实际存储使用的HDFS,实际计算使用的MR
提供统一的元数据管理.
缺点:
执行的效率一般.因为它是转换为MR提交执行,受执行计划生产的影响,它最后执行的不一定是最优的解决方案.
计算的及时性差.还是因为转换为MR提交执行,受MR执行效率影响(申请资源,走MR执行流程等等),Hive的计算,就算是小数据量,计算时间也是偏长的.
相对于关系型数据库的SQL而言,Hive的类SQL表达能力一般
不支持行级别的数据更新
所以Hive不擅长使用在对计算及时性要求非常高的地方(实时计算),并且也不擅长使用在小数据量上,因为它哪怕就计算几条数据,也要耗费大量的资源(必然SQL解析,生成MR,提交到YARN,申请资源,MR执行等等流程)
它比较擅长于用在能接受较长的延迟性,大数据量批处理作业.比如离线日志分析等,或者是不执行任何MR操作的查询使用,彻底转为分布式文件系统的一个查询媒介
2.Hive的架构
2.1 元数据
Hive是整体运行在Hadoop上,实际处理的是存在于分布式文件系统(HDFS)上的数据.对Hive而言,除了存储在HDFS上数据本身以为,还存有一份数据的元数据.
元数据是计算节点执行MR任务时标识如何使用HDFS上的文件数据的东西.
(注意下元数据库是Hive最大的弱点,因为Hive本身的容灾能力非常强(Hadoop),但是元数据如果不能使用,Hive依然不能正常运行的,所以实际生产中,Hive的元数据库务必做好高可用)
2.2 Hive的运行过程
首先Hive收到一份SQL,会解析这份SQL成一个抽象语法树,生成多个逻辑执行计划并优化,再在其中比较最终选择一份生成物理执行计划(MR),然后提交到YARN上,然后走完MR On YARN的流程,获得执行结果再返回
2.3 一些Hive上
ORC
Stinger
3.Hive的存储
3.1 元数据存储
Hive的元数据是存储在关系型数据中的,默认是Derby(一般不用,本地化不适用与分布式场景),但一般使用的MySQL.
3.2 数据的存储
标签:延迟 一个 计划 操作 访问hdfs 大量 关系 最优 sql解析
原文地址:https://www.cnblogs.com/NightPxy/p/9127633.html