孙鲁淼
摘要:该文首先研究并使用了Flume集群将Web应用集群所产生的日志进行汇总,使用Flume内部组员Source来关联Web应用所产生的原始日志文件,并通过设计Channel管道供其进行数据传输,使用Sink来绑定其输出目的地;其次,搭建Hadoop集群并使用其内部组件HDFS来持久化Flume集群所汇总的日志数据,最后设计并搭建了基于Hive的数据仓库,依据Web应用所产生日志的数据格式,将HDFS中的原始日志数据灌入到原始数据表中,使用HiveQL对其进行分析。对网站的多维度PageView、访客的来源统计、用户关键路径转化进行了多维度且详细的数据分析。通过该文所设计并实现的数据分析实例,证明了大数据日志分析平台的可用性,解决了一般Web应用集群数据分析所难以克服的问题。
关键词:Flume;Hadoop;Hive;数据分析
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2019)03-0016-04
Abstract: Firstly, this paper researched and used Flume cluster to aggregate the logs generated by Web application cluster, using Flume internal group member Source to correlate the original log files generated by Web application, and design Channel pipeline for data transmission, use Sink to bind its output destination; secondly, this paper builded a Hadoop cluster and used its internal component HDFS to persist the log data collected by the Flume cluster, HDFS is a distributed file storage system, so it can support the massive log data generated by the Web application cluster of the system. Finally, a Hive-based data warehouse is designed and built according to the log generated by the web server, and was analyzed by HiveQL. the multi-dimensional PageView of the website, the source statistics of visitors, and the transformation of user critical path are analyzed in detail. Through the data analysis example designed and implemented in this paper, the usability of the large data log analysis platform is proved, and the problems that cannot be overcome by the general Web application cluster data analysis are solved.
Key words: Flume; Hadoop; Hive; data analysis
1 引言
近幾年来,各种类型的网站涌现出来,包括互动网站、内容网站、个人网站、电子商务网站等。其中有多种类型的拥有独立数据中心的网站,这些网站是独立的信息系统,增长的速度非常快[1]。该庞大的信息系统的特点是持续增加的信息量和不断变化的内容,它是由访问信息、超链接和各种文档构成。
当用户彼此交互时,经常有不同的关于信息及内容的选择。人们都期待着基于自己的爱好定制个性化的服务,依据自己的兴趣确定网站内容和网站风格。因而,人们开始思考研究,怎么样提升网站的管理和设计水平,怎么样知道用户的爱好,统计用户想知道的信息,并定制各用户信息[2-4]。要想解决此类问题,数据挖掘技术[5]成为较为常用的方法之一,由于信息网络非常庞大,人们想了解的知识及内容可以由分析人员通过信息挖掘获得。并且,信息挖掘是一个非常具有挑战性的工作,因为信息拥有动态性、庞大性、非结构化等特性[6-7]。
互联网上的信息众多,超出用户所需,据统计,用户所产生的大部分信息是无用的,日志挖掘需要重视的关键在于如何解决此项问题。挖掘内容的方向是以用户浏览的网页为基础,提取出数据分析师所需要的文本信息。结构挖掘的目的是从用户所访问的超链接结构中提取出数据分析所必要的信息。使用挖掘的目标是指从日志内搜索出用户的访问模式,这种模式或可测,或固定[8-9]。挖掘互联网应用日志的数据,是本文研究的重点,Web应用日志内包含了大量可进行分析的数据,其包含了网站相关的所有访问数据[10]。因此,对Web应用日志进行数据挖掘可以更加深入的理解用户的需求。
2 大数据日志分析平台的设计与实现
2.1 平台需求分析
大数据分析平台功能主要需求如下:
(1)对于平台的分析和计算功能,以及对其储存数据空间而言,日志数据的快速上升是极具挑战性的。
(2)如果平台服务器的日志采用不同的格式,当下平台采用的分析方法无法发挥价值。
(3)随着社会需求的增加,网页工程师要编写的有关数据分析的程序越来越多。这一大的工作量导致平台的分析程序面临调度,操作和维护等多方面的挑战。
本文中所提出的方案基于Hadoop和Hive架构,功能如图1所示。解析日志数据通常是由四个层面组成,分别是收集层、储存层、解析层和调度操作层。其中,收集层是一种引擎,其形成的前提条件有两种,即必须要具备Flume的数据收集和MapReduce数据处理引擎。而储存层的主要作用时启动shell,同时其发挥作用也需要有HDFS所收集的日志数据和文件。解析层就是指对Hive的日志进行解释和说明的引擎。调度操作层,其主要的功能是能够让用户发出的任务信号得到及时的回应,顺利进行操作。
2.2 日志采集与存储模块设计与实现
Flume作为一个分布式收集日志信息的系统,不仅可以借助Hadoop来完成有关数据的各类发送器的完善工作,还可以在对所采集到的数据进行初步处理后,顺利的发送给有需要的接收者。在Flume的收集某一确定日志数据的工作中,Agent代理发挥着辅助性作用。而它的内部结构主要是由以下三个组件形成,即Source、Channel和Sink。其中第一个组件主要发挥收集数据源的作用;第二个则发挥临时性的存储作用;第三个则主要是用来将数据发送到确定的数据库。三者的相互关系详见图2。
在规模文件的处理上,Flume具有显著的优势。第一、因为系统内部是一个并行式的构造,其可靠性强。如果某一个节点上发生问题,它可以快速地将数据传输到其他节点,保留现有数据。除此之外,由三个级别内在结构为系统提供保障,包括end-to-end、store-on-failure和best-effort。第二、Flume内部采用了由Agent、Collector和Storag组成的体系结构,因此,其控制性较强。
2.3 数据分析模块设计与实现
数据的查询、处理以及储存模块均在集群系统当中。但在实际的部署过程中,Hive往往是处在Hadoop的主节点上,即在NameNode上。
查询模块的作用以下三种:第一,对所获取的日志数据进行结构化处理发送至储存系统,同时在数据库表中反映出相关数据。第二、接收用户请求,为其进行查询提供帮助。第三、把对所得到的结果进行反映和返回。
Hive在进行数据导入工作时,往往将其已有的数据按照HiveQL的逻辑对数据进行处理。例如,如何将表或分区映射到实际的目录或文件中。同时,保障元存储数据的高效率查询以及其可信性也十分重要。如前所述,元数据信息中含有很多重要的信息因素,包括表格、英文字母、行列等。而这些信息在访问Hive的过程中发挥关键性作用,即元数据在Hive中的起等同于目录的作用。所以,如果元数据具有强大的可靠性和准确性,对提高系统查询和储存效率具有至关重要的作用。
Hive的运作非常依赖元存储信息,只有元存储信息的基础上,Hive才能将文件发送到HDFS。因此,必须要对该类信息进行备份。我们在系统中设计了备份器。由于系统处理的是大规模的数据,我们要充分考虑备份服务器的空间大小。在设计时需要保持备份服务器的空间与集群中的主节点的相对应。除此之外,因为备份服务器不参与节点操作过程,因此在计算集群大小时,我们不考虑该服务器。
当用Hive来处理所有数据时,它会将数据发送到/user/hive/warehouse中进行储存,形式各不相同。表作为基本模型,一般情况下会被存储到user/hive/warehouse目录中。比如说,如果创建一个新的表,命名为test,表中的数据将存储在/user/hive/warehousr/test目录下。
关系数据库的索引极为重要,它可以提高效率,节约时间。而对Hive而言,与索引发挥相同作用的是前面所述的划分。在实际操作中,“分区”的保存形式是以目录的形式存储的。分区根据表的值将表的内容划分为不同的部分。每个部分都存储在相应的目录中。如果表的内容按日期分区,则表的存储格式与以下类似:
使用Hive数据库的主要优势是能够明显提高数据查询的效率,主要是因为Hive在进行查询检索时不是对全部库表进行扫描,这一机制在数据量庞大时,对于查询效率的提升尤为显著。例如,当客户向数据库发起查询特定一天的数据时,Hive无需进行全库扫描,而是可以定位到所需目录下进行检索,提供所需内容。在Hive中,数据的分区设置同传统关系型数据库中设置索引原理类似。
我们将存储网站站点生成的日志到HDFS中,以减轻站点的存储压力,为了存储网站站点生成的日志,我们将为网站生成的日志创建一个表,表名格式是:服务器名_ori。此表用于存储由站点生成的未处理日志文件。例如,我们为主机my_server创建一个表来存储由它生成的日志:
到目前為止,完成了将站点生成的日志内容存储到Hive数据仓库中的过程,但是,如前所述,原始的、未处理的日志适合于处理。对于我们的系统,我们只对用户访问的页面感兴趣,对于用户在访问过程中点击了哪些内容并不关注,因而需要将系统中我们不关注的信息进行清理。在去除不关注信息后,将剩余数据结果存储到Hive数据仓库内已经建好的数据库表中。
3数据仓库建设
3.1 创建原始数据表
大数据日志分析需要在Hadoop集群上运行任务,依赖的数据分析工具是Hive。因此,需要将原始数据线加载到Hive数据残酷中,之后才能够进行真正的数据分析。
1)在hive仓库中建立原始数据表:
3.2 导入数据
3.3 ODS层明细宽表构建
3.3.1 需求概述
对于所有的数据,其分析均是分阶段进行的,阶段的划分以数据仓库层次为标准。分析首先从ODS原始数据提取重要的或相关的数据并将其形成表格,例如将字段信息做细化处理,以明细表形式给出或时间等非结构化的参数值作结构化处理,最后通过对这些表格进行深入分析和统计,得出所需的指标及其相关参数。
3.3.2 ETL实现
4 结束语
本论文所研发的Web日志分析系统基于Hadoop平台。首先阐述了目前日志数据解析的必要性和分布式技术的发展现状。随后提出现有日志数据解析方案在分析大量数据时的局限性,并指出可以结合分布式技术、数据挖掘主要技术以及普通技术,在此基础上再进行数据解析。本文在Hadoop这一平台上提出一个具有日志收集、数据存储、预处理、信息统计以及深度挖掘功能的Web日志分析系统。利用HIVE数据仓库的HQL脚本对数据实施索引统计并基于统计结果解析网站运行状况。本文最终构建出囊括Hive和Hadoop部署安装在内的Hadoop平台,用于收集储存数据。
實验结果表明,本论文提出的方案不仅可以存储分析海量数据,还能够提高数据分析和管理的效率,基本完成设计目标。
参考文献:
[1] 朱珠. 基于Hadoop的海量数据处理模型研究和应用[D]. 北京邮电大学, 2008.
[2] Srinivasan S, Krishna V, Holmes S. Web-log-driven business activity monitoring[J]. Computer, 2005, 38(3):61-68.
[3] 周则顺, 水俊峰, 夏红霞, et al. 基于Web日志挖掘的智能站点体系[J]. 武汉理工大学学报(信息与管理工程版), 2003, 25(6):72-75.
[4] Kolari P , Joshi A . Web mining: research and practice[J]. Computing in Science & Engineering, 2004, 6(4):49-53.
[5] 凌志泉. Web日志挖掘技术的研究与自适应Web站点的构建[D]. 天津大学, 2003.
[6] Sharma K , Shrivastava G , Kumar V . Web mining: Today and tomorrow[C]// International Conference on Electronics Computer Technology. IEEE, 2011.
[7] Singh B , Singh H K . Web Data Mining research: A survey[C]// IEEE International Conference on Computational Intelligence & Computing Research. IEEE, 2011.
[8] Nasraoui O , Soliman M , Saka E , et al. A Web Usage Mining Framework for Mining Evolving User Profiles in Dynamic Web Sites[J]. IEEE Transactions on Knowledge & Data Engineering, 2012, 3(4):202-215.
[9] Hussain T , Asghar S , Masood N . Web usage mining: A survey on preprocessing of web log file[C]// International Conference on Information & Emerging Technologies. 2010.
[10] 郝璇. 基于Apache Flume的分布式日志收集系统设计与实现[J]. 软件导刊, 2014(7):110-111.
[11] 霍夫曼, 佩雷拉张龙. Flume日志收集与MapReduce模式 : Apache Flume : distributed log collection for hadoop instant MapReduce patterns-hadoop essentials how-to[M]. 机械工业出版社, 2015.
[12] Xhafa F , Naranjo V , Barolli L , et al. On Streaming Consistency of Big Data Stream Processing in Heterogenous Clutsers[C]// International Conference on Network-based Information Systems. IEEE, 2015.
【通联编辑:王力】