# cluster-limit-jobs-backend **Repository Path**: wubaidev/cluster-limit-jobs-backend ## Basic Information - **Project Name**: cluster-limit-jobs-backend - **Description**: 当大数据集群规模较小 或资源不足场景 ,如何控制业务并发数量 调整业务作业数量 以保证集群在出现性能瓶颈时,保证集群的可用性和安全性 已及灵活性、可靠性 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-03-05 - **Last Updated**: 2025-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java ## README # cluster-limit-jobs-backend ​ 详细使用说明参考:[集群规模小或资源不足时 如何控制业务并发?](https://blog.csdn.net/m0_57874805/article/details/145601405?spm=1001.2014.3001.5502) 说明(需求介绍):本文介绍一个案例 当大数据集群规模较小 或资源不足场景 ,如何控制业务并发数量 调整业务作业数量 以保证集群在出现性能瓶颈时,保证集群的可用性和安全性 已及灵活性、可靠性 业务流程(功能实现方案) 第一步----获取告警id 请求大数据集群后端接口:/api/v2/alarms (示例 这个接口是集群内部已有接口,我们只需要去调用接口,获取接口返回值,如果是restful接口,接口返回就遵循restful接口规范,返回值一般为json串,我的程序案例是restful接口规范) ![输入图片说明](4c8a5d25141e44a1b9c7d6ded9ded76a.png) 从接口中获取状态是未恢复的告警 按时间倒序desc 告警筛选条件: CPU12016/内存12018 (告警id以实际为准) 未恢复 CPU12016/内存12018,告警主机数量 >=3 (暂定不超3台主机,HDFS数据存储挂2节点以上数据不可读取) 满足告警条件 生成CPU告警标识文件 abnormal.ck 第二步----kill任务条件 存在标识文件 排除集群业务用户例如:csdn yarn api查询当前running的任务 从中取出appid 将appid按已分配vCore数量排序 取出最大的那一个 ![输入图片说明](conf/a1f1a3c5c741479e844c8050c2ec412b.png) 第三步----日志 记录被杀任务id 等信息 记录cpu、内存告警 业务程序代码(部署调用) 运行调用示例 (此shell脚本实现封装,通过此脚本可调用打包好的java程序和python程序): ```shell !/bin/bash shell_dir=$(dirname "${BASH_SOURCE-$0}") shell_dir=$(cd "$spark_submit_path"; pwd) client="/opt/client2" ##useage: java -cp ./*.jar com.csdnx.mrs.rest.BigdataClusterAlarms 告警id 是否关联告警主机数量(为true则需告警主机数量>=3) java -cp ./*.jar com.adtec.mrs.rest.BigdataClusterAlarms ALM-12012 false source ${client}/bigdata_env && kinit -kt ${client}/user.keytab csdn && python3 ${shell_dir}/yarn_running.py 主类BigdataClusterAlarms ​ 杀死集群内部业务对应的任务python脚本请参考:https://blog.csdn.net/m0_57874805/article/details/145601405?spm=1001.2014.3001.5502