一、概述
1、hive简介
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,本质是将SQL转换为MapReduce程序。通常用于离线分析。
- 采用批处理的方式处理海量数据(本身不提供处理分析,将HiveQL–>mapreduce任务,进行处理分析);
而对于数仓存储的静态数据来说,批处理也是合理的处理方式; - Hive提供了一系列对数据进行ETL(提取、转换、加载)的工具.(也可使用其他工具如pig)
2、Hive组成
- 元数据存储(Metastore)
- 驱动(Driver)
- 查询编译器(Query Compiler)
- 执行引擎(Execution Engine)
- 服务器(HiveServer)
- 客户端组件
- 可扩展接口部分
Hive原数据:
元数据(数据的描述信息:表的名称,数据库的名称,权限,所有者,组成字段等等), 默认情况下存储在hive内部自带的derby数据库中。
问题:derby数据库,在同一时刻,只允许一个线程操作
建议:使用MySQL对元数据进行存储
用户接口:
CLI:启动的时候,会同时启动一个Hive副本
Client:Hive的客户端,用户连接至Hive Server
WUI:通过浏览器访问Hive
语句转换:
解析器:生成抽象语法树
语法分析器:验证查询语法
逻辑计划生成器(包括优化器):生成操作符树
查询计划生成器:转换为map-reduce任务
数据存储:
Hive数据以文件形式存储在HDFS的指定目录下
Hive语句生成查询计划,由MapReduce调用执行
运行顺序
1. 用户使用命令行工具或者JDBC发送HQL
2. 使用Driver驱动结合MetaStore元数据,将指定翻译成MapReduce
3. 首先使用SQL Parser解释器进行HQL的翻译
4. 使用编译器对解释结果进行编译
5. 使用优化器对编译结果进行优化
6. 最后将优化的结果使用执行器进行执行操作(本质上就是在Hadoop集群上使用MapReduce操作)
7. 将处理结果返回给客户端用户
3、hive优缺点
优点:
(1)简单容易上手:提供了类SQL查询语言HQL
(2)可扩展:为超大数据集设计了计算/扩展能力(MR作为计算引擎,HDFS作为存储系统)
一般情况下不需要重启服务Hive可以自由的扩展集群的规模。
(3)提供统一的元数据管理
(4)延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数
(5)容错:良好的容错性,节点出现问题SQL仍可完成执行
缺点:
(1)hive的HQL表达能力有限
1)迭代式算法无法表达,比如pagerank
2)数据挖掘方面,比如kmeans
(2)hive的效率比较低
1)hive自动生成的mapreduce作业,通常情况下不够智能化
2)hive调优比较困难,粒度较粗
3)hive可控性差
二、部署安装
Hive的安装部署—三种模式
https://blog.csdn.net/weixin_57551874/article/details/116243660
