Hiveserver 2 启动中的问题

文章目录

  • Hiveserver 2 部署中的坑
        • 这篇文章主要记录了笔者在部署与启动 Hiveserver 2 中遇到的几个问题
        • 这里写几个重要的组成部分,后面会用到
          • 配置文件`hive-site.xml`
          • 启动 Hiveserver 2
          • Hive 的日志存放默认位置位于`/tmp/${userName}/hive.log`
        • 接下来就是笔者遇到的几个坑
          • MySQL 连接问题
        • Hiveserver 2 启动后卡主的问题
          • log4j 冲突问题
          • 解决方法:
          • `Public Key Retrieval is not allowed`
          • 解决方法:
          • Shell前台抢占导致的假死
          • 解决方法:

Hiveserver 2 部署中的坑

这篇文章主要记录了笔者在部署与启动 Hiveserver 2 中遇到的几个问题

这里写几个重要的组成部分,后面会用到

配置文件hive-site.xml

这个配置文件有两个常用的重要配置:
hive.server.thrift.port: Hiveserver 2 的监听端口,默认为10000;
hive.server.thrift.bind.host: Hiveserver 2 的绑定IP,默认为localhost

这两个配置文件建议覆写原有的默认配置,以你的实际环境来配置

启动 Hiveserver 2

使用

bin/hiveserver2

或者

bin/hive --service hiveserver2

启动完毕后使用jps [-m] [-l]可以看到有RunJar的 Java 进程在运行,但是不一定代表 Hiveserver 2 启动成功并且正常运作

Hive 的日志存放默认位置位于/tmp/${userName}/hive.log

这个日志debug Hiveserver 2 问题的时候很有用

接下来就是笔者遇到的几个坑

MySQL 连接问题

在使用 bin/hive / Beeline 连接 MySQL 的时候会出现

Wed Sep 18 15:23:57 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. 
According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set.
For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. 
You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

所以需要在链接字符串中添加useSSL=false属性,记得使用&来分隔,仅仅使用&会让这个值无法被识别进而报错

Hiveserver 2 启动后卡主的问题

这里仅描述笔者遇到的问题与解决办法

log4j 冲突问题

具体表现为:

SLF4J: Class path contains multiple SLF4J bindings.
---------------------------------------------------
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

最后就卡在类似于上面的这种情况

解决方法:

由于这个是因为 Hadoop 与 Hive 的 log4j 冲突问题,所以直接把两个.jar其中一个禁用就可以了,但是一般都是用mv fileA.jar fileB.jar.bak来备份文件以便日后需要

Public Key Retrieval is not allowed

具体表现为:
在日志中找到以下错误

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not allowed

关键字为Public Key Retrieval is not allowed

解决方法:

这问题主要是 MySQL 的安全设置导致的,在链接字符串里面加上allowPublicKeyRetrieval=true,即可解决,但是可能会有安全性问题

Shell前台抢占导致的假死

这是最简单的一个问题,因为 Hiveserver 2 是一个服务,前台启动会导致当前 Shell 等待响应而卡死

解决方法:

只需要在启动 Hiveserver 2 的命令行后面加上&命令其转到后台运行即可,示例:

bin/hiveserver2 &

你可能感兴趣的:(Hiveserver2,Hive)