kylin元数据初探

kylin元数据初探,第1张

kylin元数据初探

目前kylin4.0版本已经出现了一段时间,4.0版本跟之前版本差异较大。但是由于其存储parquet文件以及默认spark引擎的改动,使其在处理大数据量时有了较高的性能提升,kylin官网有过测试,感兴趣的可以看一下。

kylin元数据存储了模型、cube、segment等信息,在kylin改造以及数据恢复方面起到很重要的作用,后面公司可能会升级到kylin4,但是对于kylin3的元数据还没有一个全面的认识,所以根据工作和个人理解,准备写篇文章从新认识下kylin的元数据。下面以kylin3.1.0版本为例,主要以问题的形式进行记录。

1、kylin元数据存储在哪,名称是什么?

查看kylin的配置文件kylin.properties可以看到元数据的配置信息:

因此,kylin元数据存储在hbase中,且表名称为kylin_metadata,即kylin初始安装完,会在hbase上生成一个kylin_metadata表用于存储kylin的元数据信息。。下面是hbase中kylin_metadata的信息。

可以看到初始状态下kylin元数据只有一些用户信息 

2、kylin元数据以何种形式存储,如何查看

Kylin使用resource root path + resource name + resource suffix作为Hbase中的rowkey来存储元数据,且以二进制字节的格式将元数据存储在Hbase中。

 下面我们通过运行kylin自带的sample.sh命令来生成一些样例模型和cube。命令运行结束重启下kylin或者重新加载下元数据即可看到如下页面:

此时再通过scan命令可以看到元数据中多了一些下面的信息(内容太多,只截取了部分):
 这样看是不是感觉很不方便,此时可以退出hbase shell状态,使用kylin的命令来进行查看。如下:

./bin/metastore.sh cat /model_desc/kylin_sales_model.json

 结果如下(其实会打印很多日志,我这里直接截取的核心):

{
  "uuid" : "0928468a-9fab-4185-9a14-6f2e7c74823f",
  "name" : "kylin_sales_model",
  "is_draft" : false,
  "description" : "",
  "fact_table" : "DEFAULT.KYLIN_SALES",
  "lookups" : [ {
    "table" : "DEFAULT.KYLIN_CAL_DT",
    "kind" : "LOOKUP",
    "alias" : "KYLIN_CAL_DT",
    "join" : {
      "type" : "inner",
      "primary_key" : [ "KYLIN_CAL_DT.CAL_DT" ],
      "foreign_key" : [ "KYLIN_SALES.PART_DT" ]
    }
  }, {
    "table" : "DEFAULT.KYLIN_CATEGORY_GROUPINGS",
    "kind" : "LOOKUP",
    "alias" : "KYLIN_CATEGORY_GROUPINGS",
    "join" : {
      "type" : "inner",
      "primary_key" : [ "KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID", "KYLIN_CATEGORY_GROUPINGS.SITE_ID" ],
      "foreign_key" : [ "KYLIN_SALES.LEAF_CATEG_ID", "KYLIN_SALES.LSTG_SITE_ID" ]
    }
  }, {
    "table" : "DEFAULT.KYLIN_ACCOUNT",
    "alias" : "BUYER_ACCOUNT",
    "kind" : "LOOKUP",
    "join" : {
      "type" : "inner",
      "primary_key" : [ "BUYER_ACCOUNT.ACCOUNT_ID" ],
      "foreign_key" : [ "KYLIN_SALES.BUYER_ID" ]
    }
  }, {
    "table" : "DEFAULT.KYLIN_ACCOUNT",
    "alias" : "SELLER_ACCOUNT",
    "kind" : "LOOKUP",
    "join" : {
      "type" : "inner",
      "primary_key" : [ "SELLER_ACCOUNT.ACCOUNT_ID" ],
      "foreign_key" : [ "KYLIN_SALES.SELLER_ID" ]
    }
  }, {
    "table" : "DEFAULT.KYLIN_COUNTRY",
    "alias" : "BUYER_COUNTRY",
    "kind" : "LOOKUP",
    "join" : {
      "type" : "inner",
      "primary_key" : [ "BUYER_COUNTRY.COUNTRY" ],
      "foreign_key" : [ "BUYER_ACCOUNT.ACCOUNT_COUNTRY" ]
    }
  }, {
    "table" : "DEFAULT.KYLIN_COUNTRY",
    "alias" : "SELLER_COUNTRY",
    "kind" : "LOOKUP",
    "join" : {
      "type" : "inner",
      "primary_key" : [ "SELLER_COUNTRY.COUNTRY" ],
      "foreign_key" : [ "SELLER_ACCOUNT.ACCOUNT_COUNTRY" ]
    }
  }],
  "dimensions" : [ {
    "table" : "KYLIN_SALES",
    "columns" : [ "TRANS_ID", "SELLER_ID", "BUYER_ID", "PART_DT", "LEAF_CATEG_ID", "LSTG_FORMAT_NAME", "LSTG_SITE_ID", "OPS_USER_ID", "OPS_REGION" ]
  }, {
    "table" : "KYLIN_CAL_DT",
    "columns" : [ "CAL_DT", "WEEK_BEG_DT", "MONTH_BEG_DT", "YEAR_BEG_DT" ]
  }, {
    "table" : "KYLIN_CATEGORY_GROUPINGS",
    "columns" : [ "USER_DEFINED_FIELD1", "USER_DEFINED_FIELD3", "meta_CATEG_NAME", "CATEG_LVL2_NAME", "CATEG_LVL3_NAME", "LEAF_CATEG_ID", "SITE_ID" ]
  }, {
    "table" : "BUYER_ACCOUNT",
    "columns" : [ "ACCOUNT_ID", "ACCOUNT_BUYER_LEVEL", "ACCOUNT_SELLER_LEVEL", "ACCOUNT_COUNTRY", "ACCOUNT_CONTACT" ]
  }, {
    "table" : "SELLER_ACCOUNT",
    "columns" : [ "ACCOUNT_ID", "ACCOUNT_BUYER_LEVEL", "ACCOUNT_SELLER_LEVEL", "ACCOUNT_COUNTRY", "ACCOUNT_CONTACT" ]
  }, {
    "table" : "BUYER_COUNTRY",
    "columns" : [ "COUNTRY", "NAME" ]
  }, {
    "table" : "SELLER_COUNTRY",
    "columns" : [ "COUNTRY", "NAME" ]
  } ],
  "metrics": [
    "KYLIN_SALES.PRICE",
    "KYLIN_SALES.ITEM_COUNT"
  ],
  "last_modified" : 1422435345362,
  "filter_condition" : "",
  "partition_desc" : {
    "partition_date_column" : "KYLIN_SALES.PART_DT",
    "partition_time_column" : null,
    "partition_date_start" : 1325376000000,
    "partition_date_format" : "yyyy-MM-dd",
    "partition_time_format" : "HH:mm:ss",
    "partition_type" : "APPEND",
    "partition_condition_builder" : "org.apache.kylin.metadata.model.PartitionDesc$DefaultPartitionConditionBuilder"
  },
  "capacity" : "MEDIUM"
}

可以看到通过kylin自带的metastore.sh命令可以较为直观的查看kylin存储在hbase中的信息。

注:

官网给出查看元数据的方式是先通过list查看有哪些元数据:
        ./bin/metastore.sh list /path
因为元数据的存储有层次关系,如果一开始不知道想看那个元数据,可以直接用./bin/metastore.sh list /查看根目录下有哪些内容,然后在一级级展示,遇到自己想看的内容,就再通过cat命令打开,如查看/model_desc/kylin_sales_model.json元数据:
        ./bin/metastore.sh cat /model_desc/kylin_sales_model.json

3、构建segments,查看元信息表中对应内容

构建之后页面上可以看到的关键信息为

 于此可以简单得出一个结论:每一次的构建,即一个segment对应一张表,后期segment的融合即是hbase表的融合


4、备份元数据与恢复

备份元数据真的很重要,特别是生产环境中,中间有两次因为kylin改造以及平台升级导致kylin元数据被误删,最后都是通过元数据恢复。所以这个真的很重要。两种备份方式如下:

./bin/metastore.sh backup  备份所有元数据(推荐)

./bin/metastore.sh fetch /path  备份指定路径下的元数据

元数据恢复如下:

./bin/metastore.sh reset    重置元数据,即清空除用户信息外的所有元数据(慎用)

./bin/metastore.sh restore /*/备份文件  重置元数据后通过restore命令从备份文件中恢复元数据

参考:Apache Kylin | 大数据分析型数据仓库

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5700416.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存