理解Hive 不同组件的功能
Hive功能
通过将SQL转换成MR、Spark等任务,来计算HDFS中数据的工具。
Hive是基于Hadoop之上的数仓工具。通过HDFS存储真实的数据,通过YARN运行计算任务(MR、Spark等可以依赖YARN)。
那么我们简单分析Hive需要具备的能力:
- 对SQL编译、抽象
- 将SQL转换成计算任务并执行
- 对HDFS中的数据进行格式定义
- 管理HDFS上数据的读写(哪些能读、哪些能写)
所以Hive需要能将SQL进行抽象,将其转换成在MR、Spark运行的任务,并执行这些任务。
在HDFS中存储数据,格式有很多种,但是为了能够支持以 SQL的方式读写,那么需要能够对这些数据进行schema定义。
HDFS上的数据很多,那么Hive不能随意的读取其中的数据,那么需要定义能够读取数据的位置。
再进行总结Hive需要包含元数据管理(metastore)和 解析SQL并执行计算(Drive)。
元数据管理使用服务metastore,其底层可以是关系型数据库,比如MySQL等。
Hive所有元数据管理都是基于metastore进行操作。
通过metastore屏蔽了对于数据的直接操作,让元数据管理变的可靠、稳定。
HCatalog服务是用于管理metastore的对外服务。第三方的接口处理或者管理metastore可以通过它。所以metastore可以理解为对内管理Hive元数据的服务。
解析SQL并执行计算就需要通过HiveCLI与HiveServer2。
HiveCLI可以理解为重客户端。他提供本地编译SQL,并向YARN提交任务的功能。它也能直接与metastore进行交互。
HiveServer2也能提供HiveCLI的功能,但是他还能对外提供服务,服务是以thrift的方式提供的。客户可以通过jdbc、odbc等方式连接HiveServer2,将任务提交给HiveServer2后,他再于metastore、YARN交互执行相关的指令。
beeline是一个轻客户端,他可以通过jdbc的方式连接HiveServer2,并将任务提交给HiveServer2,它也支持强大的权限管理等功能。