一、概述

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