开源大数据平台管理系统Ambari的动作执行流程
2023-12-25 22:00:41 0 举报
Ambari是一个开源的大数据平台管理系统,用于简化大规模Hadoop集群的安装、管理和监控。它的动作执行流程包括以下步骤: 1. 用户提交:用户通过Ambari的Web UI或REST API提交一个动作请求。 2. 任务创建:Ambari接收到动作请求后,会创建一个任务实例,并分配一个任务ID。 3. 任务分配:Ambari根据集群的拓扑结构和负载情况,将任务分配到合适的节点上。 4. 任务执行:任务被分配到节点上后,Ambari会通知节点上的代理节点执行相应的动作。 5. 任务监控:Ambari会实时监控任务的执行情况,确保任务能够成功完成。 6. 结果汇报:任务完成后,节点代理会将执行结果汇报给Ambari,Ambari将结果记录在任务实例中。 7. 任务完成:用户可通过Ambari的Web UI或REST API查看任务的执行情况,确认任务已完成。 Ambari的动作执行流程保证了大数据平台的高效、稳定运行,降低了运维成本,提高了集群的管理效率。
作者其他创作
大纲/内容
ActionScheduler.java
ActionManager.java
19. updateResource
32. doWork
AlertExecutionCommand
ExecutionCommand
AgentCommandType
EXECUTEION_COMMANDBACKGROUND_EXECUTION_COMMANDSTATUS_COMMANDCANCEL_COMMANDREGISTRATION_COMMANDALERT_DEFINITION_COMMANDALERT_EXECUTION_COMMAND
StatusCommand
RegistrationCommand
PUT /api/v1/clusters/ngsoc/hosts/monitor.zsy.bjyc.qianxin-inc.cn/host_components/CLUSTER_CLIENT
浏览器
RoleCommand: INSTALL UNINSTALL START RESTART EXECUTE ABORT UPGRADE SERVICE_CHECK CUSTOM_COMMAND ACTIONEXECUTE
这部分的核心是如何根据资源找到对应的Provider
29. am.sendAction
将信息保存到数据库中唤醒ActionScheduler线程开始干活,线程从数据库获取到动作信息进行处理后丢给ActionQueue,ActionQueue是单例,下一次心跳中从ActionQueue中拿到要执行的命令随着心跳发送给Agent
12. handleRequest
18. register and get
AlertDefinitionCommand
24. doStageCreation
RequestStageContainer.java
Request.java
2. aq.dequeueAll
HeartBeatHandler.java
Controller.py
9. createRequest
23. addStages
XxxService.java
PersistenceManager.java
{ \"RequestInfo\":{ \"context\":\"停止 Cluster Client\
16. ensureResourceProvider
针对Create和Update,通常会涉及到状态变更和动作执行,这部分就是调度动作执行,将各种命令封装后发送到Agent,命令类型和状态类型可以看上边的小部分
10. request.process
ClusterController.java
6. new QueryImpl
1. 接口调用
3. 遍历对应机器的所有命令封装后,随心跳一起返回给Agent
33. aq.enqueue
ResourceInstanceFactory.java
13. persist
30. db.persistActions
State: INIT INSTALLING INSTALL_FAILED INSTALLED STARTING STARTED STOPPING UNINSTALLING UNINSTALLED WIPING_OUT UPGRADEING DISABLED UNKNOWN
6. process_command
AgentCommand
AgentCommandType commandType
5. getResourceDefinition
4. createResource
RequestFactory.java
15. mc.updateResource
17. getResourceProvider
2. createXxxResource
1. sendCommands
28. requestStages.persist
26. 为execCmd添加上下文
ActionQueue.py
11. getRequestHandler
7. handleRequest
XxxResourceProvider.java
31. scheduler.awake
25. createHostAction
4. self.heartbeatWithServer
21. updateHostComponent
14. pm.update
22. 一系列更新、校验动作
ActionQueue.java
7. execute_command
5. self.addToQueue
BMManagementController.java
3. createResource
这段流程是BM处理所有请求的标准流程,入口是XxxService,处理逻辑是XxxxResourceProvider, 按增删查改进行分别处理各种资源,在BM中一切皆Resource,都可对Resource进行Create Delete Update Get。对资源查询支持带表达式查询,就是Predicate
8. handleRequest
BaseService.java
20. doUpdateResource
ProviderModule.java
27. notifyUpdate
0 条评论
下一页