Hive 简介

Hive 概念

  • Hive 由 Facebook 实现并开源
  • 是基于 Hadoop 的一个数据仓库工具
  • 可以将结构化的数据映射为一张数据库表
  • 并提供 HQL(Hive SQL)查询功能
  • 底层数据是存储在 HDFS 上
  • Hive 的本质是将 SQL 语句转换为 MapReduce/Spark 任务运行
  • 使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算

Hive 依赖于 HDFS 存储数据,Hive 将 HQL 转换成 MapReduce/Spark 执行,所以说 Hive 是基于 Hadoop 的一个数据仓库工具(离线),实质就是一款基于 HDFS 的 MapReduce/Spark 计算框架,对存储在 HDFS 中的数据进行分析和管理

Hive 特性

  • 支持通过 SQL 轻松访问数据的工具,从而支持数据仓库任务,如提取/转换/加载(ETL)、报告和数据分析。
  • 支持多种数据格式(Parquet、OCR等)
  • 访问直接存储在 HDFS 或其他数据存储系统( 如 Apache HBase )中的文件
  • 通过 Apache Tez、Apache Spark 或 MapReduce 执行查询

Hive 架构

  • 元数据信息(MetaStore):HIVE 将用户定义的库、表结构等元数据信息存储在本地 derby 数据库或远程 MySQL 数据库中
  • SQL 解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误
  1. 编译器(Physical Plan):将 AST 编译生成逻辑执行计划

  2. 优化器(Query Optimizer):对逻辑执行计划进行优化

  • 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说,就是 MapReduce 或 Spark

HIVE 用途

直接使用 MapReduce 程序所面临的问题:

  1、人员学习成本太高

  2、项目周期要求太短

  3、MapReduce实现复杂查询逻辑开发难度太大

为什么要使用 Hive:

  1、更友好的接口:操作接口采用类 SQL 的语法,提供快速开发的能力

  2、更低的学习成本:避免了写 MapReduce,减少开发人员的学习成本

  3、更好的扩展性:可自由扩展集群规模而无需重启服务,还支持用户自定义函数

解放大数据分析程序员,不用自己写大量的 mr 程序来分析数据,只需要写 sql 脚本即可构建大数据体系下的数据仓库

Hive 特点

优点

  1、可扩展性:Hive 可以自由的扩展集群的规模,一般情况下不需要重启服务

  2、延展性:Hive 支持自定义函数,用户可以根据自己的需求来实现自己的函数

  3、容错性:可以保障即使有节点出现问题,SQL 语句仍可完成执行

缺点

  1、Hive 不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结果导入到文件中

  2、Hive 的查询延时很严重,因为 MapReduce Job 的启动过程消耗很长时间,所以不能用在交互查询系统中。

  3、Hive 不支持事务(因为没有增删改,所以主要用来做 OLAP(联机分析处理),而不是 OLTP(联机事务处理),这就是数据处理的两大级别)。

总结

Hive 具有 SQL 数据库的外表,但应用场景完全不同,Hive 只适合用来做海量离线数据统计分析,也就是数据仓库

posted @ 2021-12-14 09:49  追こするれい的人  阅读(407)  评论(0编辑  收藏  举报