Hive基础基础基础的知识——入门级

185 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

什么是HIVE

 Apache Hive 是一款建立在Hadoop 上的开源==数据仓库系统== 将储存在Hadoop中的文件==结构化、半结构化的数据文件映射为一张数据库表==,基于此提供了类似于SQL的查询模型, 称为Hive查询语言(HQL), 用于访问和分析存储在Hadoop文件中的大型数据集

Hive的核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop集群执行 Hive是Facebook实现并开源的

依靠Hadoop,因此,擅长存储分析海量数据集


Hive 和 Hadoop 关系

在这里插入图片描述

Apache Hive作为一款大数据时代的数据仓库软件,具备存储数据和分析数据的能力。 但是,Hive并不是自己实现了上述两种能力,而是借助Hadoop。

Hive利用HDFS存储数据,利用MapReduce查询分析数据。

Hive的最大魅力在于:让用户专注于HQL的编写,Hive帮助转换为mapreduce程序完成数据的分析 学习成本低,易上手


理解

  • Hive 能将数据文件映射成为一张表,这个映射是指 文件和表之间的对应关系

  • Hive 本身负责将 SQL 语法解析编译味MapReduce

架构

在这里插入图片描述

  • 用户接口 包括CLI、JDBC/ODBC、WebGUI。 其中,CLl(command line interface)为shell命令行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。

  • 元数据(Metastore通常是存储在关系数据库如mysql/derby中。 Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。 默认存储在自带的Derby中,推荐用Mysql 存

  • Driver驱动程序 包括语法解析器、计划编译器、优化器、执行器 完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。 生成的查询计划存储在HDFS中,并在随后有执行引擎调用执行。

  • 执行引擎 Hive本身并不直接处理数据文件。 而是通过执行引擎处理。当下Hive支持MapReduce、Tez、Spark3种执行引擎。

数据及部署方式

元数据

  • Metastore即元数据服务 作用是管理metadata元数据,对外暴露服务地址,让各种客户端通过连接metastore服务,由metastore再去连接MySQL数据库来存取元数据。 有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore服务即可。某种程度上也保证了Hive元数据的安全。

在这里插入图片描述

部署方式

有三种:内嵌模式、本地模式、远程模式。

  • 区分3种配置方式的关键是弄清楚两个问题: Metastore 服务是否需要单独配置、单独启动? Metadata 是存储在内置的derby中,还是第三方RDBMS,比如MySQL

image-20220105173942101

推荐使用远程模式

在生产环境中,建议用远程模式来配置Hive Metastore。

在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive。

由此还可以完全屏蔽数据库层,因此这也带来了更好的可管理性/安全性。

image-20220105174233287

Hive 提供了两个客户端,如上图所示,hive客户端和beeline客户端

官方推荐使用新客户端beeline,因此需要启动两个服务

Metastore服务和HiveServer2服务,两者有依赖关系,必须先启动前者

ps:文章搬运自笔者另一个平台的文章~