摘要:随着电信企业的业务发展,其运营网络、业务系统及支撑系统等生产了大量的日志数据,这些数据蕴含了大量有用信息,传统日志处理方式限制了企业对海量日志文件的处理、分析及应用。针对电信企业特定应用平台产生的大量日志文件,实践了Hadoop平台的MapReduce 编程模型,该平台以HDFS作为底层文件系统,以Hbase作为可扩展的数据存储系统,更大幅度地提高了对日志数据分析的效率,具有较好的实用价值。
关键词:海量日志文件;Hadoop;MapReduce;Hbase;HDFS
中图分类号:TP391文献标识码:A文章编号:1005-3824(2014)04-0072-03
0引言
随着电信企业的业务发展,其运营网络、业务系统及支撑系统等产生了大量的日志数据,且这些数据以指数级增长。日志文件往往蕴含了大量有用信息,对其进行分析和挖掘十分必要。例如,我们可以从运营网络系统记录的日志数据,运用数据挖掘算法及时发现通信网络的潜在问题,从而为通信网络的服务质量提供保障。传统基于结构化数据的分析处理方式不能满足日志文件等半结构化及非结构化数据的分析处理要求[1],而Apache 的Hadoop平台的出现,为这类问题的解决提供了新思路,作为一个比较成熟的框架,它已被广泛地应用到日志分析、网络爬虫和科学计算等领域中,包括Yahoo,Amazon EC2和Facebook等大型的网站[2]。Hadoop平台借助于MapReduce 并行编程模型对海量数据进行处理,并提供了底层封装、任务分配、并行处理和容错等细节技术,用户只需集中注意力在自身要解决的分布式计算任务本身,极大地简化了分布式程序设计[3]。
1主要相关技术
由于Hadoop优势突出,基于Hadoop的应用已经遍地开花,尤其是在互联网领域。
1.1应用现状
多个互联网企业开发了 Hadoop 商业版本来为需要的用户提供专业性更强的技术支持[4]。Yahoo通过集群运行Hadoop,以支持广告系统和Web搜索的研究;Facebook借助集群运行Hadoop,以支持其数据分析和机器学习;百度则使用Hadoop进行搜索日志的分析和网页数据的挖掘工作;淘宝的Hadoop系统用于存储并处理电子商务交易的相关数据;中国移动研究院基于Hadoop的“大云”(big cloud)系统用于对数据进行分析并对外提供服务。
1.2Hadoop框架
Hadoop是Apache下的一个开源框架,广泛应用于海量数据的处理。Hadoop的核心由HDFS和MapReduce来体现。HDFS(Hadoop distributed file system)提供了一个稳定的文件系统,Hadoop的MapReduce模型在实时并行任务处理[5]的时候非常方便,程序员只需要关注具体的数据分析任务,而不必去考虑一些底层细节[6]。一个HDFS集群由1个称为名称节点(name node)和数个数据节点(data node)这2类节点构成,这2类节点以管理者―工作者模式运行。名称节点负责维护整个文件系统。数据节点是文件系统中实际的工作者,它们提供存储、定位块的服务,并定时向名称节点汇报存储块的信息[7]。此外,Hadoop 还提供一个分布式数据库(HBase)用来将数据存储或部署到各个计算节点上[8]。Hbase是一个分布式开源数据库,基于Hadoop分布式文件系统,模仿并提供了基于Google文件系统的Bigtable数据库的所有功能。图1为HDFS体系结构图。
2基于Hadoop的海量日志分析系统的设计本文以某电信公司受理终端的集约化管理平台为背景,设计了一个集日志采集、日志处理以及结果展示为一体的海量日志分析系统。图2为整个系统的框架图。
1) 日志采集模块:各个客户端定时将用户日志传送到指定的日志接收节点上,接收节点再上传到HDFS。
2) 存储及数据处理模块:Hadoop的HDFS用来存储实际的日志数据,采用mapreduce并行处理框架来具体处理提交的日志文件,并将处理结果存储到Hbase中。为了提高用户查询效率,最后还将Hbase中的数据导入到数据库中。
3) 结果输出模块:根据用户提交的查询请求来查询数据库,并将返回的查询结果以某种形式表现出来,供用户进行分析查看,返回结果以图表化形式展现,更为直观。
3系统实现
系统实现基于部署的1万多台客户端,为方便将日志上传至HDFS,采用开源的thrift通信组件来进行可扩展且跨语言服务的开发。日志接收服务器logserver上面运行Java服务用来接收客户端发来的日志上传请求。下文将给出具体实现过程。
3.1应用现状
客户端将日志上传到logserver服务器,这里考虑了负载均衡及logserver服务器有多台的实际情况,先访问分发服务器获取一台logserver的IP地址,分发服务器通过hash算法得到logserver服务器A的IP地址,并将这个IP地址返回给客户端。然后客户端通过thrift将日志上传到服务器A,再由服务器A调用Hadoop相关文件接口上传至HDFS。图3为日志采集的具体流程。
3.2日志处理
系统实现的集群配置总共有6个节点,其中1个作为元数据服务器节点name node,每个节点配置为双核CPU,4 G内存和500 GB硬盘。Hadoop版本为hadoop0.20.2cdh3u6,Hbase版本为hbase0.90.6cdh3u6,JDK1.6。在客户端上传日志到HDFS后,Hadoop集群上定时运行统计客户端操作行为的map/reduce程序,该程序会先将日志文件进行反序列化处理,提取出我们所关注的日志信息。然后将这些数据存储到Hbase上,接着从Hbase上对这些数据进行第二次处理,进行用户行为信息统计,最后将统计结果导入oracle数据库。图4为日志处理的具体流程。 3.3结果输出
前台以多种图表方式向用户展示统计结果。查询的流程为:用户向Web服务器发起查询请求,Web服务器接收到请求后,查询oracle数据库,然后数据库返回查询结果并以图表的形式展示给用户。图5为用户查询的具体流程。
4系统验证
本文利用某电信企业营业终端集约化管理平台的日志文件及数据进行了应用验证。
4.1验证方法
实际中,以企业客户端半年的日志作为输入。统计营业用户使用最频繁的客户端功能。
4.2验证结果
1)观察map/reduce后台运行状况。图6为map/reduce后台运行图。
2)前台展现运行结果如图7所示。
5总结与展望
本文针对电信企业应用平台产生的大量日志文件,实践了Hadoop平台 的MapReduce 编程模型,解决了传统方法在处理海量数据时候的弊端和不足。利用Hadoop结合Hbase,更大幅度地提高了对日志数据分析的效率,具有较好的实用价值。实践证明Hadoop 的MapReduce 编程模型为企业处理大规模海量数据提供了解决方案。
参考文献:
[1]ADAM O,ARCHANA G,WEI Xu.Advances and challenges in log analysis[J].ACM Queue,2011,9
(12):30.
[2]孙牧.云端小飞象Hadoop[J].程序员,2008,10(189):100-102.
[3]周锋,李旭伟.一种改进的并行MapReduce 编程模型[J].计算技术与信息发展,2009,6
(25):100-104.
[4]BORTHAKUR D, JOYDEEP S S, JONATHAN G. Apache hadoop goes realtime at facebook[EB/OL].(20110520)[2014-04-12].http://wenku.baidu.com/link?url=xPiXVLwnUqMuOJdUWn6YPNCzK5bUjy4BFXpSu4IViG26PJH5OkNesCeIzXIlSoGNJyXhULJ3AbISsJl2pGubHnqjMQj_Qy8Y-VJy5DO.
[5]LEE K H, LEE Y J, CHOI H, et al. Parallel data processing with MapReduce: a survey[J]. ACM SIGMOD Record, 2012, 40
(4): 11-20.
[6]程莹, 张云勇, 徐雷.基于 Hadoop 及关系型数据库的海量数据分析研究[J].电信科学,2010
(11):47-50.
[7]WHITE T.Hadoop权威指南[M].曾大聃,周傲英,译.北京:清华大学出版社,2010.
[8]曾理,王以群.Hadoop 集群和单机数据处理的耗时对比实验[J].信息科学,2009,10
(2):11-25.