クラスタ上の別々のノードにインストールするapache flumeエージェントを監視したい。それが死んでいるときにスタートflumeエージェントのように、私は必要なときにそれを停止します。特に私のJavaアプリケーションは、クラスタの特定のノードにインストールされます。クラスタ上でapache flumeエージェントを起動および停止する
私は研究しましたが、適切な結果が見つかりませんでした。
クラスタ上の別々のノードにインストールするapache flumeエージェントを監視したい。それが死んでいるときにスタートflumeエージェントのように、私は必要なときにそれを停止します。特に私のJavaアプリケーションは、クラスタの特定のノードにインストールされます。クラスタ上でapache flumeエージェントを起動および停止する
私は研究しましたが、適切な結果が見つかりませんでした。
pythonスクリプトを定期的に実行するようにcronを設定し、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を使用してさらに多くのことを行うことができます。しかし、これは合理的な出発点と思われます。
あなたの質問は特に明確ではなかったので、これがあなたの情報でなかったら私を許してください!
ありがとうございました。