yarn状态机库
来源:互联网 发布:思迅天店软件 编辑:程序博客网 时间:2024/05/16 17:52
状态机由一组状态组成,这些状态分为三类 :初始状态、中间状态和最终状态。状态
机从初始状态开始运行,经过一系列中间状态后,到达最终状态并退出。在一个状态机中,
每个状态都可以接收一组特定事件,并根据具体的事件类型转换到另一个状态。当状态机
转换到最终状态时,则退出。
YARN 提供了一个状态机可视化工具graphviz。
源代码位于目录中 org.apache.hadoop.yarn.state 包中。
使用方法
- package com.test.hadoop.state;
- import java.util.UUID;
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.service.CompositeService;
- import org.apache.hadoop.yarn.event.AbstractEvent;
- import org.apache.hadoop.yarn.event.AsyncDispatcher;
- import org.apache.hadoop.yarn.event.EventHandler;
- import org.apache.hadoop.yarn.state.SingleArcTransition;
- import org.apache.hadoop.yarn.state.StateMachine;
- import org.apache.hadoop.yarn.state.StateMachineFactory;
- public class StateTest {
- private static enum TaskEventType {
- T_NEW, T_START, T_SUCCESS
- }
- public enum TaskState {
- NEW, START, SUCCESS
- }
- private static class TaskEvent extends AbstractEvent<TaskEventType> {
- private String taskID; //Task ID
- public TaskEvent(String taskID, TaskEventType type) {
- super(type);
- this.taskID = taskID;
- }
- public String getTaskID() {
- return taskID;
- }
- }
- private static class Task extends CompositeService implements EventHandler<TaskEvent> {
- private AsyncDispatcher dispatcher = new AsyncDispatcher();// 定义一个中央异步调度器
- private final StateMachine<TaskState, TaskEventType, TaskEvent> stateMachine = new StateMachineFactory<Task, TaskState, TaskEventType, TaskEvent>(
- TaskState.NEW)
- .addTransition(TaskState.NEW, TaskState.NEW, TaskEventType.T_NEW, new NewTaskTransition())
- .addTransition(TaskState.NEW, TaskState.START, TaskEventType.T_START, new StartTaskTransition())
- .addTransition(TaskState.START, TaskState.SUCCESS, TaskEventType.T_SUCCESS, new SuccessTaskTransition())
- .installTopology().make(this);
- private String taskID;
- public Task(String taskID, String name) {
- super(name);
- this.taskID = taskID;
- }
- @Override
- public void handle(TaskEvent event) {
- System.out.println("current status:" + stateMachine.getCurrentState());
- stateMachine.doTransition(event.getType(), event);
- System.out.println("current status:" + stateMachine.getCurrentState());
- }
- private class NewTaskTransition implements SingleArcTransition<Task, TaskEvent> {
- @SuppressWarnings("unchecked")
- @Override
- public void transition(Task task, TaskEvent event) {
- System.out.println("Receive T_NEW event of task " + event.getTaskID());
- dispatcher.getEventHandler().handle(new TaskEvent(event.getTaskID(), TaskEventType.T_START));
- }
- }
- private class StartTaskTransition implements SingleArcTransition<Task, TaskEvent> {
- @SuppressWarnings("unchecked")
- @Override
- public void transition(Task task, TaskEvent event) {
- System.out.println("Receive T_START event of task " + event.getTaskID());
- dispatcher.getEventHandler().handle(new TaskEvent(event.getTaskID(), TaskEventType.T_SUCCESS));
- }
- }
- private class SuccessTaskTransition implements SingleArcTransition<Task, TaskEvent> {
- @Override
- public void transition(Task task, TaskEvent event) {
- System.out.println("Receive T_SUCCESS event of task " + event.getTaskID());
- }
- }
- protected void serviceInit(Configuration conf) throws Exception {
- dispatcher.register(TaskEventType.class, this);
- addService(dispatcher);
- super.serviceInit(conf);
- }
- @SuppressWarnings("unchecked")
- protected void serviceStart() throws Exception {
- dispatcher.getEventHandler().handle(new TaskEvent(taskID, TaskEventType.T_NEW));
- super.serviceStart();
- }
- }
- @SuppressWarnings("resource")
- public static void main(String[] args) {
- Task task = new Task(UUID.randomUUID().toString(), "test");
- task.init(new Configuration());
- task.start();
- }
- }
0 0
- yarn状态机库
- YARN 状态机库
- YARN 的状态机库及其使用
- Boost的状态机库教程(1)
- Boost的状态机库教程(2)
- Boost的状态机库教程(3)
- Boost的状态机库教程 补充
- Stateless 3.0——.NET Core上的状态机库
- yarn 状态转换图
- Hadoop YARN状态转换方式
- YARN
- yarn
- yarn
- yarn
- yarn
- YARN
- YARN
- Yarn
- 极验验证码的破解2-图片还原和滑块位置求解
- 好用的php代码片段收集
- Hadoop的Slots概念
- 疑问二
- handler机制
- yarn状态机库
- Java 并发 教程 - 序
- Android 第一次运行程序提示框操作
- hhh,图床
- Android Studio 打包出现not in translated in "zh"错误
- Redis 常用命令学习笔记
- 初步整理响应式笔记01
- jquery02总结
- 使用dialog弹出窗口