本文共 1377 字,大约阅读时间需要 4 分钟。
Hive本质是什么?
Hive是一款开源的分布式数据仓库 solution,它兼具数据仓库和查询引擎的功能。Hive通过将结构化数据文件映射为虚拟表格,支持类似SQL的查询语法,从而无需开发MapReduce程序即可完成数据分析任务。Hive与Spark SQL的结合是企业数据分析中的经典组合。
Hive的核心功能
Hive作为一个单机版本软件,主要负责以下工作:
将HQL(Hive Query Language)编译成Map-Reduce任务代码,可能生成多个Map-Reduce Job。 将编译后的Map-Reduce代码及相关资源打包成JAR文件,并发布到Hadoop集群中自动运行。 Hive的架构
Hive的架构包含以下主要组件:
- MetaStore:负责存储元数据,包括表的名称、列、分区属性等。默认使用Derby,但在生产环境下通常采用支持多用户的关系型数据库(如MySQL)作为MetaStore。
- HiveServer:提供Hive的服务接口,包括命令行界面(CLI)和Web用户界面(WUI)。
- HiveClient:用户连接到Hive Server的客户端程序。
Hive的运行机制
Hive的运行过程包括以下步骤:
词法分析和语法分析:ANTLR解析HQL查询。 查询优化:生成优化后的查询计划。 执行计划存储:将生成的查询计划存储在HDFS中。 Map-Reduce任务执行:通过Hadoop的Map-Reduce框架执行查询。 Hive的用户界面
Hive提供三种主要用户界面:
CLI(命令行界面):常用,启动时会同时启动Hive Server。 Client:用户连接到Hive Server,需指定服务器节点。 WUI(Web User Interface):通过浏览器访问,适合不便于使用命令行的用户。 Hive的元数据存储
Hive的元数据存储在关系型数据库中,包括:
- 表的名称和列信息。
- 表的分区和属性。
- 表的存储位置等。
- 是否为外部表等信息。
Hive的三种模式
Hive支持三种运行模式:
单用户模式:连接到内存数据库Derby,适用于Unit Test。 远程服务器模式:在服务器端启动MetaStore Server,客户端通过Thrift协议访问。 Hive的数据存储
Hive的数据存储在HDFS中,查询和计算主要由Map-Reduce完成。支持的查询包括select * from tbl等基础查询,不会生成Map-Reduce任务。
安装和配置
环境变量设置:
export HADOOP_HOME:配置Hadoop主目录。
配置文件修改:
vim hive-env.sh:设置Hadoop和Hive的环境变量。 vim hive.site.xml:指定Hive数据仓库的存储路径。
安装数据库:
表类型:
- 外部表:数据不属于Hive数据仓库,元数据指明数据存储位置。
- 内部表:数据属于Hive,存储在HDFS中,删除时会移除数据和元数据。
总结
Hive是一款灵活高效的数据分析工具,支持通过类似SQL的方式执行Map-Reduce任务,适合对数据分析有需求的企业。通过与Hadoop等工具的结合,Hive成为企业数据分析和存储的重要解决方案。
转载地址:http://ipefk.baihongyu.com/