




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3页基于大数据的日志采集系统的设计与实现目录TOC\o"1-2"\h\u31441基于大数据的日志采集系统的设计与实现 15536摘要 2231001绪论 3159361.1选题的背景 3270971.2选题的意义 3226761.3研究现状 337131.4系统设计思想及实施方案 587831.4章节安排 621076第6章介绍了该系统运行的情况及四个任务的展示图表。 670142主要技术和工具简介 788332.1HDFS 7238532.2Flume 762412.3Kafka 8213872.4Zookeeper 842042.5Hive 9124422.6本章小节 996783系统需求分析 10303123.1采集日志需求分析 1081013.2系统功能分析 1140313.3本章小节 1513274系统详细设计 16307414.1采集日志功能设计 16308364.2数据清洗功能设计 17133324.3用户行为分析设计 18131014.4数据展示功能设计 20100814.6本章小节 2081875系统具体实现 21311055.1系统开发环境 2166895.2系统数据库表设计 2228385.3系统环境搭建 25287795.4系统功能实现 27178605.5本章小节 31276186实验结果展示 3293426.1运行 32249516.2实验结果展示 34325306.3本章小节 3619930结论 3715141参考文献 38摘要伴随着IT行业的飞速发展以及去中心化,使得各种行业都离不开互联网了,与之带来的是数据的规模越来越大,信息越来越多。随着门槛的降低,电商企业也是发展的越来越多,面对大数据时代的来临,电商行业对于用户所产生的日志数据的需求也越来越大,从用户日志中可以提取出价值高的用户画像信息对业务发展非常有帮助。对于如何达到上述效果,本文设计了一个基于大数据的日志采集系统,该系统实现了日志采集、数据清洗、用户行为分析、数据展示等功能。日志采集主要通过Flume+KafKa+Flume管道将日志文件采集到HDFS;数据清洗则是在采集的过程中对一些格式不对,未采集完或空的数据进行过滤、清洗;用户行为分析则通过对业务需求划分然后通过SparkSQL进行计算分析;数据展示则是通过Sqoop传输数据到Mysql,然后通过可视化工具Superset展示在WEB端。日志采集系统的架构则是从两点考虑,第一点是日志采集系统采用框架与工具的考虑,根据日志模型的特点与用户行为分析来设计;第二点则是从日志采集系统的高可用及可靠性设计,从系统的整体流程来进行设计。关键词:数据采集,HDFS,Mysql,Spark,Kafka。1绪论1.1选题的背景 随着时代的发展,人们对互联网行业的深入研究和其互联网的飞速发展,使得互联网技术在这几年得到社会极大的普及,生活中吃穿住行都已经是互联网中的主流的业务,使得互联网已经称为生活中必不可少的一部分了,其丰富的选择,便利的服务,使人们的生活品质越来越高。由于IT技术的高速发展及去中心化,大量的数据产生,其规模越来越大。大量的数据和复杂的数据类型聚集在一起构造成的数据集,以及如何处理大量数据,体现了大数据时代的背景。大数据有四大特点:数据规模量大,产生速率快,各种各样的的数据,及数据价值积少成多。就个人而言,本人的计算机容量已经达到1TB了,身边的同学也大多都是这个量级左右,互联网用户越来越多,所产生的数据规模也会越来越大,所以建立一个日志采集系统势在必行。1.2选题的意义单论日志的意义其实并不大,其中有价值的地方在于日志中能分析出来什么。对于电商来说,日志分析的作用主要体现在用户行为分析。电商企业可以对用户的各种行为进行分析,来优化自己业务的流程,使得能为用户提供更好的体验;也可以将用户行为统计,分析出用户的画像,推荐喜爱的东西。这就是日志存在的意义。1.3研究现状1.3.1Hadoop研究现状日志采集系统最核心的技术是数据的采集与存储,Hadoop框架负责其中存储的部分。Hadoop来源于谷歌发行的三篇论文,后来加入了Apache基金会,其基础架构为分布式。Hadoop在2.X版本后只由三部分构成,第一个是分布式文件系统HDFS,它为Hadoop提供了存储数据的服务;第二个是分布式编辑模型MapReduce,Hadoop中的计算引擎;,第三个是资源调度管理器Yarn,对整个集群的资源作管理与调度。2004年Hadoop成为Apache基金会的一个子项目,在1.X版本的时候还没有Yarn,当时MapReduce即负责计算,又负责资源调度管理,只有一个节点干这些任务的话,对服务器压力太大,所以2.X版本的时候Hadoop增加了Yarn。Hadoop又分为三个发行版本,Apache是最为基础的;Cloudera最为简便,因为它里面集成了很多大数据的框架;让人上手最快的是HortOnworks,它提供的文档阅读起来比较方便。由于大数据的热门,早在2008年的时候国内就已经有许多大型互联网公司研究大数据框架了,比如阿里在08年的时候就已经开始研究基于Hadoop技术的数据处理平台“云梯“了,更有甚者,百度在12年的时候,其大数据集群节点已然超过2800个了,当然,对于早期的Hadoop框架来说,其内部也存在一些不合理的设计,而华为公司在处理这些设计时,给Hadoop提供了HA方案来解决高可用的问题。同时,在国外,著名的雅虎以及FaceBook等互联网公司也很早就使用了Hadoop技术,并根据自身业务需求调优了Hadoop。Hadoop从1.X版本发展到3.X版本目前已经非常成熟,虽然还是有些小BUG,但是可以使用其他工具来解决,并且生态体系也比较完善。本课题从日志采集系统的实际情况和业务需求出发,研究一套适用于互联网数据采集的一套日志采集系统并进行设计与实现。1.3.2日志收集方式研究现状目前国内外公司都有比较成熟的日志采集系统或者使用主流开源的日志采集工具处理业务。本节分析研究了目前比较主流的一些日志采集系统与开源工具并进行了比较。其中,较为著名的有Chukwa、Scribe、Kafka这几个框架与工具。 Chukwa与Hadoop相似,并且也是一个基于Apache的开源项目。Chukwa与Hadoop相似的地方在于,chukwa中有很多组件其实就是Hadoop的,比如HDFS,MaoReduce这两个。但是在计算分析时,Chukwa与Hadoop不同的地方在于,Chukwa使用了很多模块来进行计算分析,其中有三个是Chukwa自己的,比如Adaptor数据源,它的功能是给封装文件,同时能够使用Unix命令等;并且有一个能够操控Adaptor的组件Agent,它可以启动关闭Adaptor,并且记录Adaptor的状态信息,还有一个Collector可以合并多个数据源里的数据。Chukwa的架构图如图1-1所示:图1-1Chukwa架构图Scribe是一个开源的日志收集系统,是基于另一个框架Thrift来是实习的,所以其安装较为繁琐,但是容错性高,Scribe由两个ScribeServer组成,一个是central,另一个是local,central相当于父节点,而local相当于子节点,这种关系是对一个组内来说,在这个组内,子节点收集消息然后发给父节点。Scribe架构图如图1-2所示:图1-2Scribe架构图Kafka是一个由Scala语言编写的开源项目,相当于一个分布式消息系统。它具有高吞吐、高性能的两个特点并且可以与zookeeper搭配使用达到负载均衡的特点。Topic为消息主题,生产者生产的消息都要放在主题中,主题里有分区partition和副本两个概念。消费者想要消费数据需要先订阅消费哪个主题。1.4系统设计思想及实施方案本系统将采用Linux服务器,利用Hadoop框架、Flume框架、Kafka框架、Sqoop传输工具、Mysql数据库、Hive数据库、Spark分析引擎、Superset可视化工具、Zokeeper协调系统等众多技术与工具对日志数据进行分析处理。以电商为例提供一系列指标,由电商工资人员对比查看,了解网站的发展情况,并结合数据分析处理后的结果,对网站做出进一步的改进。本系统总体由四部份组成:日志采集、数据清洗、用户行为分析、数据展示。日志采集:负责将日志文件通过Flume+Kafka通道采集到HDFS上。数据清洗:负责将采集的日志文件内的脏数据与空数据清理。用户行为分析:负责按照用户行为分析将采集到的数据上传到Hive数据库中然后查询完成需求。数据展示:将用户行为分析的数据使用Sqoop导出到Mysql数据库中,然后使用superset链接mysql数据源,从而以图表的方式将数据展示在页面中。1.4章节安排第1章介绍了日志采集系统的选题背景以及选题意义,然后介绍了Hadoop框架,国内外日志采集的方式,并分析了日志采集系统对现代互联网发展的必要性。第2章介绍了日志采集系统所使用的框架以及工具,并分别介绍了这些框架及工具的原理及架构。第3章介绍了日志采集系统中的需求分析以及功能分析,其中在需求分析中介绍了日志及用户行为分析。第4章介绍了日志采集系统的详细设计以及模拟电商需求,将用户行为分析划分为四个任务。第5章介绍了系统的所需要的开发环境,对数据库表进行设计,将系统所需要的环境搭建好,并实现了系统功能。第6章介绍了该系统运行的情况及四个任务的展示图表。2主要技术和工具简介2.1HDFSHDFS是一个分布式文件存储系统,它由三部分组成:NameNode、DataNode、SecondaryNameNode。NameNode用来管理元数据及处理对数据的读写请求,DataNode负责存储数据,响应NameNode的请求,SecondaryNameNode用于将NameNode的信息备份下来,其工作机制如图2-1所示:图2-1SecondaryNameNode工作机制图2.2FlumeFlume是一个分布式日志采集系统。具有高可靠、高可用的特点。其架构图如下:图2-2Flume架构图其中Source、Channel、Sink是Flume的三个组件。Source负责接受数据,Channel负责缓存数据、Sink负责传输数据。每个组件之间都是由Event进行传输的,如果拉取过程中失败,那么这一次操作都不会执行。2.3KafkaKafka是一个居于分布式的消息队列,具有发布/订阅消息的功能。它有几个核心概念:主题Topic、机器Broker、生产者Producer、消费者Consumer。Kafka架构图如图2-3所示:图2-3Kafka架构图其中topic中有分区和副本的概念,而一个topic中是以message为单位的。生产者必须指定主题,而消费者也必须指定主题才能进行生产与消费。2.4ZookeeperZookeeper是一个为应用提供协调服务的系统,是分布式的、开源的。在日志采集系统中,Kafka和Hadoop都是由Zookeeper进行节点管理和集群服务的。Zookeeper的架构图如图2.4所示:图2-4Zookeeper架构图如图所示,Zookeeper集群中角色分为leader与follower,其中只要集群中存活一半以上的节点就可以运行下去。2.5HiveHive是一个类似Mysql的数据统计工具,它可以将结构化的数据映射称为一张表,然后提供类似于sql的查询功能。它的底层实现其实是将sql语句按照模板转换成为一个mapreduce程序。2.6本章小节本章介绍了日志采集系统需要的框架与工具,并介绍了它们的原理及框架结构,如HDFS组件,Flume框架,Kafka框架,Zookeeper框架,Hive数据库工具。通过介绍这些工具与框架,为下文整体系统的架构提供了理解的思路与架构方向。3系统需求分析3.1采集日志需求分析3.1.1日志简介本文提到的日志是电商用户行为日志。用户在使用APP或浏览器访问页面时,会触发页面的埋点操作,这些埋点操作会将请求头部的信息记录。这些记录的信息统计出来,就是日志信息。日志信息也有分类,一种是普通的页面埋点日志,一种是启动日志。普通埋点日志模型如图3-1所示:启动日志模型如图3-2所示:3.1.2日志采集日志生产后存放的位置都是在服务器上,本系统模拟的日志信息也在服务器上,而在分布式架构上,电商网站会有很多的节点服务器,一般这些服务器会采用负载均衡的策略来减缓服务器的压力。由于负载均衡的存在,后台服务器会根据每台服务器压力情况选择哪台服务器处理请求,所以日志可能存在于每台服务器上。在这种情况下,需要进行日志采集,将每台服务器上的日志数据都采集到同一台服务器上,这样再做日志分析时,就不用繁琐的从每台服务器上分析完再做统计了。根据整个日志采集系统的工作流程来看,该系统应做到以下几点:可靠性:在采集日志整个流程中,应使得数据不会丢失,在服务器节点出现问题后,会有备用的节点顶上,使其整个系统不会出现瘫痪等情况。扩展性:由于日志采集系统是基于分布式架构实现的,其目的是处理大规模的日志数据,当节假日的时候,服务器可能会出现压力瓶颈时,此时可以横向扩展节点,缓解服务器的压力,高峰期过去时,再将节点取消即可。3.1.3用户行为分析从电商用户日志的需求进行分析来说行为分析是指从日志中提取出用户操作,根据需求任务进行统计操作。但是日志结构大部分都属于半结构化,无法直接使用,需要将日志内的数据转换为结构化的,才能对日志数据进行统计分析。根据3.1.1节中电商日志的模型来说,其中页面埋点日志中具有动作日志,这段日志中包含action_id动作id、item目标id、item_type目标类型、ts动作时间戳这些信息,这些信息在项目中是比较重要的,对这些信息进行聚类,聚类的内容是用户的动作信息,然后将大量的用户的动作信息存入数据库中,筛选分类,可以得出用户对电商网站的热点聚集在哪一块。电商网站可以通过这些数据进一步的分析出网站服务的优化。3.2系统功能分析电商网站可能每时每刻都会产生日志,对其日志信息的格式设置为json,这样之后将数据导入至Hive中也比较方便。然后将日志采集到HDFS上,在采集的过程中对数据进行清洗,清洗后将数据导入到Spark-Hive中,根据需求和指标进行统计分析,之后将分析后的数据存入到Hive中,然后使用sqoop导出数据到Mysql,最后再用superser链接到mysql,然后用图表的方式把数据展示在web端中。从上可得出日志采集系统可以分为四部分:采集日志、数据清洗、用户行为分析、导出模块。系统用例图如图3-3所示:图3-3系统用例图系统活动图如图3-4所示:图3-4系统活动图采集日志:利用Flume+Kafka管道把日志数据上传到HDFS上,其活动图如图3-5所示:图3-5日志收集与上传活动图数据清洗:使用自定义Flume拦截器对收集的日志进行清洗转换。数据清洗转换活动图如图3-6所示:图3-6数据清洗与转换活动图用户行为分析:使用SparkSql将清洗后的数据按照用户行为划分的任务进行分析计算。数据统计分析活动图如图3-7所示:图3-7数据统计分析活动图数据导出:将Hive中的数据导出到Mysql中。数据导出活动图如图3-8所示:图3-8数据导出活动图数据展现:用superset链接上mysql后,将表内的数据以图表的形式展现出。数据展现活动图如图3-9所示:图3-9数据展现活动图3.3本章小节本章介绍了日志采集系统采集日志的格式及描述信息,然后对日志采集时所需要的需求作了描述,总结出日志采集系统在采集日志时需要可靠性、扩展性、规模性等特点。然后指出用户行为分析需求的标准及需要分析的指标,再做这些操作时需要筛选出日志的哪些信息等,最后分析出日志采集系统所需要的功能模块有哪些并画出了流程图及用例图等。4系统详细设计根据3.2节的功能分析,可以画出系统架构设计图,日志采集系统的设计架构图如图4-1所示。图4-1系统架构设计图其中logfile为模拟的日志文件,然后使用采集Flume进行采集,Kafka当缓存件,再由消费Flume消费到HDFS上,经过Spark-on-Hive统计分析按层生成数据库表,然后将由Sqoop将业务需求导出到Mysql,最后再由数据可视化工具将数据展示在WEB页面中。4.1采集日志功能设计采集日志功能使用Flume+Kafka管道来实现功能,此管道需要保持较高的吞吐量,所以需要并发Flume来实现,当有一台Flume挂掉时,相同属性的Flume会继续完成工作。Kafka在整个系统中提供了缓存与分发的功能,Flume通过Kafka生产者的身份将数据发送到topic中,而Kafka的topic又提供了订阅功能。假如在高峰时段,很有可能会出现消费者的消费速率远远低于生产者的生产速率,而这时,Kafka会将还没有被消费的数据缓存到消息队列中,等待消费者消费。根据以上说法,想要满足系统的稳定性、高效性、容错性,就需要采用分布式架构保证容错性,将所有的服务器节点放在同一网络下保证高效性,采用具有容灾机制的框架,可以保证系统的稳定性。日志采集系统使用三台服务器部署系统,三台服务器上都要安装Flume,因为要保持高速传输与稳定,所以采集Flume与消费Flume每个都至少要有两台或两台以上。生产Flume内部配置采用断点续传、多目录的TailDirSource,Channel采用KafkaChannel,省去Sink,提高效率。KafkaChannel数据存储在Kafka里面,而Kafka的数据又是存在磁盘中的,所以KafkaChannel其实也是存储在磁盘中的。采集到Kafka的流程如图4-2所示:图4-2日志采集流程图生产Flume先读取到日志文件,然后传入拦截器将不符合条件的数据全都筛选掉,之后将数据传入kafkachannel中,KafkaChannel再将数据传入到Kafka的topic中,然后再由Flume消费到HDFS上。Flume消费Kafka流程如图4-3所示:图4-3日志消费流程图Flume消费的内部配置采用KafkaSource连接kafka进行主题消费,FlieChannel将文件缓存在本地以防数据丢失,HDFSSink,将文件传到HDFS文件系统中。4.2数据清洗功能设计在采集到的日志数据中,可能会存在一些空数据或者脏数据。采集到的日志数据图如图4-4:图4-4日志数据图利用Flume中可以自定义拦截器这一点,在Flume采集中,将编写的脏数据拦截器配置加上,在Channel后,Sink前把脏数据过滤掉,在Flume消费中,将编写的修改时间拦截器配置加上,将时间错误的数据改正时间,达到数据清洗的。Flume内部拦截器结构如图4-5所示。图4-5Flume过滤器结构图4.3用户行为分析设计统计分析的功能由HiveonSpark实现,也可以由SparkSQL实现。其中SparkSQL更灵活,可以使用使用Spark中提供的API进行编程,写HQL、DSL,SparkSQL中的DF、DS转为RDD编程,而解析的时候,HQL、DSL会经过Spark的HQL解析器和优化器生成执行计划,而HiveonSpark这种模式只能由Hive去作解析与优化的功能,这样效率会低下。本系统将采用SparkSQL这种模式,对于日志数据来说,需要根据电商角度设置需要分析的内容。该模块总体流程大致为设置需求、建表、查询日志信息中的数据、将所需要的数据导入到表中。其中,日志信息模型如图4-6所示。图4-6日志信息模型图公共信息里包含了地区编码、手机品牌、渠道、手机型号、设备id、操作系统、会员id、app版本号等信息。事件主要记录应用内一个具体的操作行为,如操作类型、操作对象、操作描述等信息。曝光类型主要记录了用户对商品或页面的一种特殊操作,例如用户停留在某个商品上,那么此时曝光的类型就是商品。页面数据基于一个页面的用户访问情况,包括访问时间、停留时间、页面路径等信息。错误信息中记录了哪个设备在什么时间启动,然后启动的时候发生了什么错误。根据电商需求,将用户行为日志划分为四个任务:每日活跃度、每日新增设备、访客留存率、访问次数各渠道占比。每日活跃度:从0点开始算起,到次日0点时,中间的访问设备个数,其中相同的设备ID只算1次。在日志启动表中,将设备ID统计,然后去重累加,即可得到每日活跃度。每日新增设备:日志信息中有启动类型日志数据,其中有个is_new字段,当此字段的值为1时,即为新设备,为0时即为已经访问过的设备,只需要统计日志启动表中的is_new的值为1的字段,即可得知每日新增设备。最近连续三周活跃用户数:从前两个星期到这个星期中访问过的用户数,其中时间可以以当天减去21天来算,统计这21天中访问过的用户的id然后去重即可得到。访问次数各渠道占比:统计每个访问渠道的访问次数,然后相加得到总的访问次数,最后在拿访问渠道的次数除上总的访问次数即可得到访问次数各渠道占比。4.4数据展示功能设计此部分的主要工作是利用Sqoop工具,连接到Hive与Mysql中,将用户行为分析划分的四个任务的数据从Hive导出到Mysql中。Hive中虽然也存在导出命令,但是其命令繁琐,效率低下,假如需要导出较多张表就会很浪费时间,所以采用Sqoop导出数据既省时又省力。然后使用可视化工具Superset,在其里面设计数据源及表信息,然后用图表的形式将数据展示出来即可。4.6本章小节本章主要对日志采集系统的具体设计进行了细致的划分及具体内容的介绍,并画出了系统架构图。首先介绍了如果采集日志及消费日志到HDFS上,然后介绍了数据清洗用的自定义拦截器及时间拦截器,又将用户行为分析分为四个分析需求、分别是每日活跃度、每日新增设备、访客留存率、访问次数各渠道占比。最后设计了使用工具完成数据展示的功能。5系统具体实现5.1系统开发环境系统自身使用三台服务器进行部署,其中两台FlumeCollector节点,三台服务器kafka集群,一台服务器部署spark,一台服务器部署hive硬件环境如表5-1所示。表5-1系统开发环境配置项配置内容虚拟机数量3台虚拟机系统CentOS7.0CPU4核内存8GB硬盘50GBHadoop版本3.1.3Spark版本3.0.0Hive版本3.1.2Kafka版本2.4.1Mysql版本5.7.24Flume版本1.9.0Sqoop版本1.4.6表5-2服务器节点安装服务表服务名称子服务服务器sn101服务器sn102服务器sn103HDFSNameNode√DataNode√√√SecondaryNameNode√YarnNodeManager√√√Resourcemanager√ZookeeperZookeeperServer√√√Flume(采集日志)Flume√√KafkaKafka√√√Flume(消费Kafka)Flume√HiveHive√MySQLMySQL√SqoopSqoop√SparkSuperset√服务数总计10665.2系统数据库表设计在该数据库系统中,可以将日志文件分为两种类型的表,一种启动表,一种事件表,这些表中都包含了一些公共的信息。曝光日志表内记录了事件类型为曝光的每次曝光类型、曝光对象等等信息。表5.3曝光日志表(dwd_display_log)字段名称类型大小是否为空描述area_codevarchar10是地区编码brandvarchar20是手机品牌channelvarchar20是渠道is_newint20是是否首次启动modelvarchar20是手机型号mid_idint20是设备idosvarchar20是操作系统user_idint20是会员idversion_codevarchar10是app版本号during_timeint20是app版本号page_itemint20是目标idpage_item_typevarchar50是目标类型last_page_idint10是上页类型page_idint10是页面IDsource_typevarchar20是来源类型tsint20是app版本号display_typevarchar20是曝光类型itemint20是曝光对象iditem_typevarchar20是时间orderint20是曝光顺序pos_idint20是曝光位置dtvarchar20是 启动日志表里记录了每次启动的设备信息等,及广告加载和用户跳过广告时间等信息。表5.4启动日志表(dwd_start_log)字段名称类型大小是否为空描述area_codevarchar10是地区编码brandvarchar20是手机品牌channelvarchar20是渠道is_newint20是是否首次启动modelvarchar20是手机型号mid_idint20是设备idosvarchar20是操作系统user_idint20是会员idversion_codevarchar10是app版本号entryvarchar50是icon手机图标notice通知install安装后启动loading_timeint20是启动加载时间open_ad_idvarchar20是广告页IDopen_ad_msint20是广告总共播放时间open_ad_skip_msint20是用户跳过广告时点tsint20是时间dtvarchar20是 页面日志表里记录了设备每次访问的页面信息,及停留时间等。表5.5页面日志表(dwd_page_log)字段名称类型大小是否为空描述area_codevarchar10是地区编码brandvarchar20是手机品牌channelvarchar20是渠道is_newint20是是否首次启动modelvarchar20是手机型号mid_idint20是设备idosvarchar20是操作系统user_idint20是会员idversion_codevarchar10是app版本号during_timeint20是持续时间毫秒page_itemint20是目标idpage_item_typevarchar50是目标类型last_page_idint10是上页类型page_idint10是页面IDsource_typevarchar20是来源类型tsint20是dtvarchar20是 错误日志表里记录了设备启动的时候一些错误码及错误信息等。表5.6错误日志表(dwd_error_log)字段名称类型大小是否为空描述area_codevarchar10是地区编码brandvarchar20是手机品牌channelvarchar20是渠道is_newint20是是否首次启动modelvarchar20是手机型号mid_idint20是设备idosvarchar20是操作系统user_idint20是会员idversion_codevarchar10是app版本号page_itemint20是目标idpage_item_typevarchar50是目标类型last_page_idint10是上页类型page_idint10是页面IDsource_typevarchar20是来源类型entryvarchar50是icon手机图标notice通知install安装后启动loading_timevarchar50是启动加载时间open_ad_idint20是广告页IDopen_ad_msint20是广告总共播放时间open_ad_skip_msint20是用户跳过广告时点actionsvarchar20是动作displaysvarchar20是曝光tsvarchar20是时间error_codevarchar20是错误码msgvarchar20是错误信息dtvarchar20是 动作日志表里记录了设备启动后的一些动作信息,这些信息表明了设备在APP上在哪个页面干了什么等信息。表5.7动作日志表(dwd_action_log)字段名称类型大小是否为空描述area_codevarchar10是地区编码brandvarchar20是手机品牌channelvarchar20是渠道is_newint20是是否首次启动modelvarchar20是手机型号mid_idint20是设备idosvarchar20是操作系统user_idint20是会员idversion_codevarchar10是app版本号during_timeint20是持续时间毫秒page_itemint20是目标idpage_item_typevarchar50是目标类型last_page_idint10是上页类型page_idint10是页面IDsource_typevarchar20是来源类型action_idvarchar20是动作iditemint10是目标iditem_typevarchar20是目标类型tsint20是时间dtvarchar20是5.3系统环境搭建实现本系统,首先要安装与配置相应的环境与配置,如Hadoop框架搭建、Kafka搭建、Flume搭建、Hive搭建、Sqoop搭建、Zookeeper搭建、Superset搭建等。下面为相应环境搭建给出具体的实现步骤:5.3.1Hadoop搭建日志采集系统是基于Hadoop框架来搭建的,所以要在服务器上配置Hadoop框架及其所需要的各种环境。在PC上安装VM虚拟机软件及服务器系统,并配置IP等相关配置。本系统采用的是CentOs7。在服务器上创建新用户,不用root用户是因为如果操作错误会不可逆。添加sn用户,设置用户密码为sn,修改权限,使sn用户具有使用sudo命令的权限。修改主机名进入到/etc/目录下,修改network中hostname的值为sn101,然后重启即可,其他节点修改为sn102、sn103。关闭防火墙,修改静态Ip使用命令sudosystemctlstopfirewalld关闭防火墙,然后修改/etc/sysconfig/network-scripts/ifcfg-ens33中的配置信息,最后在/etc/hosts中映射其他主机的静态IP即可。配置SSH免密登录需要在每台节点上都生产密钥然后拷贝到其他节点上,除此之外,NameNode所在节点要单独配置root用户密钥然后拷贝到其他节点上。Hadoop安装下载hadoop安装包并解压安装包到/opt/module下。修改核心配置文件core-site.xml。修改HDFS配置文件hdfs-site.xml。修改YARN配置文件yarn-site.xml。修改MapReduce配置文件mapred-site.xml。添加DateNode联系其他节点信息workers。添加Hadoop的环境变量。将修改完成后的Hadoop分发给其他服务器节点,并将环境变量文件也分发出去。Hadoop启动Hadoop第一次启动前需要使用命令:hadoopnamenode-format格式化一次。然后使用start-all.sh命令启动,之后用Jps查看是否全部启动成功。在sn101上编写群起hadoop脚本,命名为hd.sh。5.3.1Zookeeper搭建下载zookeeper安装包并解压安装包到/opt/module下。配置服务器编号。修改配置文件zoo.cfg。将zookeeper目录下的bin文件夹。分发zookeeper目录及环境变量文件,并在每台服务器节点上修改服务器编号。在sn101上编写群起zookeeper脚本,命名为zk.sh。5.3.2Flume搭建下载flume安装包并解压安装包到/opt/module下。修改配置文件flume-env.sh。配置环境变量。验证是否安装成功,命令为flume-ngversion,如果显示版本信息即为安装成功。分发flume目录及环境变量文件。5.3.3Hive搭建下载hive安装包并解压安装包到/opt/module下。修改配置文件hive-site.xml。将JDBC驱动放到./bin下。将./bin添加到系统环境变量中。启动元数据服务。查看是否安装成功,使用命令:hive就能验证。5.3.3Sqoop搭建下载sqoop安装包并解压安装包到/opt/module下。下载mysql驱动到sqoop目录下的lib文件夹中。修改默认配置文件sqoop-env.sh。验证sqoop是否配置正确,使用命令sqoophelp。5.4系统功能实现5.4.1采集日志功能实现采集日志功能需要用Flume+Kafka实现。首先需要编写一个flume采集的配置文件去采集日志到kafka缓存中,配置如图5-1所示:图5-1采集Flume配置图然后在编写一个flume消费,把存在Kafka中的数据消费到HDFS上即可。同理也要编写一个flume配置文件,配置如图5-2所示:图5-2消费Flume配置图由于日志采集系统的日志文件均为随机生成的模拟文件,只需要在flume中指定生成文件的位置,然后启动flume采集与flume消费即可完成日志采集功能。为了方便功能的使用,需要在编写两个脚本来控制flume采集与消费的启动、停止。5.4.2数据清洗功能实现数据清洗功能是有前后两部分组成,第一部分是过滤掉空数据,不完整的数据,其具体的实现步骤如下:创建一个maven工程。把需要的依赖加载进去。继承interpector类,并实现它的四个方法,其具体代码在附录中。打包,将jar包放在flume中的lib文件夹下。在配置文件中加载自定义拦截器。完成之后其采集到的数据从图5-3变成了图5-4。图5-3未过滤之前的数据图5-4过滤后的数据第二部分是将凌晨时采集到的错误时间数据改成,其实现步骤与第一部分相同。5.4.3用户行为分析实现首先将导入进HDFS中的日志文件提取字段,然后导入到设计好的相应的事件表中。根据详细设计中的四个任务的需求创建任务表,然后按照所需要的信息进行查询,将查询后的结果导入到任务表中即可。在IDEA中连接Hive数据库后创建表,如图5-5所示。图5-5链接Hive数据库然后新建一个Query查询按照需求查询即可。5.4.4数据展示功能实现首先使用sqoop将数据从hive中导入到mysql中,然后使用superset展示出来。先使用Superset配置数据源,如图5-4所示。图5-4配置superset数据源配置Table表,此处只配置一张表示例。如图5-5所示图5-5配置显示table5.5本章小节本章主要描述了搭建日志采集系统中具体的实现过程。在创建系统之前需要先安装所需要的软件,并且搭建好系统所需要的实验环境。然后对系统的数据库表进行设计并展示表信息。之后对系统的采集日志功能、数据清洗功能、用户行为分析功能、数据展示功能分别进行了实现。6实验结果展示6.1运行根据上文对系统的设计与实现后,下面将对系统的运行做详细的介绍:运行服务器,使用sn用户,查看服务器运行程序情况。如图6-1所示:图6-1服务器运行程序从上图来看,服务器运行了Spark、Yarn、Hive、HDFS、Zookepper、等程序,其中从三台节点都有DataNode得知,当前运行的是Hadoop的分布式模式,同理,Zookepper也是。查看当前服务器安装程序状况,通过命令cd/opt/module进入目录,然后通过ll查看当前目录下的文件及文件夹,如图6-2所示:图6-2服务器安装程序图由上图可知,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年社会工作者职业水平考试初级综合能力试卷(社会工作专业伦理实践)
- 2025年大学辅导员招聘考试题库-学生职业生涯规划指导教学设计案例试题
- 销售督导培训流程
- 钢结构卸车安全技术交底
- 2025技术咨询服务合同模板示例
- 白银市中考题数学试卷
- 降压联合治疗方案
- 2025合同协议咨询服务合同定稿
- 钢丝强网边坡施工方案
- 【2025版】外研版(三起)三年级下册英语教学工作计划(及进度表)
- 退役军人创业扶持协议
- 2025年中储粮集团公司招聘笔试参考题库含答案解析
- 保护母亲河日关爱河湖保护母亲河保卫黄河课件
- 物业高压配电室培训
- 2024年度绿色办公区租赁合同(含可持续发展承诺)3篇
- 广西2025届高三第二次调研英语试卷含解析
- 综合应用能力事业单位考试(综合管理类A类)试题与参考答案(2025年)
- 2023年辽宁省中考试卷(语数英物化等共9套)带答案解析
- 改善医疗服务人文关怀
- 安全生产管理制度-普货运输
- DB41T 1508-2017 化妆刷标准规范
评论
0/150
提交评论