Kylin Cube Build流程
来源:互联网 发布:网络老冰棍是什么意思 编辑:程序博客网 时间:2024/05/31 19:16
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;
0 0
- Kylin Cube Build流程
- Kylin Cube Build and Job Monitoring
- Kylin build cube step 2 报错
- Apache Kylin Buid Cube详细流程
- Apache Kylin原理学习之Cube的创建与Build
- Kylin 的cube创建成功 但Build失败
- Kylin build cube step 2 报错(Kylin 安装在slave 节点上)
- Kylin系列-Apache Kylin原理学习之Cube的创建与Build
- 【Kylin】Kylin中的cube构建
- 【Kylin】Kylin中的cube构建
- 【Kylin】Kylin中的cube构建
- Kylin的cube模型
- Kylin中的cube构建
- Kylin Cube设计优化
- Apache Kylin Cube优化
- Kylin中的cube构建
- Kylin实例Cube实验
- kylin cube优化
- 网络传输的加密与解密
- Codeforces #331 Div2 D
- hrbust 1415 Elementary arithmetic【高精度模拟】水题
- 重构以前的代码
- c++知识
- Kylin Cube Build流程
- Leetcode 367. Valid Perfect Square (Medium) (cpp)
- WCF配置
- poj 1019 Number Sequence
- hbase_1 [get_counter 报错]
- 02布局总结
- muduo网络库:单例设计
- flask-session session_id 和key与value的在redis的保存方式
- n a^o7 !