Banner
首页 > 新闻 > 内容
这些日志分析技术你想知道吗?
- 2018-12-10-

大数据时代,数据量呈几何增长,为避免被时代潮流“拍在沙滩上”,就必须了解大数据的核心组成要素。其中,海量日志尤为重要,不管是IT达人还是企业本身,掌握海量IT日志管理的分析技术都必不可少。

为什么海量日志很重要?

在讨论海量日志分析技术之前,我们先来讨论一下什么是海量日志。

海量日志是大数据的重要组成部分。数据仓库之父比尔.恩门(Bill Inmon) 在他的2016年的新书《数据架构》中提到,企业中数据的组成部分中,非结构化的数据占比已经达到了 70% 以上。而这些非结构化数据中,占据主导位置的是日志数据,可以说日志数据是“大数据”分析的核心。

这些数据贯穿所有的企业经营活动,用户的操作行为、服务器的系统日志、网络设备的日志记录、应用程序的调试日志等等,会直接影响企业的日常运行,与IT运维人员也是息息相关。

海量日志数据有什么特征?

海量的日志数据十分满足大数据的4V特征:

1. 产生速度快,每秒超过数万、数十万的情况已经比比皆是

2. 数据量巨大,速度一快,如果想要分析这数据,势必会带来巨大的数据量

3. 数据种类多,日志数据涵盖IT系统的方方面面

4. 价值密度低,虽然日志数据中能够分析出大量有价值的信息,往往一条分析结果需要数百万甚至上亿条的数据支撑,而且单条日志的信息量有限

我们可以通过一组数据来感受一下海量日志的威力。假设有一个对外应用服务器集群,产生日志的速度为10000条/s,每条日志的平均大小为200字节,那么这个应用服务器每天、每月、每年的日志增量为:

大数据条件下计算方式的变革

从行式存储到列式存储,再到流式计算

这么多的数据,我们如何来进行分析呢?一方面我们需要能够处理更多的数据,另一方面,我们希望查询结果更加的实时(例如:1秒之内返回结果)。

如果这些数据在关系型数据库的世界里,数据以行的方式存储,假设我们需要对数以亿计的数据中的某一个数据进行求和计算,那么首先,我们需要将所有这些数据全部读出来,找到对应的字段,然后进行累加,而我们的计算瓶颈完全取决于磁盘的读写能力。

我们可以用分库或者分表的方式将数据库进行拆分,增加系统并行计算的能力,但是可能依然需要数百台设备才能在1s之内返回这些数据。然而我们没有这么多机器,那么只能慢慢等待分析任务执行完毕。如此一来,既耗时又费力。

后来,大数据技术诞生了。在大数据分析的场景中,列式存储架构取代了行式存储。如果要对某一个字段进行统计,只需要读取相应列的数据,不需要进行整个表的遍历,这样一来,需要读取的数据量变小了,同时,MapReduce 也能够使得分析应用更好地实现分布式计算。

可即便如此,计算的瓶颈依然在磁盘的读写效率上,计算速度并没有本质的变化,如果需要做实时数据的分析,还是需要大投入大量的存储和计算资源。

从逻辑上来说,IT日志管理如果要对海量的数据进行快速的分析,在资源不变的前提下,最好的方法就是减少每次计算所需要读取的数据量。但是如果减少了数据量的读取,分析的结果就无法做到更大的覆盖范围和更加精准的结果。

基于这个思考,我们可以将计算分层,将最近一段时间产生的数据放在实时要求高的数据存储中,使用更好的计算资源来进行分析,将更长时间的历史数据存入离线存储设备中进行批量计算,这部分计算时间可能长达数十分钟或者数个小时,但是计算的结果可以用于和实时分析的结果进行合并,使得分析的覆盖范围和结果的精准度不受影响。

在大数据分析技术中,IT日志管理还有一项非常重要的技术 —— 流式计算,即数据进入系统时就进行必要的预处理操作,这部分的处理,同样减少了后续数据分析中所需要读取的数据量。

日志是大数据的重要组成,为了满足海量日志分析的需要,我们需要从海量日志处理、存储和分析三个方面来设计我们的日志分析系统。云码软件的IT日志管理通过加入消息队列、流式处理、存储分层、离线分析、机器学习等特性,是的海量日志分析的的效率和用户体验都得到了大幅的提升。