发明内容
技术问题:本发明针对融合网络中,海量、异构的告警数据使用传统的数据库或数据仓库处理速率慢,内存消耗大甚至无法处理和分析的问题,提供一种基于Hive的网络告警信息OLAP方法,减少待分析的告警数据量,数据分析维度广、效率高。Hive简化MapReduce实现方式,减少开发复杂度、代价低、提高系统分析性能。
技术方案:
1、一种基于Hive的网络告警信息OLAP方法,包括:数据清理、数据集成、数据规约和数据变换,包括如下步骤:
1)告警数据映射先采用HiveJdbcDriver实现Jdbc方式链接Hive,再通过Hive外表方式实现数据共享;
2)初始化OLAP中所需的数据立方体维度数N与每维对应的层数Li,根据具体选择的N个网络告警相关信息维度,建立N-D方体模型;
3)计算数据立方体总数,判断是否存在维灾难,假如存在返回步骤2),重新初始化;
4)按照步骤2)的维度数和层数自定义维度和层次,针对网络告警管理采集到的数据与用户需求,完成OLAP星型模型的构建;
5)建立事实表和维表,解决各维度的层次数据刷新问题,导入数据;
6)基于以上操作,Hive实现RollUp和Cube;当需要更新维度时,返回步骤2)重新初始化。
所述步骤1)采用外联表方式间接操作;所述步骤5)与步骤6)为:
告警分析结合OLAP,基于步骤2)中建立的N-D方体模型,分维基础上进一步细分层次;其中告警区域维的层次划在刷新时分能满足存在/不存在区域直连设备或域间设备的两种情况。告警数据量巨大时,Hive处理海量数据更有效。
所述方法基于云计算Hadoop平台,采用新型的数据仓库Hive,能处理融合网络中海量的、异构的告警数据,解决告警风暴等网络告警管理中因数据量大或网络异构带来的一系列问题。不同于传统的简单统计方式,网络告警OLAP能准确提供多维度和多层次的分析信息,支持使用者决策。
有益效果:
本发明提出了一种基于Hive的网络告警信息OLAP方法,通过使用本发明提出的方法,可以处理海量告警数据,提高告警数据分析效率,扩大分析维度。同时开发复杂度相对减小,分析代价低、准确性高。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1是基于本发明的融合网络告警管理基本流程图。本发明主要涉及其中的告警OLAP分析模块,考虑的是基于云计算网络管理中的告警管理模块,且系统中包含告警设备/区域树的告警管理场景。图2所示是本发明的基于Hive的分析系统架构图。本发明基于Hadoop平台,在Hadoop上安装HBase数据库和Hive数据仓库。将采集到的告警数据通过基于Hive的OLAP方法实现数据分析并显示给用户。具体在Hadoop上安装配置HBase数据库作为底层仓库数据库服务器。使用后端工具与实用程序,由该数据库和其他的外部数据源,提取数据存入底层,预处理数据更新数据仓库。这一层还包括元数据库,Hive内嵌的元数据库Derby,中间层是OLAP服务器,典型使用多维的模型,直接实现多维数据和分析操作。顶层是前端客户层。包括分析工具、报告工具等。Hive数据仓库工具,将HQL语句转换为MapReduce任务运行,汇总生成跨多个维度的数据:
(input)<k1,v1>->Map->List<k2,v2>->Combine
-><k2,List(v2)>->Reduce-><k3,v3>(output)
其中:每一个输入的<k1,v1>输出一批<k2,v2>。List<k2,v2>是计算的中间结果集。输入的中间结果<k2,List(v2)>中的List(v2)表示是一批属于同一个k2的value。
下面给出本发明的具体实施案例:
首先对海量数据采用综合的数据预处理方式,包含数据清理、数据集成、数据规约和数据变换。不考虑对偶然会产生的空值进行缺失填写处理,直接删除离群点。将不同厂商的不同设备经过主动轮询告警,ping告警和trap告警灯不同类型和格式的数据,转化为统一的数据格式。且只取含有内存、CPU以及硬盘利用率等告警类型的数据属性项。利用HBase的rowkey不重复的特点,通过对RowKey的时间戳处理,将原本每分钟内产生的多条告警信息压缩为一条。因Hive的HQL语句中无法使用数据加百分号的形式进行正确的范围判断,将原始的带百分号的数据转化为不带百分号的数据。
(1)使用HiveConn实现加载Hive驱动,HiveJdbcDriver实现HBase与Hive的数据连接。HBase中创建相应数据表,对应在Hive中建立外联表存放映射的数据。
(2)初始化N=3,选择3个网络告警相关信息维度,建立3-D方体模型,如图3所示。从基本方体自下向上探查,便类似于rollup。立方体操作相当于分组操作的n维推广。每个维度上,维度各自都不分层时,n维数据立方体的方体总数为2n。概念分层(粒度)时,存储需求会增长很多,进行维灾难判断如下:在n维的数据立方体中,可能产生的方体总数为:
其中:Li是与维i相关的层数。由于泛化到All时,等价于去掉一个维度,所以Li+1,使之包括虚拟顶层All。假如数据立方体有10个维度,每维包含All共6层,那么可能产生方体总数:610≈6.04×107。如维度一分三层,维度二分两层,维度三分两层的情况下,方体总数方体总数=(3+1)×(2+1)×(2+1)=36,不存在维灾难。
(3)自定义层次划分,针对网络告警管理采集到的数据与用户需求,根据图3的维度和层次划分定义具体的内容。如一种简单的三维情况:Time、Location、AlarmInfo。其中:Time分三层:year、month、week;Location分Location、LocationDetail两层。AlarmInfo分AlarmType和AlarmSeverity两层。其中告警区域Location包括具体的一些地理位置,随着用户的具体设备与区域的增删查改而动态改变。时间和告警信息也是实时刷新的。综上信息,如图4所示,OLAP星型模型包含一张事实表和三张维度表。分时间维、区域维、告警参数维。时间维分年、月、日;区域维分总区域、具体区域;告警参数维分告警类型和严重程度两层。
(4)首先在HBase中建立事实表Alarm_Info。然后在Hive中,创建同名事实表Alarm_Info如下,维表同理:
CREATE EXTERNAL TABLE ALARM_INFO(TIME_DEV_ID String,ALARM_TIME
String,ALARM_LOCATION String,DEV_ID String,DEV_IP String,
ALARM_DESC String,ALARM_NUM String)
STORED BY'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH
SERDEPROPERTIES("hbase.columns.mapping"="ALARM_INFO:ALARM_TIME,ALARM_INFO:ALARM_LOCATION,ALARM_INFO:DEV_ID,ALARM_INFO:DEV_IP,ALARM_INFO:ALARM_DESC,ALARM_INFO:ALARM_NUM")TBLPROPERTIES("hbase.table.name"="ALARM_INFO")
告警管理中往往存在设备/区域树的情况,该树体现设备与区域的相互联系,以及不同区域间的父节点与子节点间的位置关系,后台存储为一张位置树表,假设是以0表示根节点1表示叶子节点,每个根节点后列出对应的子节点。此时刷新区域表时,要考虑每个区域存在域间设备的情况。如图5所示,本文采用的同时适用于存在和不存在域间设备情况的遍历方法。具体例如:
简单假设现有地区9个。分别用数字1-9表示。其中分两个总区域:1、8。1区下一级为区域2、3,2下一级区域4、5,3下细分为区域6,4区下一节点为区域7,父节点8下一级区域9。此时,首先找到父节点:1,8。然后分别进行遍历。从父节点1开始:遍历第二级,有:1_2,1_3。其中id=2时,子节点数为2,id=3时,子节点数为1不为0,说明两个id均为中间区域,未达到具体区域id号,需要继续遍历。于是继续采用递归方式分别搜索1_2,1_3,分别得到1_2_4,1_2_5,1_3_6。同理判断此时的全路径末尾是否已经达到具体区域的ID。由于路径1_2_4中对应的末尾id=4,子节点数不为1,于是继续递归遍历,得到1_2_4_7末位id=7,子节点数0,结束递归。同理1_2_5,1_3_6已经达到具体区域id,结束遍历。搜索完以上全部后开始另一个父节点8,最终得到如下的全路径结果:
1_2_0 1_3_0 1_2_4_0 1_2_5_0 1_2_4_7_0 1_3_6_08_9_0
以上只是一种区域较少的简单情况,也适用于区域增多的情况。且能同时适用于各区域包含和不含直连设备的情况。
(5)RollUp/Cube
Hive支持OLAP中的上卷以及分块操作。钻取的深度与维所划分的层次相对应,如rollup的操作,通过沿着一个维度的概念上的分层,逐渐向上延伸。在中心立方体执行上卷操作的最终结果。切块操作涉及的维度并不改变,只是改变各个维度的数据大小。操作前先将三个维表连接后的综合数据表tb。然后进行其他操作,如Rollup中的关键操作如下,cube同理:
case when(year is null)then'All'else year end as year,
case when(location is null)then'All'else location end aslocation,
case when(alarm_type is null)then'All'else alarm_type end astype,ceil(sum(num))as sum
from tb group by location,time,alarm_desc with rollup;
以上所述仅为本发明的较佳实施案例之一,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
本发明在深入了解告警管理流程基础上进一步提出基于Hive的告警管理中的OLAP方法,通过建立网络告警数据仓库,利用联机分析的快速数据统计为管理者提供决策支持。用户可以方便灵活地获得不同粒度、不同角度的分析数据,满足了网络告警分析的需求,具有一定的应用价值。
与基于传统数据库和数据仓库的OLAP方法最大的不同,是该方法可以通过使用Hive数据仓库工具,处理海量告警数据,提高告警数据分析效率,扩大分析维度。同时开发复杂度相对减小,分析代价低、准确性高。改进后的方法有更强的数据处理和计算能力,以及更大的灵活性,即使在系统中包含设备/区域树的环境下,相比传统方式也具有更好的数据分析性能。