# ResourceManagement **Repository Path**: HITMassiveData/ResourceManagement ## Basic Information - **Project Name**: ResourceManagement - **Description**: 资源管理工具开源仓库 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2019-10-22 - **Last Updated**: 2025-08-01 ## Categories & Tags **Categories**: big-data **Tags**: None ## README # ResourceManagement ## 描述 数据驱动的高端制造大数据管理系统的工具:资源规划和调度工具 ## 软件结构 ```Shell ├─docs ├─glusterfs └─management ├─src │ ├─Controllers Heapster,Node,NodeList,Pod,PVC,PVCList,Service,ServiceList,StatefulSet等对象处理 │ ├─Domain Heapster,Node,NodeList,Pod,PVC,PVCList,Service,ServiceList,StatefulSet等对象的pojo │ ├─Enum 对象枚举类 │ ├─Factory POD工厂类 │ ├─Filters 编码与压缩过滤类 │ ├─Interfaces 公共接口 │ ├─Listeners │ ├─Services │ ├─Units │ └─Utils 工具类 └─WebContent ├─assets │ ├─css 公共CSS,自定义CSS │ └─js 公共JS │ ├─footable footable2.0.1插件 │ └─highcharts highcharts插件 ├─common │ └─public 顶栏,侧边栏 ├─doc 项目组件说明 ├─documents ├─fonts ├─img 公共图标 ├─js ├─META-INF ├─plugins │ ├─bootstrap bootstrap插件 │ └─footable footable3.1.6插件 ├─tables └─WEB-INF │ ├─lib │ └─template 前端json临时存储 │ html页面 ├─ add_delete.html 组件添加与删除页面 ├─ cluster_node.html 集群信息展示页面 ├─ dynamic_scaling.html 动态伸缩页面 ├─ jump.html 跳转页面 ├─ pod_service.html POD和SERVICE信息页面 ├─ pvc.html PVC展示页面 ├─ resource_estimates.html 资源预估页面 └─ resource_schedule_allocate.html 资源调度与规划页面 ``` ## 项目相关介绍 `资源规划和调度工具`(以下简称工具)是数据驱动的高端制造大数据管理系统的分系统之一,也是科技部`面向高端制造业大数据管理系统`(以下简称大数据管理系统或系统)重点研发计划的一部分。由于制造业大数据多模态的特性,大数据管理系统需要具备处理时序数据,图数据,结构化数据等多种数据的能力,同时系统需要能够对其中运行的异构数据处理引擎进行细粒度的资源分配与管理。基于以上两点需求开发了本工具,本工具是一套面向容器化数据分析处理引擎的资源管理工具,基于开源的容器编排工具`Kubernetes`开发,利用`Kubernetes`针对容器强大的管理能力,同时立足于对`Kubernetes`进行的二次开发,实现了以下特性: 1. 本工具针对`Kubernetes`的`Scheduler`模块进行二次开发,在原有调度算法的基础上结合本系统的应用场景,提出并实现了多种新的调度算法并集成到`Kubernetes`的`Scheduler`中,使用户能够使用本工具进行高效的组件调度,达到集群的高效利用。 2. 本工具采用LSTM等多种机器学习算法,时间序列算法及其他白盒模型算法实现了对集群异构资源以及负载执行时的异构资源消耗的中短期预测。用户能够据此更充分地利用集群资源,更高效地执行数据存取及分析任务。 3. 本工具利用第三方开源及原生开发的资源管理模块实现了对集群异构资源的实时监控,用户可以使用本工具对在多种粒度上对集群的异构资源进行监控和控制。 4. 本工具利用Linux底层的`cgroup`等工具实现了对容器化数据引擎所需异构资源的管理。用户能够使用本工具对各个数据引擎进行细粒度的资源分配与划分。 5. 本工具利用分布式文件系统实现了异构数据引擎的计算与存储分离,且得益于集群节点间高速以太网实现了高速跨界点数据存取。 6. 本工具针对分布式与集中式数据引擎实现了自动化水平伸缩与重调度功能。得益于异构数据引擎计算与存储分离的实现,本工具能够根据各个数据引擎在负载处理时的资源使用情况进行用户透明的自动化扩容缩容操作,同时也能够针对集群的资源使用情况进行节点级别的组件重调度操作,以达到集群各个节点资源使用的相对平衡。 7. 本工具在前端界面上应用了很多H5新特性,大大增强了前端页面的交互性和信息呈现的多样性。用户可以直观地获取获取自己需要的信息并且简单快捷地使用本工具进行各种系统运维操作。 ## 环境准备 * 部署集群规模:最低3个节点。 * 操作系统:ubuntu 16.04。 * 内存:主节点(管理节点)至少32GB;从节点至少16GB。 * 硬盘:每个节点至少需要有两块物理硬盘或虚拟硬盘且每块硬盘的剩余空间不少于100GB。 * Java运行环境:JDK1.8及其以上。 * Tomcat环境:Tomcat1.8.5及其以上。 * Kubernetes环境:需要`Kubernetes`版本1.9.6以上。 ## 快速安装 ### 安装`Kubernetes`集群及其它组件 该步骤需要用户下载二次开发过(增加了调度算法)的`Kubernetes`编排工具并在集群上进行安装,随后安装docker,分布式文件系统`glusterfs`以及跨主机容器通讯网络`flanneld`。详细的安装教程详见: 1. `Kubernetes`安装教程:[Kubernetes-Installation-Report](https://gitee.com/HITMassiveData/ResourceManagement/blob/master/Kubernetes-Installation-Report.ipynb) 2. `glusterfs`安装教程:[glusterfs安装教程](https://gitee.com/HITMassiveData/ResourceManagement/blob/master/glusterfs/GlusterFS-Installation-Report(based-on-Kubernetes).ipynb) ### 制作异构数据引擎镜像 该步骤主要针对系统管理的多种异构数据引擎进行容器化操作,具体的操作步骤详见数据引擎容器化教程: 1. 图数据引擎集成:[graph-module](https://gitee.com/HITMassiveData/ResourceManagement/blob/master/docs/graph-module.docx) 2. 时序数据引擎集成:[iotdb-module](https://gitee.com/HITMassiveData/ResourceManagement/blob/master/docs/iotdb-module.docx) 3. 结构化数据引擎集成:[kingbase-module](https://gitee.com/HITMassiveData/ResourceManagement/blob/master/docs/kingbase-module.docx) 4. KV数据引擎集成:[kv-module](https://gitee.com/HITMassiveData/ResourceManagement/blob/master/docs/kv-module.docx) 5. 非结构数据引擎集成:[unstruct-module](https://gitee.com/HITMassiveData/ResourceManagement/blob/master/docs/unstruct-module.docx) ### 安装必要组件 安装`heapster`监控组件,制作并安装`Rescheduler`自动伸缩组件,详细的安装步骤详见: 1. 安装`heapster`:[教程]() 2. 安装docker私有仓库:[docker-private-repo](https://gitee.com/HITMassiveData/ResourceManagement/blob/master/docs/docker-private-repo.docx) ### 更新配置文件并编译源代码 将本仓库clone或下载到本地同时更新`/src/config.xml`配置文件,将其中的`Kubernetes`服务地址,镜像私有仓库地址等条目更新为使用者真实的地址,然后可以在本地或服务端将源代码编译成war包或其他形式,编译完成后发布到集群的Tomcat服务器中。 ### 确认安装 启动集群中的Tomcat服务器,然后根据Tomcat所在服务器的IP地址开放端口等情况访问该URL`http://YourIP:YourPort/ResourceManagement`查看工具运行是否正常。 ## 其他 如果您在使用中有任何问题或者发现工具有任何Bug,欢迎您在本仓库的`Issues`模块留下您的意见或建议。