HiveServer2作为一种服务接口,允许Hive远程客户端执行查询并返回结果。当前实现基于Thrift的RPC调用。是HiveServer的改进版本,支持多客户端的并发和权限控制。被设计来更好的对开放式API如JDBC和ODBC的支持。
接下来我们要描述如何设置服务,如何使用客户端连接服务器将在《HiveServer客户端》文档中描述。
如何设置设置Hive-site.xml配置文件中的属性
参数 | 描述 | 值 |
hive.server2.thrift.min.worker.threads | 最小的工作线程数 | 默认5 |
hive.server2.thrift.max.worker.threads | 最大的工作线程数 | 默认500 |
hive.server2.thrift.port | 监听的TCP端口号 | 默认1000 |
hive.server2.thrift.bind.host | 绑定的TCP接口主机名 | 默认localhost |
可选的环境设置
环境变量 |
|
HIVE_SERVER2_THRIFT_BIND_HOST | 需要绑定的主机TCP接口,会覆盖配置文件中的设置 |
HIVE_SERVER2_THRIFT_PORT | 需要监控的TCP端口,默认10000,会覆盖配置文件中的设置 |
运行在HTTP模式
在Hive0.13版本中,HiveServer2提供了支持通过HTTP协议发送ThriftRPC消息的能力。这对支持客户端和服务器间的代理来说非常有用。(例如,可以解决负载均衡和安全问题)。当前,你可以选择将HiveServer2运行在TCP和HTTP模式上,但无法同时运行两种模式。
使用下面的配置来设置HTTP模式:
hive.server2.transport.mode | 设置为http |
相关的环境设置
hive.server2.thrift.http.port | 监听的HTTP端口号 | 默认10001 |
hive.server2.thrift.http.path | 服务端点 | 默认cliservice |
hive.server2.thrift.http.min.worker.threads | 最小的工作线程数 | 默认5 |
hive.server2.thrift.http.max.worker.threads | 最大的工作线程数 | 默认500 |
全局初始文件
启用Hive0.14,全局的初始化文件被放在变量hive.server2.global.init.file.location指定的位置中。这个变量指定的是初始化的文件存在的路径或初始化的.hiverc文件。
初始文件包含一系列的命令,并会为用户运行HiveServer2实例。如注册一个标准的jar集合和函数。
如何开始
$HIVE_HOME/bin/hive --service hiveserver2
Service hive-server2 start |
使用信息
在命令后面加上-H或—help选项可以获得有用信息,如
授权/安全配置HiveServer2支持匿名(非授权)以及SASL、Kerberos、LDAP、插件式客户授权和插件式授权模式。
设置
hive.server2.authentication | 授权模式,默认NONE,可选的包括NOSASL、KERBEROS、LDAP、PAM和CUSTOM等授权模式 |
hive.server2.authentication.kerberos.principal | 服务的KERBEROS的principal |
hive.server2.authentication.kerberos.keytab | 服务principal的keytab |
hive.server2.authentication.ldap.url | LDAP的URL |
hive.server2.authentication.ldap.baseDN | 基于DN的LDAP |
hive.server2.custom.authentication.class | 用户授权类,实现 org.apache.hive.service.auth.PasswdAuthenticationProvider接口 |
默认情况HiveServer2当用户提交查询时,执行这个提交用户查询过程,但当以下参数设置为false,查询会以运行HiveServer2进程的用户提交。
hive.server2.enable.doAs | 匿名连接用户,默认true |
为了避免内存在非安全模式下的泄露,可以通过将以下参数设置为true禁止文件系统缓存:
fs.hdfs.impl.disable.cache | 禁止HDFS文件系统缓存,默认为false |
fs.file.impl.disable.cache | 禁止文件缓存 |
集成/保密保护
在Hive0.12版本中,允许集成保护和保密保护(不光是授权)。为了能在HiveJDBC驱动和HIveServer2之间通信。我们可以设置SASL QOP属性。
这个只支持在Kerberos作为HS2客户端的授权 在Hive-site.xml中hive.server2.thrift.sasl.qop可以设置为QOP的一个有效值(‘auth’或’auth-conf’) |
SSL加密
在Hive0.13中提供支持SSL加密。为了启用,在配置文件hive-site.xml中设置下面的变量:
hive.server2.use.SSL | 设置为true |
hive.server2.keystore.path | 将这个设置成你的keystore路径 |
hive.server2.keystore.password | 将这个设置成你的keystore密码 |
可插拔的授权模块
在Hive0.13中,提供了对PAM的支持。为了支持PAM。需要如下步骤设置PAM:
下载相关架构的JPAM本地库 解压并拷贝libjpam.so到系统的目录中 添加目录到LD_LIBRARY_PATH环境变量,如: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<libjmap-directory> |
最后,设置hive-site.xml中的配置
hive.server2.authentication | 设置成PAM |
hive.server2.authentication.pam.services | 设置这个列表为PAM。注意到拥有同样名字的PAM服务需要同时存在/etc/pam.d中 |