首页
学习
活动
专区
工具
TVP
发布

硬核干货!海量日志分析技术,听说IT达人都想知道……

我们可以用分库或者分表的方式将数据库进行拆分,增加系统并行计算的能力,但是可能依然需要数百台设备才能在1s之内返回这些数据。

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

今天,就让小爱带你探秘海量日志分析技术,一起来看吧。

一.为什么海量日志很重要?

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

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

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

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

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

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

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

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

日志样例

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

这么多的数据,我们如何来进行分析呢?一方面我们需要能够处理更多的数

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

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

据,另一方面,我们希望查询结果更加的实时(例如:1秒之内返回结果)。

这么多的数据,我们如何来进行分析呢?一方面我们需要能够处理更多的数

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

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

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

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

行式数据库vs列式数据库

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181029A17UC100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券