Apache Kylin 1.0中的混合模型

Apache Kylin v1.0引入了一个新的实现“混合模型”(也称为“动态模型”); 这篇文章介绍了这个概念以及如何创建一个混合实例。

问题

对于传入的SQL查询,Kylin选择一个(并且只有一个)实现来提供查询; 在“混合”之前,只有一种类型的实现向用户开放:Cube。也就是说,只有1个Cube被选中来回答查询;

现在我们来看一个示例案例。假设用户有一个名为“Cube_V1”的多维数据集,它已经建立了几个月; 现在,用户希望添加新的维度或指标以满足其业务需求; 于是他创建了一个名为“Cube_V2”的新立方体;

由于某些原因用户想要保留“Cube_V1”,并且期望从“Cube_V1”的结束日期开始构建“Cube_V2”; 可能的原因包括:

  • 历史源数据已从Hadoop中删除,从一开始就无法构建“Cube_V2”;
  • 立方体很大,重建需要很长时间;
  • 新维度/指标仅在某一天有效或应用;
  • 当查询使用新的维度/指标时,用户感觉过去的结果为空。

对于针对通用维度/指标的查询,用户期望扫描“Cube_V1”和“Cube_V2”以获得完整的结果集; 在这样的背景下,引入“混合模型”来解决这个问题。

混合模型

混合模型是一个新的实现,它是一个或多个其他实现(立方体)的组合; 见下图。

混合模型没有其真正的存储空间; 它就像在表格上的虚拟数据库视图一样; 混合实例充当委托者,将请求转发给其子实现,然后在从实例返回时合并结果。

如何添加混合实例

到目前为止,没有用于创建/编辑混合模型的UI界面; 如果有需要,您需要手动编辑Kylin元数据;

第1步:做一个kylin元数据存储的备份

export KYLIN_HOME="/path/to/kylin"

$KYLIN_HOME/bin/metastore.sh backup

这将创建一个备份文件夹,假定它是$ KYLIN_HOME / metadata_backup / 2015-09-25 /

第2步:创建子文件夹“hybrid”

mkdir -p $KYLIN_HOME/metadata_backup/2015-09-25/hybrid

第3步:创建混合实例json文件:

vi $KYLIN_HOME/metadata_backup/2015-09-25/hybrid/my_hybrid.json

像下面这样的输入内容,“名称”和“uuid”需要是唯一的:

{
  "uuid": "9iiu8590-64b6-4367-8fb5-7500eb95fd9c",
  "name": "my_hybrid",
  "realizations": [
    {
           "type": "CUBE",
           "realization": "Cube_V1"
    },
    {
            "type": "CUBE",
            "realization": "Cube_V2"
    }
  ]
}

这里“Cube_V1”和“Cube_V2”是你想合并的Cube名称。

第4步:将混合实例添加到项目

使用文本编辑器打开项目json文件(例如项目“default”):

vi $KYLIN_HOME/metadata_backup/2015-09-25/project/default.json

在“realizations”数组中,添加一个如下所示的条目,类型需要是“HYBRID”,“实现”是混合实例的名称:

    {
      "name": "my_hybrid",
      "type": "HYBRID",
      "realization": "my_hybrid"
    }

第5步:上传元数据:

  $KYLIN_HOME/bin/metastore.sh restore $KYLIN_HOME/metadata_backup/2015-09-25/

请注意,“restore”操作会将元数据从本地上传到远程hbase store,这可能会覆盖远程中的更改; 因此,请在此期间没有从Kylin服务器更改元数据(无 build job,无Cube 创建/更新等)时执行此操作,或者在运行“restore”之前仅将已更改的文件提取到空的本地文件夹。

第6步:重新加载元数据

重新启动Kylin服务器,或在Kylin Web UI的“管理”标签中点击“重新加载元数据”以加载更改; 理想情况下,混合动力车将开始工作; 你可以通过编写一些SQL来做一些验证。

常问问题:

问题1:混合模型何时被调用来回答客户端SQL查询?
如果混合模型中存在一个立方体可以回答查询,则将选择混合体;

问题2:混合模型如何回答一个查询?
Hybrid将把查询委托给它的每个子实现; 如果一个子多维数据集能够执行此查询(匹配所有维度/指标),它会将结果返回到混合模式,否则将被跳过; 最后,查询引擎会在返回给用户之前聚合来自混合的数据;

问题3:混合模型检查日期/时间重复吗?
不检查; 这个需要用户确保混合中的立方体不具有重复的日期/时间范围; 例如,“Cube_V1”在2015-9-20(不含)结束,“Cube_V2”应从2015-9-20(含)开始;

问题4:混合模型会限制具有相同数据模型的子立方体吗?
不会; 为了提供灵活性,Hybrid不检查子立方体的事实表/查找表和连接条件是否相同; 但用户应该明白他们在做什么以避免意外的行为。

问题5:混合模型中是否可以包含子hybrid ?
不能; 没有这个必要; 到目前为止,假设所有的Child都是Cube;

问题6:我可以使用混合加入多个立方体吗?
不能; 混合模型的目的是连接历史Cube和新Cube,类似“union”而不是“join”;

问题7:如果子立方体被禁用,它是否会通过混合动力进行扫描?
不会; 混合实例会在发送查询之前检查子实现的状态; 所以如果立方体被禁用,它将不会被扫描。

注意:

1. 必须在构建好新的cube后备份元数据,从而进行修改恢复
2. 修改完元数据后必须重启kylin集群或者重新载入元数据,否则报错(Overwriting conflict /project/***.json, expect old TS 1525758479256, but it is 152576031000)
3. 若修改视图表(如添加字段),修改完毕后要reload一下
4. Purge Cube 后Hbase中存储的计算结果不会被删除,Hbase可查
5. 新Cube不能build旧Cube已经build过的相同日期的数据,若修复历史数据,需先删除旧的Segment
6. 若想修改字段名,必须Perge Cube,Hybrid 无法满足需求
7. 新增字段在build完毕后Kylin表才会更新字段信息

清除Hbase无用数据表

当我们对cube执行purge/drop/merge时,一些HBase的表可能会保留在HBase中,而这些表不再被查询,尽管Kylin会做一些自动的垃圾回收,但是它可能不会覆盖所有方面,所以需要我们能够每隔一段时间做一些离线存储的清理工作。具体步骤如下:

1. 检查哪些资源需要被清理,这个操作不会删除任何内容:

${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.storage.hbase.util.StorageCleanupJob --delete false

2. 根据上面的输出结果,挑选一两个资源看看是否是不再需要的。接着,在上面的命令基础上添加“–delete true”选项,开始执行清理操作,命令执行完成后,中间的HDFS文和盒HTables表就被删除了。

(完)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容