什么是Hive
Hive到底是什么?它的存在是为了解决什么问题?Hive有什么优缺点?它与传统数据库之间有什么关系?Hive在大数据分析中扮演着什么角色?Let’s explore Hive together.
Hive是什么
简单来说,Hive是一种将SQL语句转换为MapReduce/Tez/Spark程序的工具。有了Hive我们不需要学习如何写MapReduce/Tez/Spark程序来进行数据分析,只需使用我们已经熟悉的SQL语言进行我们需要的数据查询,Hive会将SQL解析并转化为相应的计算程序在HDFS上运行并返回结果。
官方定义
The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Built on top of Apache Hadoop, it provides:
- Tools to enable easy access to data via SQL, thus enabling data warehousing tasks such as extract/transform/load(ETL), reporting, and data analysis
- A mechanism to impose structure on a variety of data formats
- Access to files stored either directly in Apache HDFS or in other data storage systems such as Apache HBase
- Query execution using Apache Hadoop MapReduce, Apache Tez or Apache Spark frameworks.
数据仓库工具Hive致力于使用SQL来简化在分布式存储中的数据读写以及数据集管理问题。基于Apache Hadoop实现,Hive提供了:
- 通过SQL简化数据访问的工具,即简化数据仓库任务如数据提取、转化、加载、报告和数据分析等。
- 将各种各样的数据格式转换为特定结构的机制
- 可以直接访问HDFS或者其他数据存储系统如HBase中的文件
- 可以指定数据计算框架如MapReduce、Tez或者Spark来执行查询
为什么是基于Hadoop
根据上述定义可以看到:
- Hive处理的数据实际上是存放在HDFS或其他存储系统中,它本身不会存储数据
- 底层数据计算框架使用MapReduce、Tez或Spark
- Hive调度资源使用Yarn框架
所以Hive实际上是一个Hadoop的工具,为了帮助大家更加方便的使用Hadoop来工作,如果没有Hadoop,或许Hive存在的意义也就没有了吧。
Hive的优缺点
优点
- 使用简单,用户只需会使用SQL即可
- 使数据分析工作变得简单,处理大数据优势明显
- 支持用户自定义函数
缺点
- 表达能力有限,无法表达迭代式算法(如第一个MapReduce程序的输出作为第二个MapReduce程序的输入)
- Hive转换SQL生成的MapReduce程序通常不够有效率
- Hive调优困难,粒度较粗
Hive架构组成
- 两种客户端
- CLI(command-line interface)命令行客户端
- JDBC客户端
- 四种驱动
- SQL Parser:sql解析器,检查sql语法
- Physical Plan:编译器,将sql语句转换为MapReduce或者指定的计算框架程序
- Query Optimizer:优化器,优化查询
- Execution:执行器,执行计算程序
- 元数据库Metastore
- Metastore是一个数据库,用于存储需要处理的数据的元数据,比如表名,表所属的数据库,表的用户信息,表字段,表数据所在的目录等等,将这些元数据存储在一个关系型数据库中,这个数据库就是Hive的Metastore
- Hive自带的Metastore是一个Derby数据库,但因为Derby不支持并发,一遍将Derby替换为Mysql
所以Hive处理过程中会读取两部分数据:存放在HDFS中的结构化数据(要处理的大数据)以及存放在Mysql中的元数据(目标数据信息)。通过读取元数据信息,找到对应的字段;然后把字段映射到结构化数据中,通过映射形成一张虚表,用于Hive数据查询与分析。
Hive的特点
- Hive是针对数据仓库设计的,主要用于读,所有的数据在加载时已经确定好,适合处理静态数据
- Hive本身计算的延迟较高
- Hive基于Hadoop,也具备可扩展性,支持并发运行
- Hive是一种数仓工具,不是数据库
发布于