随着互联网尤其是移动互联网、物联网的快速发展,目前我们已处于数据、信息过载的海量信息时代。据数据调查公司IDC研究报告显示:2011年全球被创建和复制的数据总量为1.8
ZB,较去年同期,这一数据上涨了1 ZB,全球信息总量每过两年就会增长1倍。用户面对海量信息却很难找到自己真正感兴趣的内容[1].同时随着运营商逐渐推出移动互联网产品应用商店、阅读、游戏、社区等产品,如何分析挖掘这些产品生成的海量数据,将成为运营商迫切需要解决的问题。
云计算的出现,使得数据挖掘平台有了新的发展方向,也使得新一代的数据挖掘平台成为可能。云计算是能够提供动态资源、虚拟化和高可用的计算平台。云计算平台可被用来开发高性能的应用程序[2-3].但是对于数据挖掘来说,海量数据本身具有噪声、异构、算法复杂、技术复杂等问题,而现在的云计算开发平台并没有提供数据规约等功能。因此文章通过对于数据挖掘、云计算的详细描述和分析,提出了基于云计算的数据挖掘平台。该平台架构基于云计算的基础能力,并符合云计算软件即服务(SaaS)的设计理念。该平台还能极大减少运营商、企业在数据挖掘技术上的投入并能加快其挖掘业务的推出,缩短研发周期,进一步提高产品收益。
1基于云计算的数据挖掘策略
1.1数据挖掘
数据挖掘[4-6]是一个从大量的、不完全的、有噪声的、模糊的、随机的实际数据中提取隐含在其中的但具有潜在实用信息和知识的过程。从数据挖掘的定义可以看出数据挖掘是知识发现领域的一个重要技术,它涉及到人工智能、机器学习、模式识别、统计学等高技术领域,具体技术包括特征化、关联、聚类、预测分析等。数据挖掘在互联网、移动互联网、电信、金融、科学研究等领域得到了广泛的应用,例如Facebook的好友推荐、和淘宝网的商品推荐、银行的防欺诈分析等。传统的数据挖掘技术建立在关系型数据库、数据仓库之上的,对数据进行计算,找出隐藏在数据中的模型或关系,并在大规模的数据上进行数据访问和统计计算,整个挖掘的过程需要消耗大量的计算资源以及存储资源[7].
随着云时代的到来和移动互联网的快速发展,数据规模从MB、级发展到TB、PB级甚至EB、ZB级,并且面临着TB级的增长速度,数据挖掘的要求和环境也变得越来越复杂,从而形成“数据量的急剧膨胀”和“数据深度分析需求的增长”这两大趋势,使得40年来一直适用的数据库系统架构在海量数据挖掘方面显得力不从心[8].
综合上述,传统的数据挖掘技术及其体系架构在云时代的海量数据中已经出现了不少问题,其中首先是挖掘效率的问题,传统的基于单机的挖掘算法或基于数据库、数据仓库的挖掘技术及并行挖掘已经很难高效地完成海量数据的分析;其次高昂的软硬件成本也阻止了云时代数据挖掘系统的发展;最后传统的体系架构不能完成挖掘算法能力的提供,基本是在以单个算法为整体模块,用户只能使用已有的算法或重新编写算法完成自己独特的业务。
云计算云计算[9-10]是一种商业计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。同时云计算是并行计算、分布式计算和网格计算的发展,或者说是这些计算科学概念的商业实现。
通常认为云计算包括以下3个层次的服务:基础设施即服务(IaaS)、平台即服务(PaaS)、SaaS;其中IaaS提供以硬件设备为基础的计算、存储和网络服务,实现了对硬件资源的抽象并服务化提供,使得分布式计算和分布式存储成为现实。
1.2云计算具有一些特点[10-11]:
(1)虚拟化。云计算支持用户在任意位置使用各种终端以获取应用服务,所请求的资源来自云而不是固定的、有形的实体,并且对于用户来说只需要使用云提供的服务即可。
(2)通用性。云计算不针对特定的应用,而是可以在云的支撑下构造出千变万化的应用,同一个云可以同时支撑不同的应用运行。
(3)高可扩展性及超大规模。云的规模可以动态扩展,并且这种动态扩展对用户是透明的,并且不影响用户的业务和应用。同时这种扩展是超大规模的,如Google云计算已经拥有上百万台服务器,Amazon、IBM、微软等也拥有几十万台服务器。
(4)可靠性高。云计算使用多副本容错、多计算节点同构可互换等措施来保障服务的高可靠性。
(5)经济性好。云的特殊容错机制导致可以采用廉价的节点来构成云,而云的自动化集中式管理使得大量企业无需负担日益高昂的数据中心管理成本。云的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受云的低成本优势。
1.3数据挖掘云化策略
云计算的出现即给数据挖掘带来了问题和挑战,也给数据挖掘带来新的机遇——数据挖掘技术将会出现基于云计算的新模式。如何构建基于云计算的数据挖掘平台也将是业界面临的主要问题之一,创建一个用户参与、开发技术要求不高的、快速响应的数据挖掘平台也是迫切需要解决的问题。
从业界对云计算的理解来看,云计算动态的、可伸缩的计算能力使得高效的海量数据挖掘成为可能。云计算SaaS功能的理解和标准化,使得基于的数据挖掘SaaS化有了技术和理论的支持,也将使得数据挖掘面向大众化和企业化。文章主要是从基于云计算平台的数据挖掘服务化、挖掘算法并行化、挖掘算法组件化角度进行构建数据挖掘SaaS平台,如图所示。
如图1所示,文章提出的基于云计算的数据挖掘平台架构采用分层的思想:首先底层支撑采用云计算平台,并使用云计算平台提供的分布存储以及分布式计算能力完成数据挖掘计算能力的并行实现;其次数据挖掘平台在设计上采用分布式、可插拔组件化思路,支持多算法部署、调度等;最后数据挖掘平台提供的算法能力采用服务的方式对外暴露,并支持不同业务系统的调用,从而较方便地实现业务系统的推荐、挖掘等相关功能需求。
2数据挖掘平台云架构
云计算的分布式存储和分布式计算促使了新一代数据挖掘平台的变革。图2是基于云的数据挖掘平台架构。考虑到挖掘算法和推荐算法的并行化和分布化是一个专门的、大的课题,因此文章暂不包含具体算法的并行化和云化的内容。
如图2所示,该平台是基于云计算平台实现的数据挖掘云服务平台,采用分层设计的思想以及面向组件的设计思路,总体上分为3层,自下向上依次为:云计算支撑平台层、数据挖掘能力层、数据挖掘云服务层。
云计算支撑平台层
云计算支撑平台层主要是提供分布式文件存储、数据库存储以及计算能力。中兴通讯有自主研发的云计算平台,该架构可以基于企业自主研发的云计算平台,也可以基于第三方提供的云计算平台。
数据挖掘能力层
数据挖掘能力层主要是提供挖掘的基础能力,包含算法服务管理、调度引起、数据并行处理框架,并提供对数据挖掘云服务层的能力支撑。该层可以支持第三方挖掘算法工具的接入,例如Weka、Mathout等分布式算法库,同时也可以提供内部的数据挖掘算法和推荐算法库。
数据挖掘云服务层
云服务层主要是对外提供数据挖掘云服务,服务能力封装的接口形式可以是多样的,包括基于简单对象访问协议(SOAP)的Webservice、、HTTP、XML或本地应用程序编程接口(API)等多种形式。云服务层也可以支持基于结构化查询语言语句的访问,并提供解析引擎,以自动调用云服务。各个业务系统可以根据数据和业务的需要调用、组装数据挖掘云服务。
文章提出的基于云计算的数据挖掘平台与传统的数据挖掘系统架构相比有高可扩展性、海量数据处理能力、面向服务、硬件成本低廉等优越性,可以支持大范围分布式数据挖掘的设计和应用。
3基于云计算数据挖掘平台的关键技术
3.1云计算技术
分布式计算是解决海量数据挖掘任务,提高海量数据挖掘的有效手段之一,在理论和实践上已经获得证实。分布式计算包含了分布式存储和并行计算两个层面的内容,而云计算平台提供了分布式文件存储和并行的计算能力,因此很好地解决了这两个层面的内容。下面主要分析几个主流的分布式文件系统和分布式并行计算框架,以更好地构建云计算数据挖掘平台的核心支撑能力。
分布式文件系统有效地解决了海量数据存储问题,并实现了位置透明、移动透明、性能透明、扩展透明、高容错、高安全、高性能等关键功能。目前业界比较流行分布式文件系统有Google文件系统(GFS)、分布式文件系统(HDFS)、文件系统(KFS),这3种分布式文件系统都是基于Goolgle提出的分布式文件系统理论进行研发的。Google提出的GFS就是解决其海量数据存储和搜索、分析等问题,而和KFS是基于GFS理论基础上实现的开源系统,并且在商业和学术领域得到了广泛的应用。
分布式并行计算框架对于高效完成数据挖掘计算任务极其重要,并且它对分布式计算的一些技术细节进行了封装,例如数据分布、任务并行、任务调度、负载平衡、任务容错、系统容错等,使用户不需要考虑这些细节,而只要考虑任务间的逻辑关系。这样不仅可以提高研发的效率,还可以降低系统维护的成本。目前典型的分布式计算框架有:
1.MapReduce是提出的一个并行计算框架,它可以在大量PC机上并行执行海量数据的收集和分析任务。它把如何进行任务并行执行、如何进行数据分布、如何容错、网络带宽时延等问题的解决方案编码,并封装在了一个库里面,使用户只需要执行数据运算即可,而不必关心并行计算、容错、数据分布、负载均衡等复杂的细节。同时它又对上层应用提供良好简单的抽象接口。MapReduce主要应用在搜索、数据仓库、数据挖掘领域。
2.Pregel是Google提出的迭代处理计算框架,它具有高效、可扩展和容错的特性,并隐藏了分布式相关的细节,展现给人们的仅仅是一个表现力很强、很容易编程的大型图算法处理的计算框架。Pregel的主要应用场景是大型的图计算,例如交通线路、疾病爆发路径、WEB搜索等相关领域。
3.Dryad是微软硅谷研究院创建的研究项目,主要用来提供一个基于windows操作系统的分布式计算平台,总体用来支持有向无环图类型数据流的并行程序。微软于年宣布,停止对Dryad进行版本升级,转投Hadoop即MapReduce计算框架。
目前业界开源的云计算平台平台,包含HDFS和MapReduce,为海量数据挖掘平台提供完备的云计算平台支撑平台[12].
3.2数据汇集调度中心
数据汇集调度中心实现对接入本平台的业务数据的汇集,可以解决不同数据的规约问题,并支持各种不同的源数据格式。源数据格式支持联机事务处理系统(OLTP)数据、联机分析处理系统(OLAP)数据、各种日志数据、爬虫数据等,同时要提供多种数据同步方式,例如数据库实时同步、socket消息同步、文件传输协议同步等各种各样的方式,如图3所示。
数据汇集调度中心主要是完成对不同类型数据的汇集。本数据汇集调度中心采用模板化设计技术,支持新数据的模板和元数据配置以达到不同业务数据的统一收集和规约。
3.3服务调度和服务管理技术
为了能够让不同的业务系统使用本计算平台,平台必须要提供服务调度和服务管理功能。服务调度根据服务的优先级以及服务和资源的匹配情况等进行调度,解决服务的并行互斥、隔离等,保证数据挖掘平台的云服务是安全、可靠的,并根据服务管控进行调度控制。
服务管理实现统一的服务注册、服务暴露等功能,不仅支持本地服务能力的暴露,也支持第三方数据挖掘能力的接入,很好地扩展数据挖掘平台的服务能力。
3.4挖掘算法并行化技术
挖掘算法并行化是有效利用云计算平台提供的基础能力的关键技术之一,涉及到算法是否可以并行、以及并行策略的选择等技术。文章通过K-means聚类算法并行化并行计算框架来说明挖掘算法的并行化技术[13].
3.4.1 K-means算法的主要思想
K-means算法的主要思想是基于使聚类性能指标最小化。这里所用的聚类准则函数是聚类集中每一样本点到该类簇中心点距离平方之和,并使它最小化。如图4所示,K均值算法的处理流程如下:首先,随机地选择k个对象,每个对象代表一个簇的初始均值和中心;对剩余的每个对象,则根据其与各个簇的均值距离,将它指派到最相似的簇;然后计算每个簇的新均值。这个过程不断重复,直到准则函数收敛。通常,采用平方误差准则,其定义如(1):
其中,E是数据集中所有对象的平方误差和,p是空间中的点,表示给定的对象,mi是簇Ci的均值。对于每个簇中的每个对象,首先要求出对象到其簇中心的均值的平方,然后再求和。
3.4.2 K-means并行化思路
是以聚类中心来划分聚类的,一旦k个聚类中心确定了,聚类可立即完成。因此,这里主要讲述如何并行实现更新聚类中心[14].
在随机的初始化k个聚类中心以后,每一次任务的执行都会更新当前个聚类中心的值。在映射阶段,对于每一个样本O
S,需要计算与其最近的聚类中心O i (0≤i≤,然后输出键值对。
在化简(Reducer)阶段,框架会收集属于相同键的值,相当于对每个聚类中心O i (0≤i≤k -1),而离它最近的样本都会作为值收集起来。这样Reducer里就可以利用这些样本重新估计出k个聚类中心,如所示:
这样,在一轮MapReduce完成后,新的聚类中心也已经计算出来。通过比较本轮聚类中心与上一轮聚类中心差异度,可确定算法是否收敛。
4结束语
文章通过对数据挖掘和云计算技术的发展分析,提出了基于云计算的数据挖掘平台架构以及数据挖掘服务化的思路。本平台不仅仅是基于云计算实现了一个数据挖掘平台,同时也对数据挖掘平台进行了化。本平台可以为运营商、企业提供效益增值的数据挖掘应用,同时也减少了运营商、企业在数据挖掘技术上的投入。运营商、企业即可以创建自己内部的数据挖掘私有云,为内部产品提供数据挖掘服务,也可以提供数据挖掘公用云,为不同的企业提供数据挖掘服务。 |