基于大数据技术的日志统计与分析系统研究

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:wangxiaoyuzhang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要: 随着大数据时代的来临,网络数据呈现爆炸式增长,IDC数据表明,全球企业数据正以62%的速度逐年增长,大量数据当中隐藏着巨大的商业价值,引起了企业的广泛关注。然而,大数据给数据的同步、存储、和数据统计分析带来了一定的问题和困难。本文旨在实现基于大数据技术的日志统计分析系统,解决了现有的工具逐渐无法有效的处理大量数据的问题。 本文在对此系统进行需求分析的基础上,设计了以多个分布式集群为基础,数据源层、存储层、计算层相互融合的体系结构,设计并实现了日志数据转码、日志传输、自动识别新文件的产生、日志存储、数据查询的功能。日志数据转码对于GBK格式编码的日志进行格式转换;日志传输提供数据从不同终端到储存系统的数据收集、聚合和移动,以便模拟生产环境中数据实时产生的过程;自动识别新文件的产生,不同模块之间完成通信加载数据功能。本文综合使用了大数据生态圈的各种开源技术,包括Hadoop、Flume NG、Kfaka、Sqoop、Hive、MySQL。从日志数据的收集同步,到日志的存储和计算分析,到最终分析结果的查询,涵盖了使用大数据技术进行日志统计分析的典型流程。本文使用开发语言Java和shell脚本语言,开发工具为IntelliJ IDEA,VIM。在多台CentOS6.5机器之上搭建集群,进行分布式存储和计算。用户通过统计分析系统进行日志同步、传输、任务提交和调度、结果查询等操作。
  关键词:大数据;网络数据;日志统计分析;流程自动化
  中图分类号:TP311 文献标志码:A 文章编号:1009-3044(2016)34-0009-03
  1 概述
  搜索引擎的日志文件是由使用者的搜索行为产生的,是对用户在终端行为的一种记录。通过对日志文件的分析可以获得很多有价值的数据,可以对不同用户的个性进行更加全面的分析,实现更加个性化的推荐方案。随着时间的推移,网站的用户访问量快速增长,搜索引擎产生的日志数据快速增长。传统的日志分析方式已经无法满足大数据量日志分析的需求,使用大数据技术可以为日志分析设计一整套自动化流程包括从数据采集,传输,存储,计算和查询,这种方式可以使得数据的处理过程更加高效。
  2 集群概述
  本系统为了模拟真实线上搜索日志产生的情况,使用脚本语言模拟连续生成的日志数据,通过Flume集群进行实时的采集。Flume采集到数据之后,使用Kafka集群对数据进行消费,将数据先存入到HDFS文件系统中。搭建Hive集群使用HQL语句对数据进行过滤分析。使用Sqoop工具把Hive中的数据导入到MySQL提供实时查询。
  目标日志是由搜狗实验室提供的用户查询日志。下面是访问日志中一条典型记录:
  00:00:01 0014362172758659586 [明星合成] 64 21 link.44box.com/
  這行内容由6项构成:1)访问时间。2)用户ID。3)查询词。4)该URL在返回结果中的排名。5)用户点击的顺序号。6)用户点击的URL。其中,用户ID是根据用户使用浏览器访问搜索引擎时的Cookie信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户ID。
  3 系统的设计与实现
  3.1 系统的基本目标
  利用分布式的架构对模拟生产环境下实时产生的用户查询日志进行采集,传输和存储,按查询过滤条件对日志数据进行分析。
  3.2 集群部署
  3.2.1 Hadoop部署
  图1介绍了Hadoop集群部署的架构,包含一个主控节点namenode和两个从节点datanode。namenode主要职责是跟踪文件如何被分割成文件块、文件块又被哪些节点存储、以及分布式文件系统的整体运行状态是否正常等工作。ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序。SecondaryNamenode定时查询namenode节点中集群启动时对文件系统的改动序列,并保持同步;然后将得到的信息更新到namenode节点文件系统快照文件中。Nodemanager管理Hadoop集群中单个计算节点,包括与ResourceManager保持通信,监督任务的生命周期管理,监控每个任务的资源使用,追踪节点健康状况,管理日志和不同应用程序用到的附属服务。
  3.2.2 Flume部署
  Flume本身不限制Agent中Source、Channel和Sink的数量。因此Flume Source可以接收事件,并可以通过配置将事件复制到多个目的地。如图2所示,可以将事件发送到多个Kafka终端,进行分布式的处理过程。
  3.2.3 Kafka部署
  图3介绍了Kafka集群部署的基本架构,Producer称为消息的发送者,而消息接收者称为Consumer。Kafka集群由多个实例组成,每个节点称为broker,对消息保存时根据Topic进行归类,为了加快读取速度,多个comsumer划分为一个组,并行消费一个topic。Kafka集群中通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。
  3.3 日志数据的HDFS存储
  图4展示了HDFS的工作原理。当用户查询日志进入集群时,HDFS Client负责切分文件,与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。NameNode是m主节点,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。Datanode是从节点,存储实际的数据,汇报存储信息给NmaeNode。Secodary NameNode辅助NameNode分担其工作量;定期合并fsimage和fsedits,推送给NameNode;紧急情况下,可辅助恢复NameNode。   3.4 日志采集与传输
  3.4.1 模拟产生日志
  通过shell脚本模拟生产环境下日志产生过程,实现原理是把已经存在的搜狗用户查询日志内容重定向到另一个文件中,利用时间字符串定义初始文件的名字,将日志按照一定的时间间隔进行传输。
  3.4.2 文件到Kafka
  文件传输到Kafka的过程使用Flume实现。Flume的配置文件中使用SpoolDirectorySource实现,定义type为spooldir,指定数据输入路径spoolDir,实现文件输入。本文使用的搜狗用户查询日志采用GBK编码格式,通过修改SpoolDirectorySourceConfigurationConstants参数,定义InputCharset配置项为GBK,实现GBK编码格式的文件输入。Flume的source端输出使用OutputCharset配置项定义文件输出格式。从Flumed的Source传输到Channel时,为了使日志按时间格式显示文件名,本文通过将文件名信息传递到Kafka由其依据名称生成目标目录的方式实现;利用Flume的event中的header传递文件名信息时,定义键值目录结构为a/b/c;相关的配置项为fileHeader和fileHeaderKey;定义fileHeaderKey的值为Key。最终实现带着目录结构的数据文件缓存到Kafka。
  3.4.3 Kafka到hdfs
  Kafka到hdfs数据的持久化,本文通过自定义Kafka Consumer来实现。通过获取消息体中每条消息的Key,获取日期字符串;然后将数据存入相应位置。文件传输完毕之后重命名为.Done结尾,作为文件传输完毕的识别标志。定义输出流时开启独立的线程将内存中的数据刷写到hdfs,减少数据的丢失实现数据在hdfs的固化。
  3.4.4 Hdfs到Hive
  hdfs数据传入到Hive。实现方法是定义输入文件路径和指定hive table两个参数,取出输入目录下结尾是.Done的文件,解析出时间参数加载到Hive。
  3.5 日志分析系统流程
  图5展示了整个日志分析系统流程。日志采集以及传输使用Flume Kafka的方式。Flume设计思想是是数据的多样性、数据来源的多樣性、数据流向的多样性;Kafka设计目标是高吞吐量、高负载(topic下可以有多个partition);所以在日志分析系统使用Flume Kafka架构可以使系统更加高效,保证高性能。存储使用HDFS实现,实现分布式存储目的;查询使用Hive中的HQL语句,HQL语句查询过程是以mapreduce的方式实现。Sqoop具有数据传递的功能,利用Sqoop的特性将Hive中的数据导入MySQL实现SQL语句的实时查询。
  4 结果分析
  图6展示了数据在各个阶段的情况。下图分为六个部分,第一部分展示了模拟实时产生172万条搜索日志数据进入系统的情况;第二部分展示了日志数据通过Flume收集进入Kafka;第三部分展示了Kafka开始消费日志数据,并且将数据加载到hdfs;第四部分展示了数据从hdfs加载到Hive;第五部分展示了日志数据文件加载到hdfs之后存储的目录结构;第六部分展示了使用HQL语句完成查询的功能。整个系统启动之后172万条实时产生的日志数据的采集、传输、进入存储系统等过程自动开始运行,对于大量数据的采集、传输、与存储进行了分布式高效的处理,达到了本文研究的目的。
  5 小结
  大数据技术受到全世界开源社区的热烈支持,发展的越来越成熟,在未来的优势越来越明显。用大数据技术能很方便地在廉价机器上实现分布式数据处理架构,多个系统之间可以很好地协同工作,体现了系统协作与互联、经济性、性能和可伸缩性、容错性等很多方面的优点。以本文实例为基础可以进一步进行拓展,对大数据任务进行更深入和详细的分析和探索,为各个领域的大数据处理提供参考。
  参考文献:
  [1] 陈森博,陈张杰.基于Hadoop集群的日志分析系统的设计与实现[J].电脑知识与技术,2013,9(34): 7647-7650.
  [2] Tom White.Hadoop权威指南[M].北京:清华大学出版社,2015.
  [3] Hari Shreedharan.Flume构建高可用、可扩展的海量日志采集系统[M].北京:电子工业出版社,2015.
  [4] Edward Capriolo,Dean Wampler,Jason Rutherglen .Hive编程指南[M].北京:人民邮电出版社,2013.
  [5] Jonathan R Owens,Jon Lentz,Brian Femiano .Hadoop实战手册[M].北京:人民邮电出版社2014.
其他文献
本文结合望海珍珠湾综合开发建设项目码头工程的方块施工,通过加入引气剂来提高混凝土的抗冻性,通过混凝土冻融破坏的分析和实际施工情况,提出了抗冻性混凝土原材料的选择和配合
党支部书记是企业项目党建工作的带头人,其作用的发挥对党支部能否形成坚强的领导核心,能否发挥战斗堡垒作用有着直接的影响;同时党支部书记又是项目领导班子成员之一,必须站在思
中国地下河洞穴并非都适宜旅游开发,需要确定适宜的评价因素对其资源条件进行评价。研究选取洞穴规模、景观资源、区位、水量、地下河规模形态、水质作为影响岩溶地下河旅游
PON技术可以提高光纤资源的利用率,但是在上行链路中容易受到干扰,影响PON系统的稳定运行。为解决这个问题,该文基于决策树理论,提出了基于决策树的ONU故障诊断算法。该算法
目的:探讨新辅助化疗对乳腺癌组织病理学及免疫组织化学的影响。方法:观察术前经粗针吸活检(core needle biopsy,CNB)确诊的80例乳腺癌新辅助化疗后肿瘤标本的组织病理学改变
<正> 安徽省寿县古城位于八公山下,据明嘉靖《寿州志》记载:“寿阳(寿县)南引荆汝之利,东连三吴之富,北接梁宋,西援陈许,外有江湖之阻,内有淮淝之固。”由此可见,寿县城选地
运行中的电气设备发生故障后,在现场及时的对设备进行电气试验,是查找故障原因,辨别设备的健康状态,判断其能否继续运行及初步制定下一步检修方案是很重要的一环。目前对电气设备
目前我国的航空事业正处在蓬勃发展的阶段,航空电子系统软件的规模越来越大,系统的复杂度也越来越高。因此,对于航空电子系统软件的验证方法与验证手段的需求也越来越高。在
随着全球经济的快速发展以及我国“一带一路”的深入建设,中国对外贸易持续攀升,中国农产品的竞争力也在不断提高。黑龙江省地处东北亚核心地带,在“一带一路”中蒙俄经济走
随着高校信息化建设的不断推进,高校对数字化教学资源的依赖日益凸显。文章分析了高校数字化教学资源共享的现状,指出云技术在高校数字化教学资源共享中的优势,并且针对基于