中移(苏州)软件技术有限公司|吴文昊
面对企业数据的爆发式增长,大数据系统的节点数量众多、日志数据繁杂、组件种类多样等特点,使得传统的运维工具难以很好地保障系统的稳定运行。
目前,市面上传统的Hadoop运维工具的功能主要集中在自动化安装部署、集群指标监控、集群故障告警等方面,旨在通过自动化处理和脚本执行的方式对Hadoop集群进行故障的自动诊断和处理,但是处理手段比较薄弱,并且对于复杂故障的诊断,还是需要依赖资深运维人员的知识积累和经验。
在自动化安装部署方面,传统自动化运维工具基本上可以通过向导的方式完成Hadoop组件在各个节点的安装,但是对于集群安装完成后的配置项,却无法进行自动化的初始配置,需要运维人员根据部署机器的硬件环境来进行调整。这就导致即使集群已经安装部署完成,但是其使用的效率却比较低,无法达到初步满足正常生产使用的效果。
在集群指标监控上,目前业界的监控指标软件相对来说较为成熟,大多数都能够实现集群,以及节点和服务级别的多维度监控。但是对于这些监控指标项的处理分析,却基本上很难见到,无法根据一些统计学甚至人工智能的算法,来识别指标项之间的关系,从而发现Hadoop集群深层次的内在联系。
在故障告警上,业界传统运维工具的功能基本上大同小异,几乎都是通过前端页面/邮件/短信等方式,将故障信息告知相关运维人员,并提供了基本的管理功能,如告警周期管理、告警人员管理等。目前的告警功能,主要是在集群异常发生后,触发了预设的告警机制,从而产生告警,而无法对集群的故障进行提前预警和发现,从而实现未雨绸缪、故障规避的效果。
由上,我们可以看到,在大数据的运维领域,其实还有很长的路要走。目前的运维机制,对于保障大规模、超大规模的Hadoop集群来说,还远远不够。因此,结合机器学习、深度学习以及知识库等人工智能技术,打造一套能够自动化发现故障,分析根因并且提供相关故障解决方案的智能化运维系统,显得尤为关键。
从工业界的角度来说,目前对于Hadoop集群的智能运维,所围绕的主线集中在故障发现——根因分析——问题修复——故障规避的全流程,简单来说,也就是对于集群已出现的故障,能够快速分析其发生原因,并针对性地解决故障,甚至在后期通过故障预处理在故障实际发生之前就使其得到解决。
图 深度学习模型训练和预测流程图
上述相关功能,很多都要依靠人工智能的技术来进行实现,例如对集群资源进行预测,通常采用深度神经网络模型对输入数据训练时序进行判别,具体流程如图所示。
从整体的流程图可以看出,整个预测流程分为离线训练部分和在线预测部分。离线部分主要包括深度学习模型的训练和预测技术实现,模型的选择依据数据特征,可以考虑使用卷积神经网路(CNN)、循环神经网络(RNN)、长短时记忆神经网络(LSTM)等综合评测模型的结果,选择最佳模型。而在线部分,主要是基于已成熟的数学模型,导入实时数据,进行未来集群资源指标的预测。
在日志分析方面,已采集的日志数据进行统一存储,并通过深度学习平台建立和训练数学模型,同时通过深度学习API实时监控模型的能力。具体实现步骤如下。
将运维过程中会产生的同等意义的词语、单词、符号等内容建立链接,形成同义词词库;
将集群、组件、接口中的日志信息、操作流水以及告警信息中含有的关键词进行标注具体事件,并建立知识库词典。
将日常监控的日志数据格式过滤,再进行分词处理,提取关键词后根据同义词词库进行同一化处理,实现以“时序-关键词”为结构的训练数据。
将“时序-事件”结构的训练数据通过贝叶斯算法进行计算形成类似{时序,事件1→事件2,P(事件2|事件1)}的结果。
对故障事件进行标注、分类,明确集群故障预测目标。
将训练数据在RNN中,选择隐藏层数量、调整参数和权重,并多次训练后得到模型。
模型结果封装成API提供给上层平台调用。集群监控日志数据通过格式过滤、分词处理和关键词提取后,通过封装API的处理,接入短信、邮件、电话告警,及时提醒运维人员对系统故障进行处理,减少对集群上层应用能力的影响。
目前,随着大数据集群部署的越来越多,集群规模日益增长,对于集群运维的需求越来越强。通过智能运维技术,我们力求尽可能地释放运维人员压力,使得运维人员在面对复杂的系统故障时,能够利用人工智能技术对监控指标,日志数据的多维分析,准确定位故障发生的原因,并且根据知识库的反馈,快速找到解决问题的办法,甚至自动完成故障的排查和处理。