自 Apache Kylin v2.3.0 起有效
为了更好的支持自我监控,在系统 project 下创建一组系统 Cubes,叫做 “KYLIN_SYSTEM”。现在,这里有五个 Cubes。三个用于查询指标,“METRICS_QUERY”,“METRICS_QUERY_CUBE”,“METRICS_QUERY_RPC”。另外两个是 job 指标,“METRICS_JOB”,“METRICS_JOB_EXCEPTION”。
在 KYLIN_HOME 目录下创建一个配置文件 SCSinkTools.json。
例如:
[
[
"org.apache.kylin.tool.metrics.systemcube.util.HiveSinkTool",
{
"storage_type": 2,
"cube_desc_override_properties": [
"java.util.HashMap",
{
"kylin.cube.algorithm": "INMEM",
"kylin.cube.max-building-segments": "1"
}
]
}
]
]
在 KYLIN_HOME 文件夹下运行一下命令生成相关的 metadata:
./bin/kylin.sh org.apache.kylin.tool.metrics.systemcube.SCCreator \ -inputConfig SCSinkTools.json \ -output <output_forder>
通过这个命令,相关的 metadata 将会生成且其位置位于 <output_forder> 下。细节如下,system_cube 就是我们的 <output_forder>:
运行下列命令生成 hive 源表:
hive -f <output_forder>/create_hive_tables_for_system_cubes.sql
通过这个命令,相关的 hive 表将会被创建。
然后我们需要通过下列命令上传 metadata 到 hbase:
./bin/metastore.sh restore <output_forder>
最终,我们需要在 Kylin web UI 重载 metadata。
然后,一组系统 Cubes 将会被创建在系统 project 下,称为 “KYLIN_SYSTEM”。
当系统 Cube 被创建,我们需要定期 build Cube。
创建一个 shell 脚本其通过调用 org.apache.kylin.tool.job.CubeBuildingCLI 来 build 系统 Cube
例如:
{% highlight Groff markup %} #!/bin/bash
dir=$(dirname ${0}) export KYLIN_HOME=${dir}/../
CUBE=$1 INTERVAL=$2 DELAY=$3 CURRENT_TIME_IN_SECOND=date +%s CURRENT_TIME=$((CURRENT_TIME_IN_SECOND * 1000)) END_TIME=$((CURRENT_TIME-DELAY)) END=$((END_TIME - END_TIME%INTERVAL))
ID=“$END” echo “building for ${CUBE}_${ID}” >> ${KYLIN_HOME}/logs/build_trace.log sh ${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.tool.job.CubeBuildingCLI --cube ${CUBE} --endTime ${END} > ${KYLIN_HOME}/logs/system_cube_${CUBE}_${END}.log 2>&1 &
{% endhighlight %}
然后定期运行这个 shell 脚本
例如,像接下来这样添加一个 cron job:
{% highlight Groff markup %} 0 */2 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_QUERY_QA 3600000 1200000
20 */2 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_QUERY_CUBE_QA 3600000 1200000
40 */4 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_QUERY_RPC_QA 3600000 1200000
30 */4 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_JOB_QA 3600000 1200000
50 */12 * * * sh ${KYLIN_HOME}/bin/system_cube_build.sh KYLIN_HIVE_METRICS_JOB_EXCEPTION_QA 3600000 12000
{% endhighlight %}
对于这些 Cube,admins 能够用四个时间粒度查询。从高级别到低级别,如下:
这个 Cube 用于在最高级别收集查询 metrics。细节如下:
这个 Cube 用于在最低级别收集查询 metrics。对于一个查询,相关的 aggregation 和 filter 能够下推到每一个 rpc 目标服务器。Rpc 目标服务器的健壮性是更好查询性能的基础。细节如下:
这个 Cube 用于在 Cube 级别收集查询 metrics。最重要的是 cuboids 相关的,其为 Cube planner 提供服务。细节如下:
在 Kylin 中,主要有三种类型的 job:
这个 Cube 是用来收集 job 指标。细节如下:
这个 Cube 是用来收集 job exception 指标。细节如下: