Hive-HiveServer2

一、HiveServer1

HiveServer是一项可选服务,允许远程客户端使用各种编程语言向Hive提交请求并检索结果。HiveServer构建在Apache ThriftTM上(http://thrift.apache.org/),因此它有时被称为Thrift服务器,尽管这可能会导致混淆,因为名为HiveServer2的较新服务也是在Thrift上构建的。自从引入HiveServer2以来,HiveServer也被称为HiveServer1。

HiveServer无法处理来自多个客户端的并发请求。这实际上是HiveServer导出的Thrift接口施加的限制,无法通过修改HiveServer代码来解决。

HiveServer2是对HiveServer的重写,以解决这些问题,从Hive0.11.0开始,建议使用HiveServer2

二、介绍

HiveServer2(HS2)是一种使客户端能够针对Hive执行查询的服务。HiveServer2是已弃用的HiveServer1的继任者。HS2支持多客户端并发和身份验证。它旨在为JDBC和ODBC等开放式API客户端提供更好的支持。

HS2是作为复合服务运行的单个进程,其中包括基于Thrift的Hive服务(TCP或HTTP)和用于web UI的Jetty web服务器。它使用一个线程池和查询队列来管理同时执行的查询请求,并支持查询优化器,可以对查询执行计划进行优化,提高查询性能

三、HS2架构

HS2的核心是Thrift,Thrift是一个用于构建跨平台服务的RPC框架。它的堆栈由4层组成:Server, Transport, Protocol, 和 Processor

1、Server

HS2将TThreadPoolServer(来自Thrift)用于TCP模式,或将Jetty服务器用于HTTP模式。

TThreadPoolServer为每个TCP连接分配一个工作线程。每个线程总是与一个连接相关联,即使该连接是空闲的。因此,由于大量的并发连接,大量的线程可能会导致性能问题。未来HS2可能会切换到另一种TCP模式的服务器类型,例如TThreadSelectorServer。

2、Transport

当客户端和服务器之间需要代理时(例如,出于负载平衡或安全原因),需要HTTP模式。这就是为什么它和TCP模式一样受到支持。可以通过配置单元配置属性Hive.server2.transport.mode指定Thrift服务的传输模式。

3、Protocol

协议实现负责序列化和反序列化。HS2目前正在使用TBinaryProtocol作为其Thrift协议进行序列化。在未来,基于更多的性能评估,可以考虑其他协议,例如TCompactProtocol。

4、Processor

流程实现是处理请求的应用程序逻辑。例如,ThriftCLIService。ExecuteStatement()方法实现编译和执行配置单元查询的逻辑

四、依赖

Metastore

        元存储可以配置为嵌入式(在与HS2相同的过程中)或远程服务器(这也是一种基于Thrift的服务)

Hadoop cluster

        HS2为各种执行引擎(MapReduce/Tez/Spark)准备物理执行计划,并将作业提交给Hadoop集群执行。

五、JDBC Client

建议客户端使用JDBC驱动程序与HS2进行交互。请注意,有些用例(例如HadoopHue)直接使用Thrift客户端,而绕过JDBC

以下是进行第一个查询所涉及的API调用序列:

        1、JDBC客户端(例如Beeline)通过启动传输连接(例如TCP连接),然后调用OpenSession API以获取SessionHandle,从而创建HiveConnection。会话是从服务器端创建的。

        2、执行HiveStatement(遵循JDBC标准),并从Thrift客户端进行ExecuteStatement API调用。在API调用中,SessionHandle信息与查询信息一起传递给服务器。

        3、HS2服务器接收请求,并要求驱动程序(即CommandProcessor)进行查询解析和编译。驱动程序启动一个后台作业,该作业将与Hadoop对话,然后立即向客户端返回响应。这是ExecuteStatement API的异步设计。响应包含从服务器端创建的OperationHandle。

        4、客户端使用OperationHandle与HS2对话,以轮询查询执行的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值