专利名称:基于Hadoop的分布式日志分析系统的制作方法
技术领域:
本发明涉及一种日志分析系统,尤其涉及一种基于Hadoop的分布式日志分析系统。
背景技术:
随着计算机的普及以及互联网的迅猛发展,公司上线的系统越来越多,随之产生的系统访问日志也是迅速增长,每天新增海量的系统日志。为了保护系统的安全,方便排查系统故障,监控系统运行状况,挖掘出日志中蕴藏的信息来改进用户体验,定期对产生的日志进行分析显得十分必要。管理员可以查看在某段时间内所发生的事件,也可以通过对各个日志文件进行分析获取知识。由于日志具有数据量大,不易读懂的特点,如果仅凭借管理员查看日志记录的手段,其中所蕴含的有用信息也难以发现。使用传统的技术对这些海量日志进行分析时无论在时效,存储和计算量上都遇到了瓶颈。什么是Hadoop:
Hadoop 一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了 一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(highthroughput)来访问应用程序的数据,适合那些有着超大数据集(Iargedataset)的应用程序。HDFS放宽了(relax) POSIX的要求(requirements)这样可以流的形式访问(streamingaccess)文件系统中的数据。Hadoop是一个能够对大量数据进行分布式处理的软件框架。但是Hadoop是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop还是可伸缩的,能够处理PB级数据。此外,Hadoop依赖于社区服务器,因此它的成本比较低,任何人都可以使用Hadoop的架构:Hadoop有许多元素构成。其最底部是HadoopDistributedFileSystem(HDFS),它存储Hadoop集群中所有存储节点上的文件。HDFS (对于本文)的上一层是MapReduce 引擎,该引擎由 JobTrackers 和任务跟踪(TaskTrackers)组成。MapReduce 来源于函数式编程语言。它由两个动词Map和Reduce组成,“Map (展开)”就是将一个任务分解成为多个任务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果O对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是HDFS的架构是基于一组特定的节点构建的
,这是由它自身的特点决定的。这些节点包括名称空间节点仅一个),它在HDFS内部提供元数据服务;DataNode,它为HDFS提供存储块。由于仅存在一个名称空间节点,因此这是HDFS的一个缺点(单点失败)。
名称空间节点(NameNode)是一个通常在HDFS实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。名称空间节点决定是否将文件映射到DataNode上的复制块上。对于最常见的3个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。实际的I/O事务并没有经过名称空间节点,只有表示DataNode和块的文件映射的元数据经过名称空间节点。当外部客户机发送请求要求创建文件时,名称空间节点会以块标识和该块的第一个副本的DataNodeIP地址作为响应。这个名称空间节点还会通知其他将要接收该块的副本的DataNode。名称空间节点在一个称为FsImage的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是EditLog)将存储在名称空间节点的本地文件系统上。FsImage和EditLog文件也需要复制副本,以防文件损坏或名称空间节点系统丢失。DataNode也是一个通常在HDFS实例中的单独机器上运行的软件。Hadoop集群包含一个名称空间节点和大量DataNode。DataNode通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。DataNode响应来自HDFS客户机的读写请求。它们还响应创建、删除和复制来自名称空间节点的块的命令。名称空间节点依赖来自每个DataNode的定期心跳(heartbeat)消息。每条消息都包含一个块报告,名称空间节点可以根据这个报告验证块映射和其他文件系统元数据。如果DataNode不能发送心跳消息,名称空间节点将采取修复措施,重新复制在该节点上丢失的块。
发明内容
本发明的目的就是为了解决现有技术中存在的上述问题,提供一种基于Hadoop的分布式日志分析系统。本发明的目的通过以下技术方案来实现:
基于Hadoop的分布式日志分析系统,其中:包括至少4台PC机搭建Hadoop集群,其中一台作为中心服务器,有名称空间节点和服务跟踪功能,其他几台机器为从属服务器,有数据节点和任务跟踪功能;至少一台部署有日志系统的日志服务器,所述的日志服务器设置有对外开放接口,用于接收其他系统产生的日志数据,能够将不同系统的日志数据保存为统一格式的日志文件,对日志数据进行预处理;所述日志文件提交到Hadoop集群中。上述的基于Hadoop的分布式日志分析系统,其中:所述的日志服务器通过分布式文件系统将格式化后的日志数据进行分块,并将分块后的数据按照系统计算任务分配存储到系统中的每个DataNode,将日志文件中的所有日志独立开来形成一个键值对;对产生的键值对进行Map处理;然后将每条日志的内容进行解析并生成一个新的键值对,将这些键值对放入内存中等待合并处理;名称空间节点指派系统中的DataNode分别对数据进行Reduce处理;对所有DataNode上的数据进行汇总得到最终结果并写入输出目录的文件中。进一步地,上述的基于Hadoop的分布式日志分析系统,其中:所述的日志服务器通过实现HadoopAPI中提供的MapReduce算法,对之前上传的日志文件进行分析。
更进一步地,上述的基于Hadoop的分布式日志分析系统,其中:所述的日志服务器将经过Hadoop的MapReduce处理的结果数据,通过报表或是web页面形式来呈现分析结
果O本发明技术方案的优点主要体现在:由于Hadoop将海量的数据文件分发到每个DataNode,每个DataNode只需计算处理少部分数据。并且,Hadoop的每个DataNode在进行数据计算分析时平行处理的,Hadoop的DataNode是可以线性扩展的,最大可以实现上千DataNode集群配置。日志服务器只需实现日志数据分析的算法,就可以利用Hadoop来实现同步的分布式计算来解决海量日志分析中时效,存储,计算的瓶颈。利用Hadoop的分布式计算框架还可以很容易的扩展到处理其他海量数据文件的分析工作。本发明的目的、优点和特点,将通过下面优选实施例的非限制性说明进行解释。这些实施例仅是应用本发明技术方案的典型范例,凡采取等同替换或者等效变换而形成的技术方案,均落在本发明要求保护的范围之内。
具体实施例方式基于Hadoop的分布式日志分析系统,其特别之处在于:包括至少4台(或4台以上)的PC机搭建Hadoop集群。具体来说,其中一台作为中心服务器,有名称空间节点和服务跟踪功能,其他几台机器为从属服务器,有数据节点和任务跟踪功能。同时,为了便于数据处理的便利,拥有至少一台部署有日志系统的日志服务器,该日志服务器设置有对外开放接口,用于接收其他系统产生的日志数据,能够将不同系统的日志数据保存为统一格式的日志文件,对日志数据进行预处理。并且,将日志文件提交到Hadoop集群中。就本发明一较佳的实施方式来看,本发明采用的日志服务器通过分布式文件系统(HDFS)将格式化后的日志数据进行分块,并将分块后的数据按照系统计算任务分配存储到系统中的每个DataNode。并且,将日志文件中的所有日志独立开来形成一个键值对(序列号,一条日志内容)。同时,对产生的键值对进行Map处理。之后,将每条日志的内容进行解析并生成一个新的键值对(序列号,访问IP,访问耗时等需要分析的内容),将这些键值对放入内存中等待合并处理。在此期间,能够将相同的键值对进行合并。并且,名称空间节点指派系统中的DataNode分别对数据进行Reduce处理。由此,对所有DataNode上的数据进行汇总得到最终结果并写入输出目录的文件中。并且,在上述过程中,这些块分散地存储于不同的从属服务器上,每个块可以复制数份存储于不同的从属服务器上。以此,可以达到容错容灾之目的。进一步来看,日志服务器通过实现Hadoop API中提供的MapReduce算法,对之前上传的日志文件进行分析。同时,日志服务器将经过Hadoop的MapReduce处理的结果数据,通过报表或是web页面形式来呈现分析结果。这样,能够便于后续的数据分析和常看。通过上述的文字表述可以看出,采用本发明后,由于Hadoop将海量的数据文件分发到每个DataNode,每个DataNode只需计算处理少部分数据。并且,Hadoop的每个DataNode在进行数据计算分析时平行处理的,Hadoop的DataNode是可以线性扩展的,最大可以实现上千DataNode集群配置。日志服务器只需实现日志数据分析的算法,就可以利用Hadoop来实现同步的分布式计算来解决海量日志分析中时效,存储,计算的瓶颈。利用 Hadoop的分布式计算框架还可以很容易的扩展到处理其他海量数据文件的分析工作。
权利要求
1.基于Hadoop的分布式日志分析系统,其特征在于:包括至少4台PC机搭建Hadoop集群,其中一台作为中心服务器,有名称空间节点和服务跟踪功能,其他几台机器为从属服务器,有数据节点和任务跟踪功能;至少一台部署有日志系统的日志服务器,所述的日志服务器设置有对外开放接口,用于接收其他系统产生的日志数据,能够将不同系统的日志数据保存为统一格式的日志文件,对日志数据进行预处理;所述日志文件提交到Hadoop集群中。
2.根据权利要求1所述的基于Hadoop的分布式日志分析系统,其特征在于:所述的日志服务器通过分布式文件系统将格式化后的日志数据进行分块,并将分块后的数据按照系统计算任务分配存储到系统中的每个DataNodeJf日志文件中的所有日志独立开来形成一个键值对;对产生的键值对进行Map处理;然后将每条日志的内容进行解析并生成一个新的键值对,将这些键值对放入内存中等待合并处理;名称空间节点指派系统中的DataNode分别对数据进行Reduce处理;对所有DataNode上的数据进行汇总得到最终结果并写入输出目录的文件中。
3.根据权利要求1所述的基于Hadoop的分布式日志分析系统,其特征在于:所述的日志服务器通过实现Hadoop API中提供的MapReduce算法,对之前上传的日志文件进行分析。
4.根据权利要求1所述的基于Hadoop的分布式日志分析系统,其特征在于:所述的日志服务器将经过Hadoop的MapReduce处理的结果数据,通过报表或是web页面形式来呈现分析结果。
全文摘要
本发明涉及一种基于Hadoop的分布式日志分析系统,其特点是包括至少4台PC机搭建Hadoop集群,其中一台作为中心服务器,有名称空间节点和服务跟踪功能,其他几台机器为从属服务器,有数据节点和任务跟踪功能;至少一台部署有日志系统的日志服务器,所述的日志服务器设置有对外开放接口。日志服务器只需实现日志数据分析的算法,就可以利用Hadoop来实现同步的分布式计算来解决海量日志分析中时效,存储,计算的瓶颈。
文档编号H04L29/08GK103166785SQ201110418958
公开日2013年6月19日 申请日期2011年12月15日 优先权日2011年12月15日
发明者王专, 吴志祥, 张海龙, 马和平, 吴剑, 郭凤林, 王晓钟, 庞绍进 申请人:同程网络科技股份有限公司