Hive原理 2015-05-06 15:00

Hive架构

  • Metastore:存储表、列和Partition等元数据。包括Metastore服务和后端的关系型数据库。
  • Driver:管理HiveQL执行的生命周期并贯穿Hive任务整个执行期间。运行在HiveServer2进程中。它包括:
  1. Compiler:编译HiveQL并将其转化为一系列相互依赖的Map/Reduce任务。
  2. Optimizer:优化器,分为逻辑优化器和物理优化器,分别对HiveQL生成的执行计划和MapReduce任务进行优化。
  3. Execution Engine:按照任务的依赖关系分别执行Map/Reduce任务。
  • ThriftServer:提供thrift接口,作为JDBC和ODBC的服务端,并将Hive和其他应用程序集成起来。运行在HiveServer2进程中。
  • Clients:包含命令行接口(CLI), Web UI和JDBC/ODBC 接口,为用户访问提供接口。

通过HiveServer或者HiveServer2,客户端可以在不启动CLI的情况下对Hive中的数据进行操作。
两者都允许远程客户端使用多种编程语言如Java、Python向Hive提交请求,获取结果。
HiveServer或者HiveServer2都是基于Thrift的,但HiveSever有时被称为Thrift server,而HiveServer2却不会。 既然已经存在HiveServer为什么还需要HiveServer2呢?这是因为HiveServer不能处理多于一个客户端的并发请求,这是由于HiveServer使用的Thrift接口所导致的限制,不能通过修改HiveServer的代码修正。因此在Hive-0.11.0版本中重写了HiveServer代码得到了HiveServer2,进而解决了该问题。
HiveServer2支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供了更好的支持。

Tags: #Hive    Post on Hadoop