Windows10配置运行Hive-HiveServer2(非WSL模式)

举报
BUG开发工程师 发表于 2020/11/27 11:27:18 2020/11/27
【摘要】 背景经过前面Hive的配置,基本的功能已经准备好。可以通过hive命令直接进入交互式命令行,进行Hive SQL语句的编写、提交、运行等。但还不支持通过JDBC链接。也就无法使用Datagrip一类的SQL IDE。在一些场景下会有开发效率上的影响。为此继续在Windows下配置运行HiveServer2。版本OS:Windows 10 Pro 1903Java:1.8.0_231zooke...

背景

经过前面Hive的配置,基本的功能已经准备好。可以通过hive命令直接进入交互式命令行,进行Hive SQL语句的编写、提交、运行等。
但还不支持通过JDBC链接。也就无法使用Datagrip一类的SQL IDE。在一些场景下会有开发效率上的影响。
为此继续在Windows下配置运行HiveServer2。

版本

OS:Windows 10 Pro 1903
Java:1.8.0_231
zookeeper:apache-zookeeper-3.5.6-bin.tar.gz (Apache官方源下载 http://archive.apache.org/dist/zookeeper/zookeeper-3.5.6/

前置依赖

HiveServer2运行依赖zookeeper做HA,所以需要先安装并启动。

  1. 下载zookeeper二进制包
  2. 解压, 并转移目录:
    D:\install\zookeeper
    D:\install\是我常用的软件安装目录,各自实操时注意更换自己的解压/安装目录
  3. 创建数据目录:D:\install\zookeeper\data
  4. 修改data目录配置
    D:\install\zookeeper\conf
    复制默认配置zoo_sample.cfg,命名为zoo.cfg
    修改dataDir项,改为dataDir=D:\\install\\zookeeper\\data
  5. 启动
$env:ZOOKEEPER_HOME="D:\install\zookeeper"

$env:ZOOKEEPER_HOME\bin\zkServer.cmd

配置步骤

HiveServer2的运行就相对简单,默认链接localhost的zk。

  1. 确保beeline可以加载jdbc driver

例如,修改beeline运行cmd, 把driver jar加入classpath

%HIVE_HOME%\bin\beeline.cmd
@rem Optional: add jdbc jar to beeline classpath
pushd %HIVE_HOME%\jdbc
for /f %%a IN ('dir /b hive-jdbc-**-standalone.jar') do (
  set CLASSPATH=%CLASSPATH%;%HIVE_HOME%\jdbc\%%a
)
popd
  1. 修改hive-site.xml配置
<property>
    <name>hive.server2.enable.doAs</name>
    <value>false</value>
</property>
  1. 启动HiverServer2
set $env:LANG=zh_CN.UTF-8

$env:HIVE_HOME\bin\hive.cmd --service hiveserver2 start
  1. 验证
  • UI链接:http://localhost:10002/

  • beeline连接:beeline连接成功后,可在UI链接看到Active Sessions有对应记录

%HIVE_HOME%\bin\beeline.cmd -u jdbc:hive2://localhost:10000
  • 测试语句
select a.wr_returned_date_sk, a.cnt, b.cnt
from (select wr_returned_date_sk, count(1) as cnt
      from web_returns
      where wr_returned_date_sk between 2452977 and 2452979
      group by wr_returned_date_sk) a
 join (
    select wr_returned_date_sk, count(1) as cnt
    from web_returns
    where wr_returned_date_sk between 2452977 and 2452979
    group by wr_returned_date_sk
) b on a.wr_returned_date_sk = b.wr_returned_date_sk;

注意:如发现beeline运行sql后没有日志输出(看起来像异常退出的情况),可以在hiveserver2运行日志(终端或者文件)中查看。

  • 在Datagrip配置连接,较新版本已经默认带上hive的jdbc dialog
    • 有辅助命令提示,挺香。。。

后续启动或停止

  • 使用PowerShell,普通用户打开。
  • 启动zookeeper
$env:ZOOKEEPER_HOME="D:\install\zookeeper"

$env:ZOOKEEPER_HOME\bin\zkServer.cmd
  • 启动HiveServer2
set $env:LANG=zh_CN.UTF-8

$env:HIVE_HOME\bin\hive.cmd --service hiveserver2 start

其他问题

  1. hiveserver2启动找不到curator相关类
    • 原因:hive lib目录下默认没有这些lib,原因暂时不明
    • 解决:从maven下载并导入缺失的依赖jar
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-client</artifactId>
    <version>2.7.1</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>2.7.1</version>
</dependency>
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-recipes</artifactId>
    <version>2.7.1</version>
</dependency>
mvn dependency:copy-dependencies
# 放入 $env:HIVE_HOME\lib

curator-framework-2.7.1.jar
curator-recipes-2.7.1.jar
curator-client-2.7.1.jar
  1. jdbc提交的sql都执行失败
    • 原因:如果是Linux中,hiveserver2会从LANG变量读取编码格式。在PowerShell中,默认是没有的。
    • 解决:只能模拟一个:set $env:LANG=zh_CN.UTF-8

参考文档

  1. https://medium.com/@shaaslam/installing-apache-zookeeper-on-windows-45eda303e835
  2. https://stackoverflow.com/questions/52994585/user-is-not-allowed-to-impersonate-anonymous-state-08s01-code-0-org-apache-had
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。