ApacheKylin-3.1.0-Windows本地开发环境测试

排查yarn详细日志

yarn logs -applicationId application_1590551653017_0033

 

准备数据

准备hive表

Load hive table 操作

创建Model和Cube

 

Cube Build构建

Build操作

 

问题列表

基于MR Build Cube六大步骤,第一个大步骤“Create Intermediate Flat Hive Table”时就报错了。

 

第一个问题

bash: hive: command not found

解决方案:

修改java类

kylin-core-common/src/main/java/org/apache/kylin/common/util/HiveCmdBuilder.java

添加一行

buf.append("source /etc/profile \n");

 

第二个问题

报如下错误:

Permission denied

解决方案:

su hdfs

hadoop fs -chown -R root:supergroup /tmp/hadoop-yarn

要切换到hdfs用户下,才能给root用户赋权。

权限问题二

预先在hdfs上创建kylin的工作目录。

工作目录在哪里配?

在hadoop环境上,用hdfs用户创建,并将权限修改为root。

若不创建kylin在hdfs上的 目录,会报如下权限问题。因为当前环境root不是hdfs环境的超级管理员,没有创建hdfs目录的权限。

Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x

因为kylin要在hdfs上创建目录,存放数据。若有权限比较复杂的情况,最好预先创建好。否则就会在根目录“/”下,创建KYLIN配置文件上配置的目录。

手工建好文件夹后,还要赋权给root用户。

如上,权限问题二可以解决。

 

第三个问题

java.io.FileNotFoundException:hdfs://bimaster:8020/hdp/apps/2.7.1/mapreduce/mapreduce.tar.gz

mapreduce.tar.gz没有地方可以下载,要另外想办法。

2.7.1是哪里来的?来源配置,设置当前hadoop version为2.7.1

解决方案:

You should find mapreduce.tar.gz in your hdp env and put it to the hdfs path。可是当前没有mapreduce.tar.gz的文件包。

把mapreduce.tar.gz包 put 到hdfs上。

hadoop fs -put mapreduce.tar.gz /hdp/apps/2.7.1/mapreduce

 

第四个问题

在 Kylin_Fact_Distinct_Columns 这一步出错了

java.lang.ClassNotFoundException: Class org.apache.kylin.engine.mr.steps.FactDistinctColumnsMapper not found

解决方案:

在本地开发环境下,在kylin.properties 中设置了相关lib的路径,jar要跟版本对应。Jar包在KYLIN_HOME/lib下载。

如下我的配置地址:

kylin.engine.mr.lib-dir=D:/yss_bi/tools/libs

 

第五个问题

Error: java.lang.RuntimeException: native snappy library not available: this version of libhadoop was built without snappy support.

解决方案:

检查xml配置,把所有用到压缩的地方先改为false。

可以用snappy 、compress关键字查找。

kylin_job_conf.xml 改了两个false

kylin_job_conf_inmem.xml 改了两个false

kylin_hive_conf.xml 一个false

 

第六个问题

java.io.IOException: java.lang.IllegalArgumentException: java.net.UnknownHostException: master

解决方案:

修改本地hdfs-site.xml配置文件

因为大数据平台,不仅对HDFS做了HA机制,也设置了nameservices的配置,所以将大数据平台hdfs-site.xml的配置文件中关于nameservices的配置拷贝到本地hdfs-site.xml文件里即可解决。看下图进行对比。

 

第七个问题

common.HadoopJobStatusChecker:58 : error check status

java.io.IOException: Job status not available

解决方案:

修改Hadoop集群的mapred-site.xml配置

注意:是Hadoop集群的,不是本地的。

修改内容如下:

提示一下:在问题二时,已经将 /tmp/hadoop-yarn/staging  chown给root用户了。

修改内容参考

   <property>

     <name>mapreduce.jobhistory.address</name>

     <value>master.hadoop:10020</value>

  </property>

  <property>

     <name>yarn.app.mapreduce.am.staging-dir</name>

     <value>/tmp/hadoop-yarn/staging</value>

  </property>

  <property>

     <name>mapreduce.jobhistory.intermediate-done-dir</name>

     <value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>

  </property>

  <property>

     <name>mapreduce.jobhistory.done-dir</name>

     <value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>

  </property>

第七个问题补充

之后又遇到如上Job status not available 

也按如上进行了修改。任然为解决。后来发现是本地mapred-site.xml jobhistory.address未配置正确。

注意:是本地mapred-site.xml 配置文件

当前集群 jobhistory 服务是配置在“master232”主机上。

这个配置应该不影响,最好也修改一下。

 

第八个问题

也可能该问题不会出现。

UnknownProtocolException: No registered coprocessor service found for SecureBulkLoadService in region KYLIN_WIN310_HHW0O61JFH

说是要开启Regionserver SecureBulkLoad的权限。

咱们来试一下。

解决方案如下:

第一步:

增加配置到hbase-site.xml

<property>

  <name>hbase.bulkload.staging.dir</name>

  <value>/hbase/hbase-staging</value>

</property>

<property>

  <name>hbase.coprocessor.region.classes</name>

  <value>org.apache.hadoop.hbase.security.token.TokenProvider,

org.apache.hadoop.hbase.security.access.AccessController,org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint</value>

</property>

 

第二步:

设置staging dir权限

我当前都是root权限,所以不用操作。

 

第三步:

同步到hbase的各个节点上

 

第四步:

重启Regionserver

每个Regionserver都要重启。

./hbase-daemon.sh start/stop/restart regionserver

 

第九个问题

Caused by: java.lang.IllegalArgumentException: Wrong FS: hdfs://master:8020/kylin_win310/kylin_metadata_hdfs/kylin-faa7bb9a-dfd9-c65d-ffa6-8d7229aae3fa/w310_cube/hfile/F1/40274748a6b644d9b79a750f5eb81f3f, expected: hdfs://master

解决方案:

修改本地core-site.xml

 

第十个问题

Failure task Diagnostics:

Error: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.io.hfile.HFileWriterImpl

解决方案:

hbase-server-2.2.2.jar 拷贝到本地

下图见:配置文件/ jar存放地址 / jar包

 

第十一个问题

Failure task Diagnostics:

Error: org.apache.hadoop.hbase.regionserver.StoreFile.getUniqueFile(Lorg/apache/hadoop/fs/FileSystem;Lorg/apache/hadoop/fs/Path;)Lorg/apache/hadoop/fs/Path;

java.lang.NoSuchMethodError: org.apache.hadoop.hbase.regionserver.StoreFile.getUniqueFile(Lorg/apache/hadoop/fs/FileSystem;Lorg/apache/hadoop/fs/Path;)Lorg/apache/hadoop/fs/Path;

hbase-server-1.1.1.jar

 

第十二个问题

超多classNoFound问题

Error: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.PrivateCellUtil

hbase-common-2.2.2.jar

Error: java.lang.ClassNotFoundException: org.apache.hbase.thirdparty.com.google.common.base.Function

hbase-shaded-miscellaneous-2.2.1.jar

解决如上问题后,Cube Build 100%。

 

Build 状态

Cube状态

 

Insight 查询

Sql:

select "DAY",regionname, cityname, sum(pv), count(distinct cookieid)

from WEB_ACCESS_FACT_TBL a

inner join CITY_TBL b

on a.cityid = b.cityid

inner join REGION_TBL c

on c.regionid = a.regionid

group by "DAY", regionname, cityname

 

提交查询,报错:

org.apache.kylin.rest.exception.InternalErrorException: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: org.apache.hadoop.hbase.exceptions.UnknownProtocolException: No registered coprocessor service found for CubeVisitService in region KYLIN_WIN310_6NNIMY2H02,,1596165101848.cb0c14501500411dfed5471d18e0de1c.

与如上的No registered coprocessor不相同,现在是CubeVisitService。

 

经分析,与HBase的协处理器有关。请按如下方式进行解决

第一步:

put kylin-coprocessor-3.1.0-SNAPSHOT.jar包到hadoop上

 

第二步:

在hbase shell下执行hbase相关操作。

disable 'KYLIN_WIN310_6NNIMY2H02'

alter 'KYLIN_WIN310_6NNIMY2H02','coprocessor'=>'/kylin_win310/kylin_metadata_root/coprocessor/kylin-coprocessor-3.1.0-SNAPSHOT.jar|org.apache.kylin.storage.hbase.cube.v2.coprocessor.endpoint.CubeVisitService|'

enable 'KYLIN_WIN310_6NNIMY2H02'

如上重新enable hbase的表。

补充HBase上的表

 

第三步:

Insight查询测试。

经处理,查询成功!

 

Deadline补充

若经过如上修改,查询失败。报错如下:

org.apache.hadoop.hbase.DoNotRetryIOException: Coprocessor passed deadline! Maybe server is overloaded

原因是hbase查询超时,解决方案:

修改本地hbase-site.xml,加大hbase.rpc.timeout的值

默认值才9000,重启kylin服务,查询即可成功!

 

Kylin3.1.1新问题

问题描述:Load HFile to HBase Table失败

经排查是hbase的权限问题。

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied. user=hbase is not the owner of inode=/hbase1/staging/root__KYLIN_YFH_6Y5S92Y77D__tqgfdc0ai1adplf0ep8svm2ecsmafi1it42ekq29jnqaetoti5g5fteehgnc0voe/F1/543a5a45b4854feb909c1c6f4132d90a

Yarn上卡在这里

解决方案:

在eclipse客户端,修改hbase-site.xml,添加always.copy.files配置

内容:

<property>

      <name>always.copy.files</name>

      <value>true</value>

</property>

原因:

当前参数是客户端参数,运行kylin程序是要把hbase配置加载到类路径的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值