Kylin Cube Build流程
2016-08-23 19:04
639 查看
Kylin Cube Build流程
Cube的三种构建类型
在CubeBuildTypeEnum中定义了三种类型的build job:public enum CubeBuildTypeEnum { BUILD, MERGE, REFRESH }
三种类型的job的提交入口都在
jobService.submitJob()
该函数共有6个参数:
- CubeInstance cube
- long startDate
- long endDate
- CubeBuildTypeEnum buildType
- boolean forceMergeEmptySeg
- String submitter
例行检查
checkCubeDescSignature(cube); checkNoRunningJob(cube);
检查cube的md5签名
检查该cube是否有处于READY、RUNNING或ERROR状态的job
这也印证了我们在操作中build cube的时候,不能有READY、RUNNING或ERROR这几种状态的job存在,如果有,须先discard掉
创建job
在创建job之前,需要先实例化segment:BUILD类型:
getCubeManager().appendSegments(cube, endDate)
MERGE类型:
getCubeManager().mergeSegments(cube, startDate, endDate, forceMergeEmptySeg)
REFRESH类型: 需要先检查该segment是否存在,存在了话才能够进行实例化
getCubeManager().refreshSegment(cube, startDate, endDate)
利用简单工厂模式创建job
BUILD、REFRESH的构建方法是
EngineFactory.createBatchCubingJob()
MERGE的构建方法是
EngineFactory.createBatchMergeJob()
在这个过程中可以选择作业的引擎,目前Kylin支持MapReduce、MapReduceV2(不知道是不是Yarn)和Spark三种计算引擎
引擎由前端进行设置,默认使用MapReduceV2
不同的引擎调用不同的
createBatchCubingJob()和
createBatchMergeJob()实现
根据默认引擎,开始执行build过程
在MRBatchCubingEngine2中:
createBatchCubingJob()方法执行
new BatchCubingJobBuilder2(newSegment, submitter).build();
createBatchMergeJob()方法执行
new BatchMergeJobBuilder2(mergeSegment, submitter).build();
创建JobInstance实例
JobInstance是某次构建过程执行的结果,用于页面展示以JSON的格式存储某些元数据以及执行的每个步骤
这些元数据的定义在JobInstance.java中定义如下:
@JsonProperty("name") private String name; @JsonProperty("type") private CubeBuildTypeEnum type; @JsonProperty("duration") private long duration; @JsonProperty("related_cube") private String relatedCube; @JsonProperty("related_segment") private String relatedSegment; @JsonProperty("exec_start_time") private long execStartTime; @JsonProperty("exec_end_time") private long execEndTime; @JsonProperty("mr_waiting") private long mrWaiting = 0; @JsonManagedReference @JsonProperty("steps") private List<JobStep> steps; @JsonProperty("submitter") private String submitter; @JsonProperty("job_status") private JobStatusEnum status;
相关文章推荐
- Kylin build cube step 2 报错
- HBase - KYlin build cube时出现问题的汇总
- 解决kylin build cube第一步报错:java.lang.NullPointerException
- Kylin系列-Apache Kylin原理学习之Cube的创建与Build
- Apache Kylin原理学习之Cube的创建与Build
- kylin1.6.0构建build测试cube出错
- Kylin 的cube创建成功 但Build失败
- Kylin Cube Build and Job Monitoring
- Kylin build cube step 2 报错(Kylin 安装在slave 节点上)
- OLAP 玩转KYLIN 步十二 官方案列实战之build cube
- Apache Kylin Buid Cube详细流程
- Apache Kylin Buid Cube详细流程
- Apache Kylin Buid Cube详细流程2
- apache-kylin完整安装流程
- Android源码阅读与理解(二):Android系统Build流程详解
- Kylin使用之创建Cube和高级设置
- Apache Kylin的Cube分析
- kylin中的cube构建详解
- Kylin中的Cube构建
- kylin cube segment合并