Kylin2.6.3部署踩坑集锦

软件环境

  • 系统centos7
  • hadoop 3.2
  • zookeeper-3.4.14
  • jdk-8u201-linux-x64
  • Hive 3.1.2 (metabase用的mysql)
  • Hbase 2.1.4
  • Kylin 2.3.6(apache-kylin-2.6.3-bin-hadoop3)

遇到的各种问题小结原因

已解决

  • 单独部署好了Hadoop/Zookeeper/Hive/Hbase,但是Kylin的使用还需要对以上软件环境增加额外的配置导致
  • 根据Hive使用何种命令行,也决定了对于Kylin针对Hive的配置修改.

未解决

  • 至今未完善解决Kylin2.3.6 跟 Hive 依赖的问题(是通过手动拷贝缺失的hive的jar包到Kylin/lib包下实现)
  • log4j2的jar包重复警告,没有解决,但是初步观察不影响日志输出.

踩坑问题

Kylin 报错:Logging initialized using configuration…

一般是跟Hive交互失败,配置原因(前提Hive本身运行OK)
修改文件

$KYLIN_HOME/conf/kylin.properties

# Hive client, valid value [cli, beeline] 这里配置Kylin连接Hive的模式,我的Hive用的beeline,默认是cli所以会报错
kylin.hive.client=beeline # Old value is "cli"

#Parameters for beeline client, only necessary if hive client is beeline 这里配置-n用户名,贪图省事用的 root,我之前还以为是需要用连接beeline的用户名密码,配置了 -n hive的用户名 -p hive的密码,结果执行build cube时候失败了,表示没有权限!后来测试发现 好像需要配置Linux系统的用户名,而非hive的用户名.而且不用配置密码(感觉是调用了hive自己的配置信息中的用户名密码跟hive交互),这里的用户名只是为了操作hadoop使用,所以需要linux的用户名
#  下面中jdbc:hive2://localhost:10000根据自己 hive的域名/地址 端口号自行修改
kylin.hive.beeline.params=-n root --hiveconf hive.security.authorization.sqlstd.confwhitelist.append='mapreduce.job.*|dfs.*' -u 'jdbc:hive2://localhost:10000'

Kylin build cube时报错java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveConf

原因:Kylin没有Hive操作的相关jar包
解决思路:添加缺失jar包
方法1(推荐):搜索的大家用的最多的方法,但是我没成功.
参考:https://blog.csdn.net/weixin_34380296/article/details/89649992
ps:原文里修改 /etc/profile的内容中

# 7. kylin
export KYLIN_HOME=/developer/apache-kylin-2.3.0-bin
export hive_dependency=$HIVE_HOME/conf:$HIVE_HOME/lib/*:$HCAT_HOME/share/hcatalog/hive-hcatalog-core-1.1.0.jar

hive-hcatalog-core-1.1.0.jar 这个jar包的版本号,根据自己实际路径下的jar包版本自行修改.
修改完 不要忘了

# 刷新下配置文件
source /etc/profile

重启kylin
方法2(不推荐):
因为使用方法1Kylin直接导致我启动Kylin失败,common-logging还是某个jar包冲突.
报错:

You have more than one version of 'org.apache.commons.logging.Log' visible, which is not allowed.
#修改为只引用了hive-hcatalog-core的jar包
hive_dependency=$HCAT_HOME/share/hcatalog/hive-hcatalog-core-对应版本号.jar

所以导致手动把hive的部分jar包拷贝到kylin/lib路径下

  • hive开头的jar
  • datanucleus开头的三个jar
  • jdo-api的jar
  • libfb开头的jar
  • libthrift开头的jar
  • mysql开头的jar
[root@Master ~]# cd /opt/apache-kylin-2.6.3-bin-hadoop3/lib
[root@Master lib]# ls
datanucleus-api-jdo-4.2.4.jar    hive-exec-3.1.2.jar                        hive-llap-ext-client-3.1.2.jar  hive-shims-scheduler-3.1.2.jar       kylin-jdbc-2.6.3.jar
datanucleus-core-4.1.17.jar      hive-hbase-handler-3.1.2.jar               hive-llap-server-3.1.2.jar      hive-standalone-metastore-3.1.2.jar  kylin-job-2.6.3.jar
datanucleus-rdbms-4.1.19.jar     hive-hcatalog-core-3.1.2.jar               hive-llap-tez-3.1.2.jar         hive-storage-api-2.7.0.jar           libfb303-0.9.3.jar
hive-accumulo-handler-3.1.2.jar  hive-hcatalog-server-extensions-3.1.2.jar  hive-metastore-3.1.2.jar        hive-streaming-3.1.2.jar             libthrift-0.9.3.jar
hive-beeline-3.1.2.jar           hive-hplsql-3.1.2.jar                      hive-serde-3.1.2.jar            hive-testutils-3.1.2.jar             mysql-connector-java-5.1.48.jar
hive-classification-3.1.2.jar    hive-jdbc-3.1.2.jar                        hive-service-3.1.2.jar          hive-upgrade-acid-3.1.2.jar          mysql-metadata-storage-0.12.0.jar
hive-cli-3.1.2.jar               hive-kryo-registrator-3.1.2.jar            hive-service-rpc-3.1.2.jar      hive-vector-code-gen-3.1.2.jar
hive-common-3.1.2.jar            hive-llap-client-3.1.2.jar                 hive-shims-0.23-3.1.2.jar       jdo-api-3.0.1.jar
hive-contrib-3.1.2.jar           hive-llap-common-3.1.2.jar                 hive-shims-3.1.2.jar            kylin-coprocessor-2.6.3.jar
hive-druid-handler-3.1.2.jar     hive-llap-common-3.1.2-tests.jar           hive-shims-common-3.1.2.jar     kylin-datasource-sdk-2.6.3.jar

org.apache.hadoop.security.AccessControlException: Permission denied: user=…

修改hadoop配置文件

$HADOOP_HOME/etc/hadoop/hdfs-site.xml

添加/修改

<configuration>
....略...
<name>dfs.permissions.enabledname>
  <value>falsevalue>
  <description>
    If "true", enable permission checking in HDFS.
    If "false", permission checking is turned off,
    but all other behavior is unchanged.
    Switching from one parameter value to the other does not change the mode,
    owner or group of files or directories.
  description>
 configuration>

修改core-site.xml

<configuration>
...略...

<property>
    <name>hadoop.proxyuser.root.hostsname>
    <value>*value>
property>
<property>
    <name>hadoop.proxyuser.root.groupsname>
    <value>*value>
property>
configuration>

启动报错 Failed to find metadata store by url: kylin_metadata@hbase

解决办法 为:

  1. 将 文件
$HBASE_HOME/conf/hbase-site.xml

的属性hbase.rootdir改成与

$HADOOP_HOME/etc/hadoop/core-site.xml

中的属性fs.defaultFS一致

  1. 进入zookeeper的bin的zkCli命令行,
rmr /hbase

将/hbase删除,然后重启hbase,Kylin重试

其他坑

  1. Hive启动有建议 把metabase 也要启动起来
nohup hive --service metastore &
  1. Hadoop的JobHistoryServer也要启动,hadoop用start-all.sh启动一般会已经启动了.其他版本自行测试关注.
  2. Hadoop MapReduce也需要配置正确(如果使用Kylin使用hadoop去M/R的话)
  3. 如果出现kylin数据问题,可以尝试删除掉zookeeper中的Kylin的相关数据节点.

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