Kylin中Segments overlap的解决办法

原创 2017年11月01日 22:54:36

        我们公司的有初具规模的Hadoop、Spark集群,用来做离线数据统计与分析。今年初引入Kylin来进行成熟业务的与计算,当然用Hbase来存储Kylin的结果数据了。由于业务数据规模增长较快,处理日志的时候越来越慢了,于昨日进行部分硬件升级。升级过程中,直接是将hadoop等集群直接关闭的,但是出了一个严重纰漏,先关闭的HDFS,再关闭的Hbase,导致HBASE中可能有数据没有刷新到磁盘,在今天进行KYLIN增量计算的时候,都失败了,在手动刷新的时候,一直报:Segments overlap错误,几经折腾终于是弄好了,特记录下整个过程已作参考。

(1)错误表现形式

2017-11-01 22:51:08,285 ERROR [http-bio-7070-exec-12] controller.CubeController:296 : Segments overlap: cube_logs_app_event_lodate_eventkey_channel_version_param[201710310000
00_20171101000000] and cube_logs_app_event_lodate_eventkey_channel_version_param[20171031000000_20171101000000]
java.lang.IllegalStateException: Segments overlap: cube_logs_app_event_lodate_eventkey_channel_version_param[20171031000000_20171101000000] and cube_logs_app_event_lodate_eve
ntkey_channel_version_param[20171031000000_20171101000000]
        at org.apache.kylin.cube.CubeValidator.validate(CubeValidator.java:85)
        at org.apache.kylin.cube.CubeManager.updateCubeWithRetry(CubeManager.java:401)
        at org.apache.kylin.cube.CubeManager.updateCube(CubeManager.java:353)
        at org.apache.kylin.cube.CubeManager.appendSegment(CubeManager.java:472)
        at org.apache.kylin.cube.CubeManager.appendSegment(CubeManager.java:459)
        at org.apache.kylin.rest.service.JobService.submitJob(JobService.java:210)
        


(2)处理过程

    最开始是根本摸不着头脑,在KYLIN的WEB控制台的Monitor面板根本看不到任何失败或者处理中的JOB,但是反复多次Rebuild、Merage、Refresh等都是提示一样的错误。接下来就找度娘和Google求助,没有找到有效信息。  最开始想到的就是 删除掉 Segments后再重新BUILD,于是找到了 Rest API接口来操作,命令如下:

curl -X DELETE -H "Content-Type:application/json;charset=UTF-8" -H "Authorization: Basic YWRtaW416S1lMSU4="    http://HOST55:7070/kylin/api/cubes/cube_logs_advert_logdate_advert_id_terminal_type/segs/20171031000000_20171101000000
但是上述失败了,只能删除有效的Segment,并且还只能删除头或尾的短,像我这里的处于不正常状态的Segment(kylin 的metadata存在,但是对应的HBASE中不存在表,存储空间为0)是删除不掉的。

   接下来就考虑是否可以直接删除元数据。

   直接备份元数据:   ./bin/metastore.sh backup (这一步太重要了,否则KYLIN的数据一不小心就没啦)

   检查元数据:./bin/metastore.sh clean

  清除无效数据: ./bin/metastore.sh clean --delete true

  上述操作下来,问题还是照旧,没有任何变化。


  接下来就只能考虑直接手动修改元数据,再恢复了。

  执行下述命令,找到可能的错误点:

  fgrep -r 20171031000000_20171101000000 ./$KYLIN_HOME/meta_backups_OK/meta_2017_11_01_19_30_49

  在文件 $KYLIN_HOME/meta_backups/meta_2017_11_01_19_30_49/cube]$vi cube_logs_advert_logdate_advert_id_terminal_type.json 的末尾找到如下数据,直接删除掉后再保存。

  

, {
    "uuid" : "32eb368f-d75f-4ea8-951f-0ace62958215",
    "name" : "20171031000000_20171101000000",
    "storage_location_identifier" : "KYLIN_2AOZN2GZX3",
    "date_range_start" : 1509408000000,
    "date_range_end" : 1509494400000,
    "source_offset_start" : 0,
    "source_offset_end" : 0,
    "status" : "NEW",
    "size_kb" : 0,
    "input_records" : 0,
    "input_records_size" : 0,
    "last_build_time" : 0,
    "last_build_job_id" : null,
    "create_time_utc" : 1509492601706,
    "cuboid_shard_nums" : { },
    "total_shards" : 0,
    "blackout_cuboids" : [ ],
    "binary_signature" : null,
    "dictionaries" : null,
    "snapshots" : null,
    "rowkey_stats" : [ ]
  } 

 接下来就是清理掉KYLIN的元数据,再用修改后的元数据恢复。

  ./bin/metastore.sh reset

  ./bin/metastore.sh restore $KYLIN_HOME/meta_backups/meta_xxxx_xx_xx_xx_xx_xx

  至此问题才得以解决,KYLIN又可以欢快的Rebuild昨天的问题数据了。



《浅谈Apache Kylin二次开发》

1、生产环境 Apache Kylin-1.5.3 for CDH CDH 5.7 由于工作的需要,仅仅在页面操作Apache Kylin,其实时性以及所要花费的人力成本远远达不到预期的目的。 2...
  • BlackEnn
  • BlackEnn
  • 2016年09月18日 11:05
  • 7357

关于Kylin结果缓存的思考

由来Apache Kylin定位是大数据量的秒级SQL查询引擎,原理是通过预计算所有可能的维度组合存储在Hbase中,查询时解析SQL获取维度和度量信息,然后再从hbase中扫描获取数据返回,个人认为...
  • yu616568
  • yu616568
  • 2016年07月10日 12:27
  • 6861

Rest接口操作Kylin

由于官方网站的介绍中,涉及的Rest接口较少,现通过官方提供在github上的源码包,使用一些其他实用的Rest接口。 找到Kylin Rest源码:https://github.com/a...
  • snail_qing
  • snail_qing
  • 2017年02月06日 09:26
  • 1128

Struts2低版本安全漏洞及解决办法

  • 2018年01月12日 16:43
  • 1KB
  • 下载

Myeclipse导出war包出错解决办法

  • 2017年11月05日 18:08
  • 43KB
  • 下载

myeclipse 2017 CI6(包括CI6以下版本)完美破解文件附破解教程及破解失败解决办法

  • 2017年09月16日 14:59
  • 3.9MB
  • 下载

移动加密软件,忘记密码解决办法.rar

  • 2017年10月26日 13:08
  • 900KB
  • 下载

Android6.0权限管理解决办法demo实例

  • 2017年09月30日 10:22
  • 405KB
  • 下载

一、 Vs2015 Ef 连接Oracle 出现OracleInternal.Common.ConfigBaseClass 的解决办法

  • 2017年09月20日 11:14
  • 88KB
  • 下载

系统蓝屏错码解决办法

  • 2016年07月28日 09:13
  • 36KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kylin中Segments overlap的解决办法
举报原因:
原因补充:

(最多只允许输入30个字)