在群集上启动和停止apache flume代理

时间:2017-05-24 02:15:51

标签: java linux cluster-computing flume

我想监视在群集上的不同节点上安装的apache flume实例。就像在不运行时启动水槽实例一样,在需要时停止它。特别是我的java应用程序只安装在集群的特定节点上。

我做了研究,但找不到合适的结果。

1 个答案:

答案 0 :(得分:0)

您可以设置cron来定期运行python脚本,并使用Cloudera Manager Python API(https://cloudera.github.io/cm_api/docs/python-client/#inspecting-a-service)执行这些操作。我已经为你写了这个剧本:

from cm_api.api_client import ApiResource

CM_HOST = "ENTER_HOST"
CM_USER = "ENTER_USR_NAME"
CM_PASSWD = "ENTER_PASSWD"

DATA_CLUSTER = "ENTER_CLUSTER"
SERVICE_LIST=[         #Find out service names by looking in CM > Service > Charts Library > Charts Builder
"flume19",
"flume20",
"flume21",
etc,
etc,
]

api = ApiResource(CM_HOST, version=5, username=CM_USER, password=CM_PASSWD, use_tls=True)
cluster = api.get_cluster(DATA_CLUSTER)
for i in range (len(SERVICE_LIST)):
        service = cluster.get_service(SERVICE_LIST[i])
        for role in service.get_all_roles():
                if service.roleState = "STOPPED":
                    service.restart_roles(role.name)[0]

这将检查角色状态是否已停止,如果是,则再次启动它。但是,如果您参考上面的链接,那么您可以使用API​​做更多的事情。这似乎是一个明智的起点。

你的问题不是特别清楚,如果这不是你所追求的信息,请原谅我!

感谢。