8.一文读懂hive的客户端

两代客户端发展历程

Hive发展至今,总共历经了两代客户端工具。

第一代客户端Hive Client(不推荐使用):$HIVE_HOME/bin/hive, 是一个 shellUtil。主要功能:一是可用于以交互或批处理模式运行Hive查询;二是用于Hive相关服务的启动,比如metastore服务。

第二代客户端:Hive Beeline Client推荐使用):$HIVE_HOME/bin/beeline,是一个JDBC客户端,是官方强烈推荐使用的Hive命令行工具,和第一代客户端相比,性能加强安全性提高。

Beeline Shell在嵌入式模式和远程模式下均可工作。在嵌入式模式下,它运行嵌入式 Hive(类似于Hive Client),而远程模式下beeline通过 Thrift 连接到单独的 HiveServer2 服务上,这也是官方推荐在生产环境中使用的模式

那么问题来了,HiveServer2是什么?HiveServer1哪里去了?

HiveServer、HiveServer2服务

HiveServer、HiveServer2都是Hive自带的两种服务,允许客户端在不启动CLI(command-line interface,命令行界面情况下对Hive中的数据进行操作,且两个都允许远程客户端使用多种编程语言如java,python等向hive提交请求,取回结果。

但是,HiveServer不能处理多于一个客户端的并发请求。因此在Hive-0.11.0版本中重写了HiveServer代码得到了HiveServer2,进而解决了该问题。HiveServer已经被废弃

HiveServer2支持多客户端的并发和身份认证,旨在为开放API客户端(一般来说就是 软件组件之间信息交互的桥梁)如JDBC、ODBC提供更好的支持。

​​​​​​​Hive服务和客户端关系梳理

HiveServer2通过Metastore服务读写元数据。所以在远程模式下,启动HiveServer2之前必须先首先启动metastore服务

特别注意:远程模式下,Beeline客户端只能通过HiveServer2服务访问Hive。而Hive Client是通过Metastore服务访问的。具体关系如下:

​​​​​​​Hive Client(第一代客户端)使用

在hive安装包的bin目录下,有hive提供的第一代客户端 bin/hive。该客户端可以访问hive的metastore服务,从而达到操作hive的目的。

友情提示如果您是远程模式部署,请手动启动运行metastore服务。如果是内嵌模式和本地模式,直接运行bin/hive,metastore服务会内嵌一起启动。

可以直接在启动Hive metastore服务的机器上使用bin/hive客户端操作,此时不需要进行任何配置。

#远程模式 首先启动metastore服务

  /export/server/hive/bin/hive --service metastore

  #克隆CRT会话窗口 使用hive client连接

  /export/server/hive/bin/hive

如果需要在其他机器上通过bin/hive访问hive metastore服务,只需要在该机器的hive-site.xml配置中添加metastore服务地址即可

#上传hive安装包到另一个机器上,比如node3:

  cd /export/server/

  tar zxvf apache-hive-3.1.2-bin.tar.gz

  mv apache-hive-3.1.2-bin hive

  

  #解决hadoop、hive之间guava版本差异

  cd /export/server/hive/

  rm -rf lib/guava-19.0.jar

  cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

  

  #修改hive环境变量文件 添加Hadoop_HOME

  cd /export/server/hive/conf

  mv hive-env.sh.template hive-env.sh

  vim hive-env.sh

  export HADOOP_HOME=/export/server/hadoop-3.1.4

  

  #添加metastore服务地址

  cd /export/server/hive/conf/

  vim  hive-site.xml

  

  <configuration>

<property>

    <name>hive.metastore.uris</name>

    <value>thrift://node1:9083</value>

  </property>

</configuration>
​​​​​​​Hive Beeline Client(第二代客户端)使用

hive经过发展,推出了第二代客户端beeline,但是beeline客户端不是直接访问metastore服务的,而是需要单独启动hiveserver2服务

在hive运行的服务器上,首先启动metastore服务,然后启动hiveserver2服务

#先启动metastore服务 然后启动hiveserver2服务

  nohup /export/server/hive/bin/hive --service metastore &

  nohup /export/server/hive/bin/hive --service hiveserver2 &

在node3上使用beeline客户端进行连接访问。需要注意hiveserver2服务启动之后需要稍等一会才可以对外提供服务。

Beeline是JDBC的客户端,通过JDBC协议和Hiveserver2服务进行通信,协议的地址是:jdbc:hive2://node1:10000

[root@node3 ~]# /export/server/hive/bin/beeline 

  Beeline version 3.1.2 by Apache Hive

  beeline> ! connect jdbc:hive2://node1:10000

  Connecting to jdbc:hive2://node1:10000

  Enter username for jdbc:hive2://node1:10000: root

  Enter password for jdbc:hive2://node1:10000: 

  Connected to: Apache Hive (version 3.1.2)

Driver: Hive JDBC (version 3.1.2)

Transaction isolation: TRANSACTION_REPEATABLE_READ

  0: jdbc:hive2://node1:10000> 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值