智能安全分析平台部署方式?
2013年5月,我们收到一个电话线索,客户需要支持几十亿数据量的实时查询与分析,包括数据抓取和存储,我们经过一番努力提出一个解决方案,客户觉得有些不妥,决定自己招聘Hadoop团队,实施该系统……
半个月后,客户打来第二个电话,明确表示Hadoop未能满足实时大数据分析的需求,决定接受我们的方案,但是客户要求我们不仅出产品,还要负责实施……
于是乎,开工!
项目价值
CMNET网间流量分析与监控系统(简称流控系统),是中国移动分公司的一个项目。项目要求能基于时间、地区、运营商、业务、App、IP分组、域名等维度对全省的上网流量进行实时分析和报告。这些分析报告能给客户带来如下好处:
1. 实现对接入链路和基站的全程监控。例如,一旦来自某链路或基站的流量很低,可及时对链路和基站进行检修,这将大大降低故障率。
2. 由于具备了对链路和基站进行全程监控的能力,客户可以对链路和基站的带宽进行动态调整,基于需求进行合理的资源配置。
3. 覆盖全省的全量数据,能提供基于业务/地域/App/行业/域名等维度的数据分析报告,具备100%的可信度和极高的商业价值。
数据流向
上网数据从硬件设备中抓取出来,形成压缩的日志文件存储在服务器上,服务器每五分钟生成新的日志文件。该服务器提供FTP访问。
我们方案中承担的流控系统,将通过FTP每五分钟访问一次日志文件服务器,将新生成的压缩日志文件抽取出来。这是一个典型的、增量更新的ETL过程,如下:
1. Extract: 定期抽取的日志文件并解压缩。
2. Transform: 解析出上网信息,同MySQL的维度表进行关联,生成包括业务/地域/App/行业/域名等维度的宽表。
3. Load: 将数据装载入我们的分布式集市。
初期验证(POC)
中国移动的日志数据分G类和A类,各取几块样本日志文件,验证数据流向的可行性以及性能。
我们很快完成了ETL的整个过程,宽表数据被成功地装载入我们的分布式集市。
性能上,我们按照用户提出的每天数据量5000万条增量,计算出支持100天50亿数据量的分布式集群所需的磁盘空间、内存总量、和CPU总量。由于客户一再强调预算有限,于是配置了6台低配PC server:1cpu x 4core,32G内存,1T硬盘。
我们模拟了常用的用户场景,整个系统的响应能力基本满足需求。系统架构如下:
正式实施
中国移动分公司的上网数据在内网,一般不提供外网连接,需要严格申请之后才能在一定时间内提供外网连接。因而,我们先把整个系统的ETL工作开发完成之后,才正式申请了外网连接进行数据装载。
从开始进行上网数据的ETL工作,我们就发现数据量与预期严重不符。预期的上网数据是每天不超过5000万条,但实际上每天的上网数据在6亿条以上,100天保存的数据量将会达到惊人的六百亿条。6台低配PC server有点小马拉大车的感觉,完全达不到“海量数据、实时分析”的设计目标。我们赶紧联系客户,确定上网数据每天6亿条以上,而不是之前预估的每天5000万条左右。怎么办?
系统重构
经过与客户的详细沟通和理性分析,大家一致决定进行系统重构。
上网数据的日志文件是5分钟粒度的。我们将上网数据按照分析需求分为两类:
1. 细节数据:保留三天的细节数据(5分钟粒度),共约20亿条。这样,由于保留了细节数据,客户可以对近三天的上网数据进行任意的探索式BI分析。
2. 汇总数据:在认真研究了流控系统的分析报告需求之后,我们将五分钟的细节数据汇总为两小时的汇总数据。这样数据量可以降到约为原来的1/10,100天的数据总量大约60亿条。
重构之后的数据流如下:
后期,我们陆续进行了一些系统调优,包括JVM调优、存储调优、计算调优等等。客户打开一个Dashboard的响应时间基本控制在秒级,最极端的分析报告也能在一分钟之内生成。基本实现了“海量数据、实时分析”:
1. 系统定期推送日报、周报和月报。
2. 系统支持探索式BI分析。多数分析请求达到了秒级响应。
案例总结
1. 项目的数据量非常大,100天超过600亿条日志;
2. 项目的预算非常有限,采购了6台低端PC Server。硬件投入不大,软件性价比也很高;
3. ETL过程难度较高,随着降维的需求加入,BI层难度也相应提高;
4. 为达到秒级响应,以支持探索式BI的交互式分析,对系统进行了多个层面的优化。
结束语
有了大数据,还要从大数据中提取价值,离不开分析工具,通过丰富的分析功能,在繁杂的数据中找到其中的价值。而大数据给分析提供了一定的挑战,需要高性能计算做支撑,才能在大数据的金矿中挖到金子。
这些案例的成功实施和上线,完美诠释了我们的大数据之道:大数据,小投入。