HIVE 总结 一 概述
-
基本概念
由Facebook开源用于解决海量结构化日志的数据统计工具
基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张表,并提供类SQL的查询功能
-
本质:是调用hadoop中yarn中container容器中的计算程序(引擎)
Hive 处理的数据存储在HDFS
Hive 分析数据底层实现是MapReduce
执行程序运行在yarn上
-
优点
SQL语法,简单易上手
替换MapReduce编写,降低开发和学习成本
基于hadoop,支持海量数据的分析和计算
支持自定义函数
-
缺点
Hive 的Hql表达能力有限,能自动生成MapReduce作业,通常情况下不够智能化
数据挖掘方面不擅长,由于MapReduce数据处理流程限制,效率更高的算法无法实现
Hive效率比较低
Hive不支持实时查询和行级别的更新操作(update,delete不支持)
-
Hive架构原理
解释:
用户接口:client
cli客户端,JDBC或者hive命令直接连接hive的客户端
元数据:metastore
包括表明,表所属的数据库,默认是default,表拥有者,列字段名
表类型,表目录等
默认存储在自带的derby数据库中,推荐使用MySQL存储metastory
Hadoop:
使用HDFS进行存储,使用MapReduce进行计算
驱动器:driver
解析器:
将SQL语句进行转换,检查,分析,检查表,字段,函数,等资源是否存在,语法,语义是否有误
编译器:
生成SQL逻辑执行计划
优化器:
对逻辑执行计划进行优化(自带的)
执行器:
把逻辑执行计划转换为可运行的物理计划
对于Hive来说就是MapReduce/tez/spark
-
运行机制
Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口\
-
Hive与数据库比较
Hive不是数据库!!!
Hive 和数据库除了拥有类似的查询语言,再无类似之处
数据库可以用在 Online 的应用中,但是Hive 是为数据仓库而设计的
-
数据更新
数据仓库读多写少
Hive 不建议对数据进行改,写,所有的数据都在加载的时候确定好
-
延迟
Hive没有索引,查询需要扫描整张表,所以查询速度慢
Hive执行过程中实际运行的MapReduce程序 所以延迟较高
-
数据规模
Hive 支持大规模的数据
数据库对于大规模的数据支持比较困难