Hive知识点(二)--理论知识
1.概念
1.1Hive和Hadoop的关系
Hadoop:HDFS、MR、YRAN
Hive
处理的数据存储在HDFS
分析数据底层的实现MR
执行程序运行用YARN
相当于Hive将Hadoop进行了封装
1.2什么是Hive
1.Hive是有Facebook开源用于解决海量结构化日志的数据统计。
2.Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供SQL查询
1.3Hive的本质
1.使用HQL作为查询接口
2.使用MR计算
3.使用HDFS用于存储
Hive并不存在集群的概念,只是说配置不同,其中Hive底层的引擎是MR Tez Spark ,只是一个参数进行引擎的切换,SQL用法还是不变
1.4Hive应用场合
适合离线数据处理
Hive QL(HQL):和我们的RDBMS的SQL类似,
在做离线/批处理
在Hive上一个SQL的执行速度 PK MySQL上的一个SQL的执行速度 #后者的跑的速度开,而Hive是主要应用在离线处理方便
离线的作业都是定时调度/手工执行==》最后将结果写到某个Hive
2.Hive架构
其实就是一个MySQL到MR的过程,Client相当于写入MySQL,中间是处理过程,最后归结到MR中,下面是对Hive架构的详细说明
1.用户接口:Client
1>CLI(hive shell)
2>JDBC(java访问hive)
3>WEBUI(浏览器访问hive)
其中CLI和JDBC类似于写SQL语句的交互界面
以下的部分就是将HQL转化为MR,hive就是将结构化数据的文件转化为一张表
2.Meta store元数据存储
元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型、表的数据所在目录等
默认存储在自带的derby数据库中,推荐采用MySQL存储Metastore
3.Driver
包括:解析器、编译器、优化器、执行器
1>解析器(SQL Parser):将SQL字符串转化成抽象语法树AST。比如:表是否存在、字段是否存在等
2>优化器(Query Optimizer):对语句进行优化
3>Physical Plan:经逻辑执行计划转化成可以运行的物理计算
4>执行器(Execution):对物理计划进行执行
如:select substring(ip,0,4) ip_prex from stu;
举例说明
如:select substring(ip,0,4) ip_prex from stu;
首先解析查询stu这张表,在meta store中获取表在HDFS中的存放位置,表的结构等信息。
查看是否可以语句优化(对于相同的SQL语句,不同的写法, 执行的效率和性能是不同的)
转化成物理计划,查看是否有Reduce,有多少MR,以及吮吸
最后再根据物理计划一层层的执行MR任务。
MetoStore:所以选择Hadoop HA安装模式
一旦Meto挂掉,HDFS源数据的元数据就没有
Hive的元数据是存放在MySQL《==MetoStore
MetoStore是一个通用的组件:SparkSQL/Flik/Impala/Presto Hive中创建的表,在其他框架也是可以访问的
3.Hive PK RDMBS
相同点:
1.语句都是使用SQL
2.都支持事务 ,只是大数据有版本要求,但是大数据离线基本不会用到事务
3.insert(values)/update/delete 其中hive也可以用,但是这些都最好不用,会产生一些问题
不同点:
1.规模 RDMBS(20-30)
2.成本 MySQL成本高
3.数据体量 hadoop只要计算和存储硬件够,就可以