软件环境
- 系统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.enabled</name>
<value>false</value>
<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>
...略...
<!-- 为了hive 配置-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
启动报错 Failed to find metadata store by url: kylin_metadata@hbase
解决办法 为:
- 将 文件
$HBASE_HOME/conf/hbase-site.xml
的属性hbase.rootdir改成与
$HADOOP_HOME/etc/hadoop/core-site.xml
中的属性fs.defaultFS一致
- 进入zookeeper的bin的zkCli命令行,
rmr /hbase
将/hbase删除,然后重启hbase,Kylin重试
其他坑
- Hive启动有建议 把metabase 也要启动起来
nohup hive --service metastore &
- Hadoop的JobHistoryServer也要启动,hadoop用start-all.sh启动一般会已经启动了.其他版本自行测试关注.
- Hadoop MapReduce也需要配置正确(如果使用Kylin使用hadoop去M/R的话)
- 如果出现kylin数据问题,可以尝试删除掉zookeeper中的Kylin的相关数据节点.