第一章 绪论
本文主要分两部分,第一部分(前三章)介绍了当前国内外在海量数据处理方面的成果及相关技术,第二部分(后三章)是基于hadoop的大规模日志处理系统架构设计及具体实现。
1.1. 课题背景
近年来,随着近年来互联网技术的日趋成熟,用户数量规模正在急剧增加,据不完全统计,截止今日,中国的互联网用户数已经达到了3.5亿人,如此众多的互联网用户必将产生海量日志,从这些数据中可以挖掘有用信息进而基于此做大数据预测及个性化推荐。
目前大多数互联网公司都在想尽一切办法尽可能合理地分析这些日志,随着日志数量的急剧增长,传统的linux管道加bash,perl脚本等传统的解决方案已经不再适用,寻求海量日志的分布式存储系统和计算框架成为当务之急。
幸好开源社区已经有了haoop这样成熟的解决方案。hadoop作为一个分布式的基础架构,同时满足了海量数据存储和计算两大难题,成为当今互联网企业中应用最广泛的分布式大数据处理框架。
解决了存储和计算层面的问题,另一些hadoop层之上的问题又暴露了出来,比如多用户使用时如何合理地设置权限及优先级?若某些统计作业有上下游依赖关系,怎样才能保证上游数据就位后下游作业的调度没有延迟?有什么办法可以让不懂mapreduce的用户也能使用hadoop的编程框架? 除此之外还有作业结束后报表的生成、完整的作业监控等核心模块需要兼顾。
本课题的主要任务就是设计一套大规模日志处理系统,可以同时解决(但不限于)以上问题。
1.2. 课题概要
本文拟设计一个综合的日志分析管理系统,它主要集合了统计管理,任务调度,数据管理和报表生成等主要功能。
本系统以产品线的概念来区分不同用户,不同数据源,不同集群的统计任务和日志,可以为各个产品线提供高效可靠的分析服务。由于具有足够的人性化和高可用性,不同产品线的用户只要在系统的前端ui界面上完成一些简单的操作就可以建立高效地统计任务实现对海量数据的分析处理,并且可以根据用户的个性化设置以报表或者文件的形式获取分析结果。
本系统的核心优势在于:
- 存储、计算能力强
系统底层基于hadoop基础架构,采用hdfs来进行分布式数据存储,可以在不改变现有架构的情况下简单的通过增加机器(datanode)来扩容,实现对海量数据的存储;采用mapreduce框架来进行分布式计算,可以高效的实现对大规模数据的并行处理。 - 资源高度封装
系统对底层的计算资源进行了高度封装,根据业务的不同,在普通服务器和hadoop集群两种不同的环境下执行。同样由于在计算资源之上封装了一层,对各产品线用户来说,两种计算资源的使用并没有太大的差异,节省了用户写代码的成本。 - 统计编写简单,配置灵活
系统为用户提供了pquery和streaming两种不同的统计创建模式。pquery模式允许用户采用类似linux管道的方式编写复杂统计,支持多种sql算子,如join,group,sort, semisort,antisort等;streaming模式允许用户采用熟悉的脚本语言编写mapreduce程序创建统计任务。 - 分级调度,智能调整
系统采取了多种方式来对用户作业进行了合理限制,如底层hadoop采用计算能力调度器,严格限制各产品线所在队列的计算槽数和可提交任务数,系统层通过完善的权限角色管理,对不同角色的缺陷进行了明确区分,不允许具有低等级角色权限的用户给作业赋予高优先级。在以上基础上,系统按照统计的重要性进行分级,并实现分级调度,保证高优先级统计有限分配计算资源。同时系统可以实现对统计任务的智能监控,对无人关注的统计进行及时的降级处理,防止计算资源被无谓的任务耗费。 - 自身监控完善
系统对任务的资源占用情况,任务的运行有完善的监控,对于任务运行时间过长,高优先级任务运行失败都会根据优先级采取邮件、短信等方式及时告知用户。
1.3. 论文组织结构
论文第一章简要介绍了本课题的背景及所设计的日志处理系统(以下简称系统)特性的简要介绍。
论文第二章对系统底层所用到的分布式基础架构hadoop做了针对性介绍,包含其分布式文件系统hdfs(Hadoop Distributed Filesystem)和分布式计算框架mapreduce。
论文第三、四、五章分别介绍了系统的业务背景,架构设计和具体实现,以及系统的整体展示。
最后一章指出了该系统有待改进的地方。