Hive 基本架构
Hive 是构建在分布式计算框架之上的 SQL 引擎,它重用了 Hadoop 中的分布式存储系统 HDFS/HBase 和分布式计算框架 MapReduce/Tez/Spark 等。Hive 是 Hadoop 生态系统中的重要部分,目前是应用最广泛的 SQL On Hadoop 解决方案。
Hive 对外提供了三种访问方式,包括 Web UI、CLI(Client Line Interface)和 Thrift 协议(支持 JDBC/ODBC),而在 Hive 后端,主要由三个服务组件构成。
Driver(驱动器)。与关系型数据库的查询引擎类似,Driver 实现了 SQL 解析,生成逻辑计划、物理计划、查询优化与执行等,它的输入是 SQL 语句,输出为一系列分布式执行程序(可以为 MapReduce、Tez 或 Spark 等)。
Metastore。Hive Metastore 是管理和存储元信息的服务,它保存了数据库的基本信息以及数据表的定义等,为了能够可靠地保存这些元信息,Hive Metastore 一般将它们持久化到关系型数据库中,默认采用了嵌入式数据库 Derby,用户可根据需要启用其他数据库,比如 MySQL。
Hadoop。Hive 依赖于 Hadoop,包括分布式文件系统 HDFS、分布式资源管理系统 YARN 以及分布式计算引擎 MapReduce, Hive 中的数据表对应的数据存放在 HDFS 上,计算资源由 YARN 分配,而计算任务则来自 MapReduce 引擎。
根据 Metastore 的运行方式不同,可将 Hive 分成三种部署模式:
嵌入式模式:Metastore 和数据库(Derby)两个进程嵌入到 Driver 中,当 Driver 启动时会同时运行这两个进程,一般用于测试。
本地模式:Driver 和 Metastore 运行在本地,而数据库(比如 MySQL)启动在一个共享节点上。
远程模式:Metastore 运行在单独一个节点上,被其他所有服务共享。使用 Beeline, JDBC/ODBC, CLI 和 Thrift 等方式访问 Hive 时,则采用的是该模式。这是一种常用于生产环境下的部署模式。
Hive 是 Hadoop 生态系统中最早的 SQL 引擎,它的 Metastore 服务已经被越来越多的 SQL 引擎所支持,已经成为大数据系统的元信息标准存储仓库。Spark SQL、Impala 和 Presto 等引擎均可直接读取并处理 Hive Metastore 中的数据表,真正实现“一份数据多种引擎”的计算模式。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/5282936feb92b8b60cb1b70fc】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论