Hive概述

一、Hive介绍

Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

首先,我来说说什么是hive(What is Hive?),请看下图

Hive构建在Hadoop的HDFS和MapReduce之上,用于管理和查询结构化/非结构化数据的数据仓库

  • 使用HQL作为查询接口
  • 使用HDFS作为底层存储
  • 使用MapReduce作为执行层

Hive的应用架构

这里集群搭建Hive时用到了HA,这个是做大数据的常识,单点问题时刻铭记,最后用HAProxy来做代理

二、Hive体系结构

Hive 的结构可以分为以下几部分:

  • 用户接口:包括 CLI, Client, WUI
  • 元数据存储,通常是存储在关系数据库如 mysql, derby 中
  • 解释器、编译器、优化器、执行器
  • Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算

  1、 用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CLI,Cli 启动的时候,会同时启动一个 Hive 副本。Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive。

  2、 Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

  3、 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。

  Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。

三、Hive和普通DB的异同

Hive作为数据仓库和普通数据库的区别

 HiveRDBMS
查询语句HQLSQL
数据存储HDFSRaw Device or Local FS
索引1.0.0版本支持
执行延迟
处理数据规模大(或海量)
执行MapReduceExcutor

四、元数据

Hive 将元数据存储在 RDBMS 中,一般常用的有MYSQL和DERBY。由于DERBY只支持单客户端登录,所以一般采用MySql来存储元数据。

五、数据存储

首先,Hive 没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织 Hive 中的表,只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。

  其次,Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:Table,External Table,Partition,Bucket。

  1. Hive 中的 Table 和数据库中的 Table 在概念上是类似的,每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 app,它在 HDFS 中的路径为:/ warehouse /app,其中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的数据仓库的目录,所有的 Table 数据(不包括 External Table)都保存在这个目录中。
  2. Partition 对应于数据库中的 Partition 列的密集索引,但是 Hive 中 Partition 的组织方式和数据库中的很不相同。在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中。例如:xiaojun 表中包含 dt 和 city 两个 Partition,则对应于 dt = 20100801, ctry = US 的 HDFS 子目录为:/ warehouse /app/dt=20100801/ctry=US;对应于 dt = 20100801, ctry = CA 的 HDFS 子目录为;/ warehouse /app/dt=20100801/ctry=CA
  3. Buckets 对指定列计算 hash,根据 hash 值切分数据,目的是为了并行,每一个 Bucket 对应一个文件。将 user 列分散至 32 个 bucket,首先对 user 列的值计算 hash,对应 hash 值为 0 的 HDFS 目录为:/ warehouse /app/dt =20100801/ctry=US/part-00000;hash 值为 20 的 HDFS 目录为:/ warehouse /app/dt =20100801/ctry=US/part-00020
  4. External Table 指向已经在 HDFS 中存在的数据,可以创建 Partition。它和 Table 在元数据的组织上是相同的,而实际数据的存储则有较大的差异。
  • Table (内部表)的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。

  External Table 只有一个过程,加载数据和创建表同时完成(CREATE EXTERNAL TABLE ……LOCATION),实际数据是存储在 LOCATION 后面指定的 HDFS 路径中,并不会移动到数据仓库目录中。当删除一个 External Table 时,仅删除hive的元数据,不会删除hdfs上对应的文件。

六、Hive安装

《Hive安装》

七、Hive基本操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache Hive是一个基于Hadoop的数据仓库基础设施,它提供了一个类似于SQL的查询语言(HQL)来查询和分析大规模的数据集。Hive的体系结构主要包括用户接口、元数据存储和解释器、编译器、优化器、执行器等几个部分。用户接口包括CLI、Client和WUI,用于用户与Hive进行交互。元数据存储使用数据库(如MySQL、Derby)来存储Hive的元数据信息,包括表的结构、属性和数据所在目录等。解释器、编译器、优化器、执行器负责将HQL查询语句进行词法分析、语法分析、编译、优化和生成查询计划,查询计划存储在HDFS中,并由MapReduce调用执行。Hive的数据存储在HDFS中,大部分查询由MapReduce完成。\[1\] 需要注意的是,Hive并不会自动创建数据库,而是通过配置文件hive-site.xml来指定数据库的连接URL。在配置文件中,可以设置连接URL为MySQL的地址和端口,并指定是否在数据库不存在时创建数据库。\[2\] 总结来说,Apache Hive是一个基于Hadoop的数据仓库基础设施,它提供了SQL类似的查询语言,通过用户接口、元数据存储和解释器、编译器、优化器、执行器等组件来实现数据查询和分析。 #### 引用[.reference_title] - *1* *2* [Apache Hive详解](https://blog.csdn.net/wudidahuanggua/article/details/126928083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Apache Hive 概述](https://blog.csdn.net/weixin_53570636/article/details/126856108)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值