1.dodo
Weka是由新西兰Waikato大学研发的数据处理和知识发现软件包。其可以实现数据预处理、聚类、分类、回归、特征选择、可视化等各种数据挖掘的任务。Weka被广泛用于各种数据挖掘任务中算法的评估。但其中数据挖掘算法的实现是基于单机实现的。与Weka不同的是,Apache组织基于Hadoop平台的,采用MapReduce计算模型,实现大量机器学习算法的并行化,并将其封装在Mahout项目。但由于Mahout并不提供一种图形界面交互,用户需要大量手工配置数据和参数,同时目前实现的并行数据挖掘算法也不完全。因此有必须借鉴Weka和Mahout的优点,研发一个基于Hadoop的并行数据挖掘算法工具箱——Dodo。表1给出三个工具箱目前的主要异同点。
表1 Weka, Mahout和Dodo主要异同
| 数据源 | 数据格式 | 数据存储 | 算法 | 用户界面 |
Weka | 支持文本文件:包括本地的数据文件以及网络数据文件; | 标准格式是Arff,行表示实例,列表示各个属性。另外还支持CSV,C45以及BSI。 | 数据文件加载存储于内存之中 | 在单机上实现分类、聚类、关联规则等数据挖掘算法 | 包括发现模式的表示,数据挖掘原语的操作,界面功能主要包括4个部分:Simple CLI、Explorer、Experimenter Knowledge Flow |
Mahout | 仅支持文本文件 | 每个算法自己根据算法的情况自己设定的文件格式 | 存储于Hdfs上 | 基于MapReduce计算模型,实现…. | 命令行交互 |
Dodo | 支持文本文件、网络文件和数据库文件 | 支持Arff等通用标准格式,也支持顺序文件,文本文件等格式,并提供预处理 | 存储于Hdfs上 | 迭代和非迭代类数据挖掘算法的MapReduce化 | 数据管理:上传、删除、修改。 |
图2 Dodo工具箱运行流程
在图2中,如果用户是首次启动工具箱,需要选择连接的Hadoop环境并对环境进行配置;当用户需要上传数据,工具箱以树形图的形式,将用户的数据上传到指定的Hadoop路径上;如果不是顺序数据,工具箱则将其顺序化然后存储;在算法选择阶段,用户可以选择工具箱自带的并行化数据挖掘算法,也可以选择用户指定的、本地的jar文件;通过工具箱,用户能对选择的算法进行设置,其中包括输入输出路径,算法特定的参数等等;最后在Hadoop环境上对指定输入路径上的数据运行指定的算法,输出结果以可视化的方式展示给用户。
图3 Dodo工具箱模块结构图
图3中,将Dodo工具箱分为用户交互层、内部实现层以及Hadoop交互层等三个层次。用户交互层主要负责结果展示、算法选择等需要和用户进行交互的操作;内部实现层是Dodo的核心部分,负责与上层和下层进行交互,将一些操作进行抽象供两层进行调用;而Hadoop交互层主要是负责和Hadoop平台进行相应的操作,进行相关的平台配置或者数据上传或读写。
2 数据挖掘云
不同于其他的企业应用,将数据挖掘应用服务化,具备以下4个非常特殊的特点:
简单化的工作流。数据挖掘应用从工作流角度来看,相对非常简单。应用中没有复杂的流程,也没有很多不同的角色。但数据挖掘应用仍然是一个工作流。因此将其服务化时,需要提供一个可视化的工作流编辑、管理界面,云平台也要提供对工作流引擎的监控。丰富的算法选择。不同于企业应用,在数据挖掘应用实现一个具体的挖掘任务有很多种算法。在很多情况下,每种算法的性能和效率都有可能不一样。结果的不确定性。数据挖掘任务中,选择不同的数据和算法,将有可能导致不同的计算结果。应用的突发性。很多的数据挖掘应用的请求会随着时间、空间呈现出突发性,这对资源提出了很高的“伸缩性”需求。
从以上特点可以看出,数据挖掘服务是一种真正的按需服务。用户可以根据自己的需求以及付费能力选择适合自己的服务模式。因此,所谓数据挖掘云是指在hadoop平台上提供支持复杂数据挖掘任务的服务系统,此系统能够提供复杂数据挖掘任务的工作流定义、资源调度、算法和工具以web service的方式向外提供服务。
数据挖掘云的结构如图4所示:
图4 数据挖掘云
数据挖掘云的最底层是扩展云计算平台Hadoop的功能,实现HDFS数据管理、算法管理和资源监控,其中算法管理模块集成了各种基于MapReduce的工具箱,以向上提供算法服务。数据挖掘云的底层组件中,需要根据云服务的自适应需求,实现优化的资源分配和任务调度。数据挖掘云的中间层是数据挖掘云高层服务,包括目录服务、效用服务、数据服务和算法服务等核心组件。而最上层是客户端组件,主要用于与用户的直接交互。用户通过友好的可视化界面管理和监视任务的执行,并且很方便地查看任务执行结果。在数据挖掘云的设计中,核心的组件有以下6个:
目录服务:各种资源都能以目录的方式展示给用户,用户可以方便地展开目录查看所有可用的资源。资源分配和任务调度服务:把上层生成的执行计划映射到具体的计算资源和节点上,然后进行任务的调度和执行。数据访问服务:用户根据自己的任务,需要查找、上传或下载所需要的数据,数据访问服务为用户提供了良好的接口让用户方便进行这些操作。算法和应用访问服务:用户在编辑工作流的时候,需要查找满足需求的算法和应用,算法和应用服务提供了良好的接口让用户方便数据和应用的访问。流管理服务:流管理服务包括工作流的编辑和执行,以及用户对流的执行过程的监控和控制,并且在执行过程中会生成相应的日志。结果展示服务:任务执行完毕以后,用户需要查看任务的执行结果,结果展示可能包含多种方式,图状的、表格式的、文本式的等方式。
3 总结
综上所述,本文讨论了基于云计算的海量数据挖掘的进展和主要技术热点,并分析了基于Hadoop平台的数据挖掘算法工具箱和数据挖掘云的结构。Dodo工具箱主要实现海量数据挖掘算法MapReduce化,以提高对海量数据的处理能力。在工具箱实现中,强调与Hadoop平台的交互式配置,迭代/非迭代类数据挖掘算法的并行化实现。在数据挖掘云服务中,为使海量数据挖掘应用服务化,提供从Hadoop资源分配到目录服务,再到流管理等一系列的组件服务,继而提高海量数据挖掘软件的服务能力。作为能为企业效益增值的数据挖掘应用,本质上具备了请求突发、需求多变,结果依赖于数据和算法的特点,因此必须进一步优化云计算平台,提高云平台对按需服务的支撑能力。