Apache Kylin : Analytical Data Warehouse for Big Data
Page History
...
在集成两者的过程中, 我们主要修改 SCCreator, 在这里我们主要适配了 Kafka Topic 和 Real-time OLAP 所需的一些额外元数据的创建工作, 这两个任务分别来由 KafkaTopicCreator 和 StreamingMetadataCreator 来负责, 最后由 SCCreator 来统一调度. 对于 Metrics System 则不需要改动.
三. 如何使用
1. 开启 Metrics 信息收集信息收集,跟正常步骤一样
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
kylin.metrics.monitor-enabled=true kylin.metrics.reporter-job-enabled=true kylin.metrics.reporter-query-enabled=true kylin.web.dashboard-enabled=true |
2. 准备 System Cube 所需的 Cube 参数文件
我们需要提供一个 Json Array, Array包含的对象为 MetricsSinkDesc.Array,存成一个文件命名为 sink.json , Array 包含的对象为 MetricsSinkDesc。(shaofengshi:对于kafka还需要kylin.cube.algorithm=INMEM这个参数吗?storage_type=3 是不是就是realtime olap?MetricsSinkDesc 这里好像没有看到有任何关系;这个sink.json 就是完整文件了吧)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
[
{
"sink": "hive",
"storage_type": 2,
"cube_desc_override_properties": {
"kylin.cube.algorithm": "INMEM",
"kylin.cube.max-building-segments": "1"
}
},
{
"sink": "kafka",
"storage_type": 3,
"cube_desc_override_properties": {
"kylin.cube.algorithm": "INMEM",
"kylin.stream.cube.window": 28800,
"kylin.stream.cube.duration": 3600,
"kylin.stream.segment.retention.policy": "fullBuild",
"kylin.cube.max-building-segments": "20"
},
"table_properties": {
"bootstrap.servers": "{YOUR_KAFKA_SERVERS_LIST}"
}
}
] |
3. 运行命令,使用上面的sink.json 生成 System Cube 元数据
Code Block | ||||
---|---|---|---|---|
| ||||
./bin/kylin.sh org.apache.kylin.tool.metrics.systemcube.SCCreator -inputConfig sink.json -output system-cube |
4. 创建 Kafka Topic
在 create在 bin/create_kafka_topic_for_system_cubes.sh 中, 根据需求来修改参数 zookeeper 和 partitions. (shaofengshi: 这个脚本是kylin自带的吧,确认一下)
Code Block | ||||
---|---|---|---|---|
| ||||
sh create_kafka_topic_for_system_cubes.sh |
5. 导入 从本地导入 System Cube 元数据的定义
Code Block | ||||
---|---|---|---|---|
| ||||
sh bin/metastore.sh restore system-cube/ |
6. 更新 kylinMetrics.xml (shaofengshi: 这个文件具体位置在哪里?最好写一下)
将默认的 BlockingReservoir 改为 InstantReservoir, 并且同时修改 ReservoirReporter 和 Sink 的类型 (shaofengshi: 修改成kafka集群?最好明确说一下修改成什么).
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <description>Kylin Metrics Related Configuration (System Cube)</description> <!-- A Reservoir which don't staged metrics message at all, emit it in no time. Maybe good for debug purpose.--> <bean id="instantReservoir" class="org.apache.kylin.metrics.lib.impl.InstantReservoir"/> <bean id="kafkaSink" class="org.apache.kylin.metrics.lib.impl.kafka.KafkaSink"/> <bean id="initMetricsManager" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="org.apache.kylin.metrics.MetricsManager"/> <property name="targetMethod" value="initMetricsManager"/> <property name="arguments"> <list> <!-- Sink of System Cube. --> <ref bean="kafkaSink"/> <!-- Bind properties for each ActiveReservoirReporter. --> <map key-type="org.apache.kylin.metrics.lib.ActiveReservoir" value-type="java.util.List"> <!-- Each ActiveReservoir can have multi ReservoirReporter --> <entry key-ref="instantReservoir"> <list> <bean class="org.apache.kylin.common.util.Pair"> <!-- Implementation of ReservoirReporter--> <property name="first" value="org.apache.kylin.metrics.lib.impl.kafka.KafkaReservoirReporter"/> <!-- Properties for specific ReservoirReporter--> <property name="second"> <props> <prop key="bootstrap.servers">cdh-master:9092,cdh-worker-1:9092,cdh-worker-2:9092</prop> </props> </property> </bean> </list> </entry> </map> </list> </property> </bean> </beans> |
7. 启动 Kylin 并启用 System Cube (shaofengshi: 这里最好提供一个系统截图)
四. 对比
通过将 Sink 设置为 Kafka, 并且使用 Kylin Realtime OLAP 来摄入和构建新的 来流式摄入和构建 System Cube, 我们可以实现:
- Metrics 消息从其产生到其对 Kylin 查询系统可见的延迟, 从之前的小时级别延迟下降为秒级延迟. 这将大大提高 Dashboard 数据展示结果的实时性, 十分有利于问题的及时发现和诊断.
- 避免之前的定时调度 Cube 构建任务的步骤, 可以依赖于 Real-time OLAP 来完成摄入和自动化调度构建任务.
- Kylin 自己消费自己的 Metrics 信息,减少对外依赖,实现功能闭环。
五. 参考链接
http://kylin.apache.org/docs/tutorial/setup_systemcube.html
...
http://kylin.apache.org/blog/2016/08/27/query-metrics-in-kylin/
关于 System Cube 的 JIRA issue : Jira server ASF JIRA serverId 5aa69414-a9e9-3523-82ec-879b028fb15b key KYLIN-2721
关于 Dashboard 的 JIRA issue : Jira server ASF JIRA serverId 5aa69414-a9e9-3523-82ec-879b028fb15b key KYLIN-2726
System Cube 和 Real-time OLAP 的集成的 JIRA issue : Jira server ASF JIRA serverId 5aa69414-a9e9-3523-82ec-879b028fb15b key KYLIN-4371
(shaofengshi: 这里不需要提供system cube和dashboard的jira了,可以直接提供官网的链接,因为是已经发布的功能了;对于这次集成,除了提供jira外,也请告知社区用户此功能预计在哪个版本中发布,大约多久)