• No results found

Design and Implementation of Log Processing Engine Based on Spark

N/A
N/A
Protected

Academic year: 2021

Share "Design and Implementation of Log Processing Engine Based on Spark"

Copied!
17
0
0

Loading.... (view fulltext now)

Full text

(1)

X2014230031

工程硕士学 位 论 文

基于 Spark 的日志处理引擎设计与实现

Design and Implementation of Log Processing EngineBased

on Spark

张凤

指 导 教 师 : 张 海 英 副 教 授

专 业 名 称 : 软

论文提交日期: 2 0 1 6 年 1 0 月

论文答辩日期: 2 0 1 6 年 1 1 月

学位授予日期: 年

指导教师:

答辩委员会主席:

2016 年 10 月

学号: UDC

厦门大学博硕士论文摘要库

(2)

厦门大学学位论文原创性声明

本人呈交的学位论文是本人在导师指导下,独立完成的研究成果。

本人在论文写作中参考其他个人或集体已经发表的研究成果,均在文

中以适当方式明确标明,并符合法律规范和《厦门大学研究生学术活

动规范(试行)》

另外,该学位论文为( )课题(组)

的研究成果,获得( )课题(组)经费或实验室的

资助,在( )实验室完成。

(请在以上括号内填写课

题或课题组负责人或实验室名称,未有此项声明内容的,可以不作特

别声明。)

声明人(签名):

年 月 日

厦门大学博硕士论文摘要库

(3)

厦门大学学位论文著作权使用声明

本人同意厦门大学根据《中华人民共和国学位条例暂行实施办法》

等规定保留和使用此学位论文,并向主管部门或其指定机构送交学位

论文(包括纸质版和电子版),允许学位论文进入厦门大学图书馆及

其数据库被查阅、借阅。本人同意厦门大学将学位论文加入全国博士、

硕士学位论文共建单位数据库进行检索,将学位论文的标题和摘要汇

编出版,采用影印、缩印或者其它方式合理复制学位论文。

本学位论文属于:

( )1.经厦门大学保密委员会审查核定的保密学位论文,

于 年 月 日解密,解密后适用上述授权。

( √ )2.不保密,适用上述授权。

(请在以上相应括号内打“√”或填上相应内容。保密学位论文

应是已经厦门大学保密委员会审定过的学位论文,未经厦门大学保密

委员会审定的学位论文均为公开学位论文。此声明栏不填写的,默认

为公开学位论文,均适用上述授权。)

声明人(签名):

年 月 日

厦门大学博硕士论文摘要库

(4)

摘要 I

摘要

当前互联网行业迅速发展,许多互联网平台每天产生大量访问日志,能否以 及如何从日志中挖掘出极有价值的信息成为从业人员关心的重要方向,但随着日 志数据量的不断增长,依靠通用型单机分析工具已经无法满足业务需要。因此, 一个可满足各种不同的临时搜索分析需求、提供可视化操作界面、定制化日志处 理和开放式分析、针对海量日志的迭代处理和查询引擎系统的出现成为必要。 基于以上现状,本文设计了一个基于 Spark 平台的分布式日志处理引擎系统, 以满足海量 Web 访问日志进行定制化处理和开放式分析的需要。系统设计了日志 采集、日志查询、日志处理以及系统管理功能。日志采集模块实现原始日志文件 的采集与预处理;日志查询模块基于 Scala 的 lift Web 框架,通过简单易用的 交互式界面,由业务人员根据业务特征自行设计日志处理规则,建立查询任务并 进行数据展示;日志处理模块基于 Spark 框架的 RDD 迭代式计算模型,采用分布 式内存计算方式,实现针对海量日志的实时解析和分析处理;系统管理部分则主 要对配置文件进行管理和对集群进行管理与监控。本文还根据具体业务情况,针 对不同业务复杂度的查询任务,使用不同数据量的日志文件,对日志处理引擎系 统进行了功能和性能测试。 通过系统的实际运行,证实了基于 Spark 的日志处理引擎系统能够较好的完 成日志实时处理的相关工作。后续将充分利用 Spark 生态系统,对功能进行持续 改进和扩展,并进一步提高程序性能。 关键词:日志处理引擎;Spark;大数据

厦门大学博硕士论文摘要库

(5)

II

Abstract

In recent years, internet platforms produce a large amount of log every day. Whether and how to dig out valuable information in log has become an important direction cared by practitioners. With the continual growth of log data, general stand-alone analyzer tools have been unable to deal with such huge amounts of data. As above, the implementation of a log processing engine system is necessary. The system should be able to meet different kinds of temporary needs, provide a visual interface for users, customize and iteratively process huge amounts of log.

Because of the above situation, a distributed log processing engine system based on Spark is designed and implemented. The engine can process huge amounts of Web log by customized processing and real-time analysis. The engine system has four modules. The log collection module implements the collecting and preprocessing functions for the original log files. The implementation of log query module is based on Lift Web framework by the Scala language, which provides interactive web pages for users to make it simple and easy to use. Users can design and create query rules for log business by themselves, submit the query task, and view the result of the task through these web pages. Based on Spark framework with iterative model of RDD and distributed memory computing technology, the implementation of log processing module can implement parsing and processing functions according to the query rules for huge amounts of log data. System management module is designed to manage the configuration files and the Spark cluster. In view of query tasks with different business complexity, and different amount of log data, functional test and performance test of the system were performed.

According to actual operation state of the engine system, the log processing engine based on Spark can complete the real-time log processing work well. The focus of future work is making full use of the Spark ecosystem to continuously expand system functionsand improve the performance of the application.

Key Words:Log Processing Engine; Spark; Big Data

(6)

目录 III

目录

第一章

绪论 ... 1

1.1 研究背景与意义 ... 1 1.2 国内外研究现状与存在问题 ... 2 1.3 研究目标与内容 ... 4 1.3.1 研究目标 ... 4 1.3.2 研究内容 ... 5 1.4 论文结构安排 ... 5

第二章

系统需求分析 ... 6

2.1 业务需求分析 ... 6 2.2 功能性需求分析 ... 8 2.2.1 日志采集 ... 8 2.2.2 日志处理 ... 10 2.2.3 日志查询 ... 12 2.2.4 系统管理 ... 17 2.3 非功能性需求分析 ... 18 2.3.1 可用性 ... 18 2.3.2 约束性 ... 18 2.3.3 安全性 ... 18 2.3.4 扩展性 ... 18 2.3.5 性能 ... 19 2.4 本章小结 ... 19

第三章

系统总体设计 ... 20

3.1 系统软件架构设计 ... 20 3.2 系统物理架构设计 ... 24 3.3 系统功能模块设计 ... 25 3.3.1 日志采集 ... 26 3.3.2 日志处理 ... 28

厦门大学博硕士论文摘要库

(7)

IV 3.3.3 日志查询 ... 28 3.3.4 系统管理 ... 29 3.4 本章小结 ... 30

第四章

系统详细设计 ... 31

4.1 功能模块详细设计 ... 31 4.1.1 日志采集模块 ... 31 4.1.2 日志处理模块 ... 34 4.1.3 日志查询模块 ... 36 4.1.4 系统管理模块 ... 38 4.2 数据库详细设计 ... 38 4.2.1 概念层设计 ... 39 4.2.2 逻辑层设计 ... 39 4.3 本章小结 ... 42

第五章

系统实现与测试 ... 43

5.1 系统实现 ... 43 5.1.1 日志采集模块 ... 43 5.1.2 日志处理模块 ... 46 5.1.3 日志查询模块 ... 53 5.1.4 系统管理模块 ... 59 5.2 系统测试 ... 61 5.2.1 测试环境 ... 61 5.2.2 测试方法 ... 63 5.2.3 测试用例 ... 64 5.2.4 测试结果与分析 ... 70 5.3 本章小结 ... 73

第六章

总结与展望 ... 74

6.1 总结 ... 74 6.2 展望 ... 74

厦门大学博硕士论文摘要库

(8)

目录

V

参考文献 ... 76

致谢 ... 79

(9)

VI

Contents

Chapter 1 Introduction ... 1

1.1 Research Background and Significance... 1

1.2 Current Research at Home and Abroad ... 2

1.3 Research Target and Contents ... 4

1.3.1 Research Target ... 4

1.3.2 Research Contents ... 5

1.4 Paper Structure ... 5

Chapter 2 Requirement Analysis of System ... 6

2.1 Business Requirement Analysis ... 6

2.2 Functional Requirements Analysis ... 8

2.2.1 Log Collection ... 8

2.2.2 Log Processing ... 10

2.2.3 Log Query ... 12

2.2.4 System Management ... 17

2.3 Non-Functional Requirements Analysis ... 18

2.3.1 Availability ... 18 2.3.2 Constraint ... 18 2.3.3 Security ... 18 2.3.4 Scalability ... 18 2.3.5 Performance ... 19 2.4 Summary ... 19

Chapter 3 Overall Design of System ... 20

3.1 Software Architecture Design ... 20

3.2 Physical Architecture Design ... 24

3.3 Function Module Design... 25

3.3.1 Log Collection ... 26

3.3.2 Log Processing ... 28

(10)

Contents

VII

3.3.3 Log Query ... 28

3.3.4 System Management ... 29

3.4 Summary ... 30

Chapter 4 Detailed Design of System ... 31

4.1 Detailed Design of Modules ... 31

4.1.1 Log Collection ... 31

4.1.2 Log Processing ... 34

4.1.3 Log Query ... 36

4.1.4 System Management ... 38

4.2 Detailed Design of Database ... 38

4.2.1 Concept Layer ... 39

4.2.2 Logic Layer ... 39

4.3 Summary ... 42

Chapter 5 Implementation and Test of System ... 43

5.1 System Implementation ... 43 5.1.1 Log Collection ... 43 5.1.2 Log Processing ... 46 5.1.3 Log Query ... 53 5.1.4 System Management ... 59 5.2 System Test ... 61 5.2.1 Test Environment ... 61 5.2.2 Test Method ... 63 5.2.3 Test Case ... 64

5.2.4 Test Results and Analysis ... 70

5.3 Summary ... 73

Chapter 6 Conclusion and Prospects ... 74

6.1 Conclusion ... 74

6.2 Prospects ... 74

(11)

VIII

References ... 76

Acknowledgements ... 79

(12)

第一章 绪论 1

第一章 绪论

本章描述日志处理引擎的基本背景和主要研究内容,首先主要介绍引擎系统 的研究背景,其次对实现引擎系统所依赖的分布式大数据处理技术的国内外研究 现状与存在问题进行说明,然后明确该系统的研究目标和内容,最后描述全文的 组织结构。

1.1 研究背景与意义

近年互联网行业迅速发展,许多互联网平台每天产生大量访问日志,这些日 志中包含了大量产品分析人员感兴趣的信息,能否以及如何从日志中挖掘出极有 价值的信息成为从业人员关心的主要方向。早年大多公司或企业进行日志处理分 析的方式比较单一,需要运营维护人员具有强大的正则表达式功底,使用 shell 命令如 grep、awk、sed 等,通过 crontab 配置定时任务来对日志数据进行分析 处理,再筛选出关键字或查询结果。随着越来越庞大的服务器数量,对于要求更 高的日志查询、排序和统计等要求,仍然使用这样的处理方式难免力不从心。如 果使用数据库进行数据存储,其检索和查询过程又极为繁琐,而且数据库本身不 能满足海量级别的日志处理要求,数据库的 schema 也无法适应多变的日志格式, 同样也无法有效地针对日志数据进行全文检索和字段检索。 随着日志数据量、访问类型、输出格式、用户数量、产品分析需求的不断增 长,业务特征越来越多样化,遇到的产品问题也越来越繁杂,业务人员常常需要 通过查找和分析用户日志以定位这些问题的根源,并从中寻求最佳解决方案。同 样的,企业针对调研性质的需求也越来越多,如挖掘潜在的客户需求、分析客户 的业务特征等,这类需求具有突发性、临时性和多样性等特点,依靠通用型的单 机分析工具进行预先处理的常规统计项已经无法满足业务需要。综上所述,当前 迫切需要一个针对海量日志进行迭代处理和查询的日志处理系统,该系统应当能 够满足各种不同的临时搜索和分析需求,为用户提供可视化的交互界面,进行定 制化的日志处理和开放式分析,并且满足分布式存储、计算和管理的需要。 近年来大数据处理技术得到广泛的研究和应用,Hadoop 生态圈的出现解决

厦门大学博硕士论文摘要库

(13)

2 了单机服务无法处理大量数据且效率低下的瓶颈问题,其 MapReduce 计算引擎是 在数据分析过程中才实现对数据的解析,非常适合处理 Web 日志这样的非结构化 数据[1]。但是 MapReduce 抽象层次过低,难以上手,且其中间数据需要保存在 HDFS 上而不是直接存放在内存中,无法满足迭代式计算的性能要求。Apache Spark 则是 Hadoop MapReduce 的不断改进,作为一种内存计算框架,其 RDD 计算模型 具有强大的抽象能力,逻辑处理过程简单清晰,能够大量简化开发过程。Spark 框架还提供了统一的数据处理平台,整个生态系统非常完整,十分方便进行业务 平台的扩展。 在大数据分析业务中,大部分都是半结构或非结构化数据,其中以日志数据 占比最多,而 Web 访问日志就是一种典型的非结构化数据记录。如何应用基于 Spark 平台的分布式计算和存储技术,对海量 Web 访问日志进行定制化处理和开 放式分析是本文作此研究的出发点。

1.2 国内外研究现状与存在问题

随 着 大 数 据 技 术 的 发 展 , 国 内 外 许 多 公 司 在 Google 论 文 中 提 到 的 MapReduce[2]模型的基础上发布了一系列开源项目,逐渐有了一些相对成熟的分 布式技术平台,针对日志分析的分布式处理技术也有了很大改善,使得企业能够 从中选择更适合自己的技术,发挥日志数据的最大价值[3]。以下分别对当前主流 的几种分布式计算系统进行介绍。

Apache Hadoop 基于 MapReduce 分布式计算框架和 HDFS 分布式文件系统, 其实质上是一个分布式数据的基础设施,具有完整的生态系统,它改变了集中式 计算采用昂贵大型机的硬件方式,而采用普通计算机组成的集群,通过集群中的 多个服务器节点进行数据集的分散存储和计算[4],能够高效地从海量数据中挖掘

出有意义的信息。

Hadoop 的发展经历了几个阶段,Hadoop 1.0 采用 MRv1 版本的 MapReduce 编程模型,可扩展性差,可用性差,资源利用率低,不能支持更多 MapReduce 框架。Apache 为了解决以上问题,对 Hadoop 进行了升级改造,诞生了 Hadoop MRv2。 MRv2 虽然仍然支持 MRv1,但其核心不再是 MapReduce,而是 YARN,MapReduce 框架成为可插拔的组件,可被替换为其它 MapReduce 实现,如 Strom、Spark 等。

(14)

第一章 绪论

3

Hadoop2 从提出至今数年时间,国内外众多互联网公司,如国外的 Yahoo[5]

Facebook[6]、Amazon[7]以及国内的阿里巴巴[8]和百度[9]等都在此基础上逐渐研发

出了相对成熟的分布式技术平台[10]

Storm 由 Twitter 数年前主推,常被称为实时流处理领域的 Hadoop。Storm 可用来进行持续的流消息处理或进行分布式 RPC 处理等具有实时性质的分析与 处理过程[11]。但 Storm 并不存储数据,而是更多用于在线接收和分析工作,其

针对大数据的特性仅适用于实时在线请求量比较大的情况,而非批处理。因此对 于 Storm 框架的实际落地,为了兼顾批处理和实时性要求,通常在架构上需要将 Hadoop 和 Storm 结合起来使用。2015 年 6 月,Twitter 对外宣讲了更适合超大 规模集群的实时流数据处理系统 Heron,它在稳定性上有比 Storm 更优异的表现, 如今 Twitter 内部已经舍弃了 Storm 并用 Heron 替代[12]

Hadoop MRv2 虽然解决了 MRv1 中的一些问题,但由于对 HDFS 的频繁操作, 例如计算结果持久化、数据备份及 shuffle 操作等,导致磁盘 I/O 成为系统性能 的瓶颈,因此 Hadoop 只适用于离线数据处理,而不能提供实时数据处理能力, 如果要实现统计信息的实时查询,Hadoop 显然不适合这样的要求。 出于实时数据计算和分析需求的驱动,近几年以来 Apache 顶级项目中最火 的大数据处理的计算引擎非 Spark 莫属。Spark 是一种能够针对大数据集进行快 速迭代和分析处理的基于内存的通用计算与处理框架,具有低延迟的特点[13] 用于解决当前 Hadoop 框架在迭代式和交互式的计算过程中遇到的瓶颈问题[14]

Spark 针对 Hadoop MRv1 的问题对 MapReduce 做了大量优化,可以说 Spark 是 Hadoop MapReduce 的增强版本。Spark 启用了基于内存使用的弹性分布式数据集 RDD,极大地提高了大数据的迭代处理速度,其流式计算能力甚至强于 Storm。 Spark 还具有丰富的数据源支持,极大的方便用户将现有计算系统迁移到 Spark 上。另外,Spark 本身使用 Scala 语言实现并运行于 JVM 上,与 Scala 和 Java 都能够紧密集成,同样也支持 Python 和 R 语言[15],有效减少了开发人员的学习

成本,使开发人员能够快速实现程序,并提高开发效率。

全世界有许多公司和组织使用 Spark,并且为 Spark 社区贡献代码,使得 Spark 的活跃度非常高。Spark 社区基本保持一个季度一个版本,2016 年 7 月 26 已发布 Spark 2.0 版本,相较于 Spark 1.0,Spark 2.0 对 API 进行了精简,同

(15)

4

时对标准 SQL 的支持大幅减少了应用程序往 Spark 迁移的代价,其第二代 Tungsten engine 的整段代码生成(whole-stage code generation)技术大大提 高了处理性能,结构化数据流技术也极大简化了流数据的处理[16]

由于研发的相对简单和数据处理的灵活性,Spark 在开源社区和现实用例中 的受欢迎程度迅速提升,成为 Apache 软件基金会中最活跃的项目,开发者对 Spark 的拥抱以及开源项目本身的开放特质,促使 Hadoop 发行商们关注 Hadoop 与 Spark 的融合,在其发行版本的 Hadoop 框架内集成 Spark 以满足客户需求, 并进一步应用在生产环境中。例如,Cloudera 开发团队就在其发行版本 CDH 中 包含了 Spark 组件,使之成为 Cloudera 平台的补充。这些在大数据技术市场上 具有影响力的发行商的支持,加速推动了 Spark 的应用,进一步提高和扩展了用 户对 Spark 的使用能力。 目前虽然大部分针对海量日志数据分析所采用的技术是 Hadoop、Storm、 Spark 等,这些技术各有其优势的使用场景,但利用实时搜索引擎处理日志的方 式还比较独特,国外如 Splunk 等公司已经能够提供这样的分析平台,国内也有 少数公司提供此类服务,随着业界对日志分析的关注度不断提升,其价值也将被 更多的挖掘出来,企业应当结合自身业务,调研不同技术的优点与不足,选择符 合自身当前发展需要的大数据技术,充分发挥日志数据的作用。

1.3 研究目标与内容

本文旨在探讨应用 Spark 计算框架对海量 Web 日志进行处理和分析,以缓解 传统海量日志并行计算的瓶颈问题。 1.3.1 研究目标 本文主要研究目标如下: (1) 了解大数据平台技术,结合 Spark 核心 RDD 的原理,实现具有强大查询 功能和定制化数据处理能力的日志处理引擎系统。 (2) 基于 Spark 平台实现的日志处理引擎系统,其数据计算性能满足业务处 理需要,在一定程度上缓解传统海量日志并行计算的瓶颈问题。

厦门大学博硕士论文摘要库

(16)

第一章 绪论 5 1.3.2 研究内容 本文主要研究内容如下: (1) 基于 Spark 建立开放式日志处理引擎的理论架构,并应用 Spark 框架理 论设计出海量 Web 日志处理引擎的系统架构; (2) 依照系统架构,结合日志查询和处理的实际应用场景,对系统进行详细 设计、开发和实现; (3) 以 Web 访问日志处理为例,根据不同规模的样本数据,针对日志查询和 日志处理模块进行功能和性能测试,检验日志处理引擎的处理效率。 (4) 针对所得出的实验结果进行总结,并针对研究结果提出建议。

1.4 论文结构安排

本文各章节的内容安排如下: 第一章:绪论,介绍日志处理引擎项目的研究背景,对相关的分布式大数据 处理技术的国内外研究现状与存在问题进行了简要说明,同时明确该项目的研究 目标和内容,并列举本文的整体结构安排。 第二章:系统需求分析,分别从业务需求分析、功能性需求分析和非功能性 需求分析三个方面进行阐述。 第三章:系统总体设计,描述引擎系统的整体软件架构和物理架构,基于 Spark 迭代式计算原理和 Lift Web 框架应用,对主要功能模块进行软件实现方 案设计。 第四章:系统详细设计,结合 Spark 计算框架分层原理对各主要功能的具体 实现流程进行详细描述,并设计相关数据模型。 第五章:系统实现与测试,详细介绍引擎系统各模块的具体实现细节,开始 部署测试环境,根据实际业务需求,对引擎系统各模块进行功能测试,并对日志 处理组件进行性能测试,最后进行结果分析和总结。 第六章:总结与展望,总结研究成果,同时指出项目中存在的不足,提出后 续改进方向。

厦门大学博硕士论文摘要库

(17)

Degree papers are in the “Xiamen University Electronic Theses and Dissertations Database”.

Fulltexts are available in the following ways:

1. If your library is a CALIS member libraries, please log on

http://etd.calis.edu.cn/ and submit requests online, or consult the interlibrary loan department in your library.

2. For users of non-CALIS member libraries, please mail to [email protected] for delivery details.

References

Related documents

In conventional cutting the performance of a cutting wheel does not change in regard to score quality or fissure depth over the entire range of cutting head velocities.. This is

Using Data Stream Management Systems to analyze Electric Power Consumption Data.. 11/05/2007

For example, Table 3 shows that for unemployment both the test with WCE-DM and test the with WCE-B and standard asymptotics reject at 10% significance level the null of equal

Using a single quadratic Lyapunov function, for both the affine LPV model (Apkarian et al. 1995) and the TP convex polytopic model (Chumalee and Whidborne 2009) cases, a finite

USA UK Germany Australia Caribbean Belgium The Netherlands [email protected] www.pallas-athena.com Redistribution is not permitted without written notice from

• Not all women who develop breast cancer are invited to screening or attend screening.. • No adjustment for different baseline incidence rates • No adjustment for incidence

Weighted (blank squares) and unweighted (filled squares) study estimates and their 95% CIs and pooled estimates (diamonds) and their 95% CIs are shown for proportions of MSM in

In addition, we find a distinct causal flow from the yield on long-term government bonds to the SARB policy rate with momentum equilibrium adjustment