ambari agent 架构图,由图中看,主要有3部分:
heartbeathandler:发送 http 请求和 ambari server 进行交互。
actionexecutor:command 执行器。
alertschedulerhandler:alert 处理器。
4个数据容器:
commandqueue:存储需要执行的 command。
resultmap:存储 command 的执行结果。
alert definitions file:是一个文件,保存所有的 alert 定义。
alertcollect:存储 alert 的检查结果。
简一下 ambari agent 的工作流程:
heartbeathandler:收集组件当前状态(通过resultmap)、command 执行结果(通过resultmap)、alert 检查结果(通过 alertcollect)等,封装到 http request 当中,发送给 ambari server;ambari server 响应请求,通过 http response 带回来需要执行的 command、需要终止的 command、发生修改的 config、发生修改的 alert 定义等,并把 comand 和 修改的 config 封装为 agent command 对象,存储到 commandqueue 中;把修改的 alert 定义,更新到 alert definitions 文件中(如果 alert definitions 文件发生了变化,需要通知 alertschedulerhandler 重新加载一遍
actionexecutor:定期从 commandqueue 中加载需要执行的 command,找到 command 对应的 python 脚本,执行脚本,并把结果存储到 resultmap 中。
alertschedulerhandler:从 alert definitions 文件中加载所有 alert 定义,根据 alert 定义,找到对应的 python 脚本,周期性执行,并把结果存储到 alertcollect 中。