携手创作,共同成长!这是我参与「掘金日新计划 · 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
推荐使用远程模式
在生产环境中,建议用远程模式来配置Hive Metastore。
在这种情况下,其他依赖hive的软件都可以通过Metastore访问hive。
由此还可以完全屏蔽数据库层,因此这也带来了更好的可管理性/安全性。
Hive 提供了两个客户端,如上图所示,hive客户端和beeline客户端
官方推荐使用新客户端beeline,因此需要启动两个服务
Metastore服务和HiveServer2服务,两者有依赖关系,必须先启动前者
ps:文章搬运自笔者另一个平台的文章~