Windows10配置运行Hive-HiveServer2(非WSL模式)
【摘要】 背景经过前面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,所以需要先安装并启动。
- 下载zookeeper二进制包
- 解压, 并转移目录:
D:\install\zookeeper
D:\install\
是我常用的软件安装目录,各自实操时注意更换自己的解压/安装目录 - 创建数据目录:
D:\install\zookeeper\data
- 修改data目录配置
D:\install\zookeeper\conf
复制默认配置zoo_sample.cfg
,命名为zoo.cfg
修改dataDir项,改为dataDir=D:\\install\\zookeeper\\data
- 启动
$env:ZOOKEEPER_HOME="D:\install\zookeeper"
$env:ZOOKEEPER_HOME\bin\zkServer.cmd
配置步骤
HiveServer2的运行就相对简单,默认链接localhost的zk。
- 确保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
- 修改hive-site.xml配置
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
- 启动HiverServer2
set $env:LANG=zh_CN.UTF-8
$env:HIVE_HOME\bin\hive.cmd --service hiveserver2 start
- 验证
-
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
其他问题
- 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
- jdbc提交的sql都执行失败
- 原因:如果是Linux中,hiveserver2会从LANG变量读取编码格式。在PowerShell中,默认是没有的。
- 解决:只能模拟一个:
set $env:LANG=zh_CN.UTF-8
参考文档
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)