大数据集群的物理机部署形态,相对于公有云/混合云的云主机部署形态,在自动化发放集群、弹性伸缩等云化场景方面处于劣势,但物理机部署形态的大数据集群能够更加充分高效的利
大数据集群的物理机部署形态,相对于公有云/混合云的云主机部署形态,在自动化发放集群、弹性伸缩等云化场景方面处于劣势,但物理机部署形态的大数据集群能够更加充分高效的利用服务器资源,不存在云化/虚拟化的开销,同时服务器的异构能力更强。
早期交付的很多大数据集群均是物理机部署形态,如浙江移动大数据集群、广东移动大数据集群、工行大数据集群、招行大数据集群等。
针对这些存量大数据集群,以下介绍一种自动化运维管理办法,来提升运维效率、集群资源利用率,降低集群的资源消耗。
该自动化运维管理办法包含以下4个方面的功能:
1、根据组件特点选择最适合服务器类型来部署、扩容或更换:
- 部署和扩容原则是每种服务器仅部署一个上层组件,不混合部署多个组件。该原则能够使后面弹性伸缩的管理更加方便。从服务器资源池自动选择最适合组件资源负载特点的服务器类型。
- 服务器分类规则:Elasticsearch、Kafka、Clickhouse选择满配SAS盘服务器(较大容量存储、高IO吞吐量、低IO延迟),Flink、Redis选择少量SSD盘服务器(较小容量存储、高IO吞吐量、低IO延迟),Hive、Spark选择满配SATA盘服务器(大容量存储、高IO吞吐量、不追求低IO延迟)。HBase标准场景可选择满配SATA盘服务器,极致高性能场景可选择满配SAS盘服务器。
- 组件参数根据实际物理机配置进行自动化初始设置;如Yarn NodeManager的VCores和内存,HDFS和Kafka的存储路径设置。--这一步是初始化设置,所设置的软件参数均是和硬件服务器有关的参数。
2、组件参数根据作业负载情况自适应重设:根据实际作业运行的特点情况,自动化、最优化的设置组件/软件参数,这些参数和硬件服务器无关,但和实际作业运行的需求有关,其目的是把服务器资源最大化利用,以保证组件的高性能。
- Yarn资源分配和实际占用是有差异的,必须把参数重设更大或更小来满足实际运行情况。Yarn资源分配是账面数字,但实际业务负载在运行后才体现其资源占用情况,因此在运行后根据实际占用的资源重设参数来避免资源浪费或是资源不够而造成的任务报错。
- 如果Yarn划分了资源池,按照资源池进行弹性伸缩,队列资源不经常用满,也自适应收缩。
- HiveServer内存监测,如果内存快到最大堆内存了,停止HiveServer的SQL请求,新的请求由其他HiveServer进行接收处理,等待已有的SQL处理完成后,重启该HiveServer实例。
- RegionServer内存监测,如果内存快到最大堆内存了,可以先重设到更大,重启该RegionServer实例。最后仍然突破到一个最高上线阈值时,发出告警。
3、组件单节点性能及组件所在服务器的资源占用率的监控:
- 组件单节点性能的监控,如Kafka单节点写入吞吐量、Kafka单节点读取吞吐量、HBase单RegionServer支持的最大Region数。
- 组件所在服务器的资源占用率的监控,包括CPU、内存、磁盘IO、网络IO这4个维度。
- 软件性能与硬件占用率(包含CPU、内存、磁盘IO等)的映射曲线,这个曲线随着利用率提升性能逐渐增大但最终增大缓慢,为后面弹性伸缩提供依据,给出建议的占用率,在此占用率下组件的综合性能达到最优,也给出优化空间,比如增大硬盘数量、内存条数量等等来继续提升软件的性能,或者是减少硬盘数量、内存条数量来避免浪费。
4、集群服务器自适应负载进行弹性伸缩管理:
- 弹性伸缩算法:在集群的某组件所有节点资源达到建议的占用率时,此时需要扩容,扩容多少台可以计算出来,Yarn任务可以根据任务积压的计算需求进行估算,如果服务器资源池有相应的资源则自动直接扩容,如果没有则发送告警通知需要扩容多少该类型的节点,其他组件暂不估算,如Kafka、Elasticsearch、HBase一台台扩容及自动的负载均衡,直至该组件所有节点的资源占用率低于建议的占用率。
- 缓冲池(温池子)用于做入服管理,预安装组件软件包,便于快速扩容,高资源利用率时入服;温池子是上电状态,可快速的加入,具体准备多少个取决于日常负载曲线,提前做好准备;
- 集群整体资源出现低利用率时退服一定数量的服务器;服务器在退服后断电,断电后节省服务器的风火水电;
- 共享服务器资源池供给多个集群进行扩缩容。根据优先级分配给各个集群补给不同数量的服务器。
- 出现故障/失效节点时,主动从集群中退服该节点,从服务器资源池选择对应类型的节点并重新安装相对应的大数据进程。
本文由华为云发布。