基于Hadoop的海量网分数据MapReduce排序算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于Hadoop的海量网分数据MapReduce排序算法
电信运营商的客户数据以万亿比特计,若充分利用这些数据,深入分析、挖掘隐含在这些数据中的有用信息,将有助于移动运营商更好地管理客户关系。

为达到该目的,文章研究一种采用Hadoop 技术对网分数据进行排序的方法,将网分位置排序算法用MapReduce 技术改写,极大地提高了排序的效率,同时不影响排序的精度。

【摘 要】【关键词】云计算 数据挖掘 Hadoop MapReduce 网分数据排序
严关武 崔杨毅 刘 恒 黎宏剑 卜 立 中国移动通信集团广东有限公司中山分公司
收稿日期:2012-09-24
责任编辑:陈雍君********************
1 绪论电信运营企业是典型的数据密集型企业,保存有海量的用户呼叫数据、WAP与GPRS日志以及其他业务系统日志等。

正确地分析这些数据从而获得有用的信息,能够使电信企业更好地向用户提供服务、发现更多的商机,同时可以分析市场状况,以便于制定营销策略、调整资费策略。

因此,数据挖掘技术在电信业中有重要的应用价值。

但进行此类数据挖掘,需要投入大量的金钱和人力,用于购置、维护硬件设备以及购买相应软件。

这主要是由于电信行业中产生的经营日志数据量巨大,一般技术无法处理。

以话单数据为例,一个较大规模
城市每月的数量可以达到100GB,对于大型直辖市,这个数字可能超过1TB。

如此大的数据量,传统的数据库工具无法负荷,必须采用专用数据挖掘与分析工具,例如SASEnterprise Miner、SPSS Clementine、IBM IntelligentMiner等,且这些软件一般需要花费百万以上的年费。

而且,其挖掘效果仍有待提高[1]。

某市级电信运营商每天产生大量的地理位置信息数据,例如通话记录数据、短信数据、位置更新数据,而如何从这些海量数据中分析当天每位用户地理位置信息,将是一个需要考虑算法效率的问题。

如今每日数据的分析在数据库中至少需要八小时的时间,得出的计算结果根据市场需要仍然需要进一步分析。

如此耗时的计算并不能够很好的适应当前快速变化的市场需求。

因此如何能够快速地统计所要的信息,是
非常重要的问题。

高性能计算机普遍相对昂贵,而除了计算之外,海量数据的存储也是一个重要的问题。

因此需要一个能够存储海量网分数据,能够进行所需统计,并且最好能够在统计结果的基础上快速使用数据分析程序进行有效的针对市场需求的分析。

除此之外,解决方案还必须尽量廉价、方便、快捷。

而采用Hadoop平台,能够有效满足此类需求。

云计算技术[2]可以弥补传统数据挖掘成本高、性能差的缺陷。

通过云计算技术,可以利用已有设备搭建分布式、高性能、可伸缩的数据分析中心,从而节省设备投入和软件投入成本,提高执行效率,为构建低成本、高效率的数据挖掘与分析系统提供了可能。

Hadoop就是构建此类系统的热门技术。

2 云计算和Hadoop平台介绍
随着时代的发展,人们对数据的海量存储和超级计算能力提出了更高的要求,这在过去几十年里促进了硬件的发展,使芯片集成度符合摩尔定律呈指数增长,但是硬件的发展受到了物理极限的约束。

另外,由于传统并行编程模型应用的局限性,客观上要求一种容易学习、使用、部署的新的并行编程框架。

因此,产生了云计算。

云计算概念由Google提出,是对分布式处理、并行处理、网格计算及分布式数据库的改进处理[3]。

目前,单一节点的计算能力已经遇到了瓶颈,因此,利用云计算技术获取网络中强大的计算资源,将消耗大量计算资源的复杂计算通过网络分布到多节点上进行,是当前一种行之有效的解决方案。

互联网促进了信息流通,也带来了信息的爆炸式增长,最新的IDC研究报告指出2010年全球信息量将进入ZB时代,并且每年以60%的速度上升,这意味着每18个月全球信息数据量将会翻倍。

面对不断拓展的惊人的数据规模,海量信息的存储与管理、实时处理、数据搜索、数据挖掘与智能应用等信息处理能力面临新的挑战,信息技术架构迫切需要以动态可伸缩为特点的支持海量数据处理的新的存储计算模式。

Hadoop是一个能够对大量数据进行分布式处理的,可靠、高效、可伸缩的软件框架[4-5]。

可靠的,是因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理;高效的,是因为它以并行的方式工作,通过并行处理加快处理速度;可伸缩的,是指它能够处理PB级数据。

此外,Hadoop依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上非常理想。

Hadoop上的应用程序也可以使用其他语言编写,比如C++。

Hadoop是一个分布式系统基础架构,由Apache 基金会开发。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。

充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。

HDFS有着高容错性的特点,并且设计用来部署在低廉的(l o w-c o s t)硬件上。

它提供高传输率(h i g h throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。

HDFS放宽了POSIX的要求,这样能以流的形式(streaming access)访问文件系统中的数据。

3 基于Hadoop的海量网分数据MapReduce
排序算法
3.1 问题描述
现有“短信详细表”、“语音详细表”和“位置更新表”。

每日都会产生大约10G的数据,其中都包含了用户位置信息。

现在要把数据进行汇总,把三个表格汇总成一个表,只保留必要的信息,如表1:
表1 网分基础表
序号字段字段描述
1IMSI用户IMSI
2IMEI用户手机IMEI
3CGI基站代号
4TIME记录发生时间
5CALLDUR
当是语音记录时,该字段表示通话
时长。

6UPDATETYPE通信类型
7MTCALLNUM主叫号码
8MOCALLEDNUM被叫号码
9RESOUCETYPE
数据来源表示:1、语音;2、短
信、3、位置
除此之外,根据网分基础表,需要统计每一个用户在不同地理位置的使用时间,如表2:
表2 网分位置表
序号字段字段描述
1IMSI用户IMSI
2CGI基站代号
3STAY_TIME停留时间
4UPCOUNT上行指令次数
5TIMFLAG时间段
其中STAY_TIME的计算方法如下:若用户T1的信息表中有两条位置信息,如表3:
表3 假设位置信息
IMSI基站时间
Imsi1C119:00
Imsi1C219:05
那么假定从19:00开始到19:05的五分钟时间内,用户T1都在基站C1处停留。

网分基础表和网分位置表详细记录了用户的具体通信行为以及相对应的位置信息。

据此可以十分方便的进行下一步分析,是网分数据分析的基础。

但是计算这两个表需要庞大的计算资源和存储资源,要解决的问题是,需要提供一个切实可靠的存储方案,用于存储海量网分数据。

另外,需要一个高效可行的程序进行初步分析,形成网分位置表用于进一步分析。

3.2 基于Hadoop的海量网分数据MapReduce
排序算法
按上述实际问题,必须考虑到:
(1)根据实际项目需要,提供的网分数据存储方案必须是可靠的,其必须能够面对各种可能出现的故障、错误,或者数据丢失,其安全性必须有保障。

(2)另一方面,对网分数据的基础分析和汇总必须尽快完成。

更具体的,对于一天的网分数据(约10G大小),必须在2小时以内完成集群计算得出结果。

(3)同时,由于数据源的不稳定性,程序必须尽可能地处理可能出现的错误,能够面对各种意外。

因此决定采用H a d o o p平台的分布式文件系统(HDFS)进行存储数据,并使用基于其上的分布式计算系统( M apReduce)进行计算。

首先使用H a d o o p平台的H D F S文件系统存储每日用户网分数据,因为使用了廉价的淘汰机器作为集群节点,设置三个副本备份策略以防范灾难。

由于Hadoop平台的设计优越性,同一个副本有两台计算机或以下出现故障时,系统会使用剩余的副本进行平衡,使得整个平台总是存在三个副本。

根据计算,同时出现三台机器故障而恰好这三台机器都有同一个副本的概率是极小的。

然后,使用Java编写MapReduce程序用于建立网分基础表和网分位置表。

这里,网分基础表的计算思路是:对于每一行数据,运行一个程序,识别该行数据是属于语音、短信或位置表中的哪一个,然后根据字段属性,提取所需属性,输出到网分基础表,然后根据这个方法,把所有的网分数据平均分发到每一台机器内,然后每一台机器都对分发到自己的数据的每一行都运行相同的程序,最后共同输出成网分基础表。

由于进行计算的节点实际上也负责提供存储,因此系统只要尽量安排本机器计算本机器存储的网分数据,就能够非常快地完成计算。

对于网分位置表,思路是:每台机器对一部分的数据进行筛选,找出IMSI、CGI和时间,然后对用户IMSI进行划分,规定一台机器负责某一部分的IMSI,然后在处理的时候把找出来的数据发送到负责对应I M S I的机器里面。

这样同一台机器就会接收到这个IMSI的所有数据,然后据此对时间进行排序,按照上述给定的方法计算这个用户在不同基站的停留时间。

具体步骤如图1所示:
图1 网分位置表生产算法
为了防止少数异常的数据使程序崩溃,设置了高可靠的崩溃防止策略,所有的异常数据都会在计算过程中被统一计数,并设置了详细的信息反馈方案,让数据管理员能够即时了解数据的异常。

4 实验结果
对一个具体的数据集合(每天的数据量大概10G)进行数据分析实验,结果如表4所示:
实验结果表明,Hadoop平台比其他系统的计算速度有显著提高,而且在添加节点时,计算性能得到了线性提高。

5 结论
采用H a d o o p技术,将网分位置排序算法用MapReduce技术改写,能够极大地提高网分数据分析中排序的效率,同时不影响排序的精度。

下一步将考虑如果数据量继续增加,如何线性扩容Hadoop集群、算法中Map和Reduce函数的进一步优化、以及Hadoop集群中一些参数的调优等。

参考文献:
[1] 赵华茗. 搭建基于云计算的开源海量数据挖掘平台[J].
现代图书情报技术, 2010(10): 76-81.
[2] Amazon Introduces Elastic MapReduce (Hadoop
Framework) Service[EB/OL]. (2010-09-01). http:// /2009/amazon-introduces-elastic-mapreduce-Hadoop-framework-service/.
[3] 纪俊. 一种基于云计算的数据挖掘平台架构设计与实
现[D]. 青岛: 青岛
大学, 2009.
[4] 朱珠. 基于Hadoop
的海量数据处理
模型研究和应用
[D]. 北京: 北京邮
电大学, 2008.
[5] 刘鹏. 云计算[M].
北京: 电子工业出
版社, 2010. ★
表4 实验结果
Oracle
(公司自有算法)
Oracle
(改进优化算法)
Hadoop(五节点)Hadoop(十节点)
节点性能内存16G的机器一台内存16G的机器一台内存512M的机器两台
内存1G的机器三台
内存512M的机器两台
内存1G的机器八台
数据大小10G10G10G10G
计算耗时8小时3小时2小时35分钟
严关武:硕士,现就职于中国移动中山分公司,主要研
究方向为IT规划和项目管理。

崔杨毅:硕士,现就职于中国移动中山分公司,主要研
究方向为IT规划和项目管理。

刘恒:硕士,现就职于中国移动中山分公司,主要研究
方向为决策支持系统与数据挖掘。

作者简介
在近日召开的由工信部电信研究院和TD技术论坛联合主办的“2012TD-LTE测试技术研讨会”上,工业和信息化部无线电管理局副局长阚润田表示,随着无线电业务的开展和用户的急剧增长,无线电频率资源的供求矛盾日益突出,如何有效提高有限频谱资源的利用率,以满足各行各业的需求,是国家无线电管理部门积极研究和解决的课题。

针对我国在移动通讯领域里频率资源日益稀缺的情况,阚润田表示,无线电主管部门在进一步科学规划合理配置无线电频谱资源的同时,将统筹考虑3G、4G系统的LTE频率的使用,积极探索在1427MHz-1525MHz 这个频段规划TD-LTE系统的可能性,不论是公网还是专网,都有所研究。

而且也在积极推动将450MHz-470MHz频段用于公众移动通信的研究。

(C114中国通信网)
工信部考虑将1.4GHz纳入TD-LTE规划。

相关文档
最新文档