HiveServer1的限制:用户并发性(不能处理多余一个客户端的并发请求)、LDAP安全性、访问限制
HiveServer2在Hive1.1引入(HIVE-2935),提供更好的并发性、安全性、远程访问
HiveServer2 架构基于一个ThriftService和任意数量由驱动程序、编译器和执行器组成的会话。
MetaStore也是HiveServer2的一个重要组成部分。支持多客户端的并发和认证、支持Kerberos、自定义身份验证以及通过LDAP身份验证、为开放API客户端如JDBC、ODBC提供更好的支持
主要区别:
- 服务器的连接:
Hive Cli 连接HiveServer1使用的是Thrift协议。因此。连接HiveServer1的时候需要指定可用的HiveServer1的主机名和可选的端口号。
hive -h <hostname> -p <port>
Beeline连接HiveServer2使用的是JDBC,和其它基于JDBC的客户端一样,连接参数是一个JDBC URL。
beeline –u <url> -n <username> -p <password>
Beeline下如果你想使用NOSASL 模式连接,你必须明确的指定验证模式。
beeline> !connect jdbc:hive2://<host>:<port>/<db>;auth=noSasl hiveuser pass org.apache.hive.jdbc.HiveDriver
- 嵌入模式:
Hive Cli 和 Beeline 都可以使用嵌入模式连接HiveServer
Hive Cli使用嵌入模式,启动客户端的时候不需要任何连接参数:> hive
Beeline 使用嵌入模式需要指定jdbc url:> beeline -u jdbc:hive2://
即:
HiveServer version | Connection URL | Driver Class |
HiveServer2 | jdbc:hive2://: | org.apache.hive.jdbc.HiveDriver |
HiveServer1 | jdbc:hive://: | org.apache.hadoop.hive.jdbc.HiveDriver |
- 所依赖的jar包:
因为Beeline是基于JDBC的客户端工具,所以较Hive Cli 需要多依赖一个Hive JDBC 的jar包
总结: