Apache Kylin v1.5部署时报错:Please make sure the user has the privilege to run hbase shell

一、生产场景

Hadoop:2.6.3版本

Hive:1.1.1版本(鉴于《Sqoop将Oracle数据导入至Hive中界面无错却依旧没有数据导入》这篇文章中提到的Hive-1.1.1存在天坑,建议大家部署时换个版本,比如1.2.1版本甚好)(Metastore为Mysql5.1.73版本)

Zookeeper:3.4.5版本

Hbase:1.1.4版本

Kylin:v1.5版本

Centos:6.6版本 64位

官方给出的Kylin需要的一些依赖:

Apache Kylin v1.5部署时报错:Please make sure the user has the privilege to run hbase shell_第1张图片
官方给出的kylin所需要的依赖

二、需求

需要在已有的Hadoop集群上部署Kylin v1.5

三、问题描述

在部署时,通过Kylin自带的check-env.sh脚本检查环境时,除了显示Kylin的环境变量外,还显示Please make sure the user has the privilege to run hbase shell(据官方文档介绍,如若部署正常,运行该脚本仅仅显示Kylin环境变量而已,例如KYLIN_HOME is set to{自己定义的位置})

官方对于check-env.sh的介绍:

check-env.sh

KYLIN_HOME所在路径:

kylin环境变量KYLIN_HOME所在路径

本地执行,除了显示Kylin的环境变量外,还显示“Please make sure the user has the privilege to run hbase shell”:

检查kylin的依赖时报错

Kylin的启动/停止程序为kylin.sh,启动方式:./kylin.sh start停止方式:./kylin.sh stop,在check-env.sh检查失败的情况下,启动Kylin,发现报同样的错误,启动不起来。

启动kylin.sh时报错


四、排查思路

①日志

想通过Kylin的日志解决,所以查看了kylin.log文件,

kylin.log所在路径

可能由于kylin未启动起来,所以并没有输出信息。

②源码

日志这条路作废,只能改走源码这条路。查看check-env.sh源码如下:

Apache Kylin v1.5部署时报错:Please make sure the user has the privilege to run hbase shell_第2张图片
check-env.sh源码

可以看到,源码-z是用来检测各环境变量是否存在,因为Kylin需要这些依赖。出错的是进行到第二步,所以可能是hbase环境变量的问题。

hbase -version命令检测hbase环境变量是否配置正确:

hbase -version命令检查hbase环境变量设置

果然报错!!!

查看hbase的环境变量配置,hbase是1.1.4版本,这里配置成了1.4.4版本

错误的hbase设置

五、解决方案

①解决步骤

修改:

修改错误的hbase环境变量

使得配置生效:

使得配置生效

再次启动kylin,目测应该正确的启动界面:

目测应该正确的kylin.sh

②二次问题

通过netstat -anp | grep 7070命令检查kylin运行的端口号7070是否启动:

7070端口未启动


如上图所示,并没有启动。

③二次排查

再次查看kylin.log,发现有报错信息输出:

再次查看kylin.log

④二次解决

推测了一下,可能是现主机内存没有4096M,调整为2048M,尝试一下:

-xmx 4096M
-xmx 2048M

再次查看7070端口,发现成功启动

成功启动7070端口


登录web页面验证

Apache Kylin v1.5部署时报错:Please make sure the user has the privilege to run hbase shell_第3张图片
web界面访问正常

至此,问题解决,Apache Kylin部署成功。

六、反思总结

除了在配置环境变量时,要细心外,其实还有一个之前困惑已久的问题,在这次排错中得到了解决:配置环境变量时,~/.bashrc文件与/etc/profile文件的区别。

①/etc/profile:

该文件登录操作系统时,为每个用户设置环境信息,当用户第一次登录时,该文件被执行。也就是说这个文件对每个shell都有效,用于获取系统的环境信息。

也就是说,如果我的系统有root和you两个用户,当你以root身份在/etc/file下配置环境变量的时候,以you的身份登录,查看/etc/profile,是和root设置的是一致的,所以全局生效。

root下的/etc/profile
Apache Kylin v1.5部署时报错:Please make sure the user has the privilege to run hbase shell_第4张图片
you下的/etc/profile

②~/.bashrc

该文件存储的是专属于个人bash shell的信息,当登录时以及每次打开一个新的shell时,执行这个文件。在这个文件里可以自定义用户专属的个人信息。

从下图可以看出,当以root身份在~/.bashrc下配置环境变量时,换做you的身份登录,则不一致了,~/.bashrc只针对于当前设置它的用户,是局部的专属的。

Apache Kylin v1.5部署时报错:Please make sure the user has the privilege to run hbase shell_第5张图片
root下的~/bashrc
you下的~/.bashrc

建议部署kylin时环境变量配置在/etc/profile下,防止多次配置,或者不生效的情况发生。

七、参考文章

Linux下 环境变量/etc/profile、/etc/bashrc、~/.bashrc的区别

你可能感兴趣的:(Apache Kylin v1.5部署时报错:Please make sure the user has the privilege to run hbase shell)