基于Hadoop平台数据迁移系统的构建与应用效果研究

2018-10-19 16:09顾晋
科学与财富 2018年25期
关键词:分布式计算数据挖掘集群

顾晋

摘要:伴随着web2.0、云计算、物联网等概念和技术的提出与快速发展,信息时代越来越体现出它的“大数据”特征。为了发挥大数据的价值,数据仓库、数据挖掘技术在商业、军事、经济、学术等众多领域越来越收到重视,正发挥着越来越大的作用。与此同时,庞大的数据规模也向传统的数据挖掘工作提出了重大的挑战。依靠云计算等分布式计算平台所提供的强劲处理能力,将数据挖掘与云计算相结合正在成为行业的趋势,正不断地显现出其强大的优势和潜力。

1、Hadoop的来源

Hadoop源于2002年开始的Apache Lucene的子项目之一开源搜索引擎Apache Nutch。为了使Nutch搜索引擎可以适应越来越庞大的数据增长,提高数据处理能力,保证搜索速度和精度,急需引入一种高效的分布式计算结构。Hadoop在2008 年初就被Apache 公司列为了顶级项目,并成为了许多互联网公司如雅虎、Facebook、Twitter等基础计算平台的一个基础部分。目前的Hadoop系统已经逐渐发展成为包含HDFS、MapReduce、Pig、HBase、Hive 等众多子项目的集合,越来越多的被用于分布式计算。

Hadoop的核心技术是MapReduce并行编程模型和HDFS 分布式文件系统,HDFS 采用分布式的方式存储文件,其很高的容错性使其可以方便可靠的部署在低廉的计算机集群中,提高了文件的读写速度,同时扩大了存储用量。采用MapReduce来整合处理分布式文件系统上的数据,使分布式开发变得系统化,也保证了执行效率。

2.Hadoop平台系统结构

Hadoop所采用的分布式系统属于一种被称为“向外扩展”的增强计算能力的方式。于此相对应的方式被称为“向上扩展”,这种方式以大型单机服务器为代表。在过去的几十年间,计算机的发展和计算能力的提高是遵守摩尔定律的。

随着数据的不断增加,人们发现,解决大规模计算问题不能单纯的依赖于制造越来越大型的服务器,需要另辟新径,开始在向外扩展的方向上考虑问题的解决办法。Hadoop的向外扩展,即把许多低端或商用机器组织自在一起,形成一个功能专一的分布式系统。

利用Hadoop的集群合作,得到的不仅是强大的计算能力,同时通过将数据集划分为较小的块(通常为64M),依靠Hadoop将其适度的复制并分布到集群的多台机器上,使得集群可以并行的读取数据,进而提供了很高的系统吞吐量,这对于目前网络上的大数据环境(数据密集型作业)而言,是必不可少的重要能力Hadoop主要处理的是数据密集型任务,这类任务的数据规模很大,数据迁移就变得十分困难。因此,Hadoop强调的是把代码向数据迁移,在一个提供计算服务的Hadoop集群内部,既包含数据又包含计算环境。客户端仅需向集群发送待执行的MapReduce程序,让这些可执行移动到数据所在的机器上去,而这些程序通常在规模上比数据小几个数量级,移动程序比移动数据容易很多。在计算的整个过程中,数据不动,总是存储在进群中的各个数据节点上的,不会发生客户端和集群间的计算数据交互。更重要的是,在Hadoop集群的内部,也体现了代码向数据迁移的理念,数据被分块后在集群中分布,Hadoop在执行任务时会尽可能让对一段数据的处理发生在储存这段数据的一台计算机上。这种设计理念服务于Hadoop面向数据密集型任务处理的设计目标,极大地减少了数据在网络上传递所占用的带宽,降低IO 压力,避免了任务计算时的数据瓶颈。

3、基于Hadoop平台数据迁移基本任务

数据挖掘的任务决定着数据挖掘工作的方向,指导着算法寻找什么样的数据模式。数据挖掘的步骤会随不同的挖掘任务和不同的应用领域而有所变化,一般地,可以根据工作的特点,将数据挖掘任务分为两大类:描述性挖掘和和预测性挖掘。描述性挖掘任务着眼于发现数据的一般特性,对与数据库中已经存在的数据进行刻画,包括概括、总结数据,寻找数据间关系、类型等。预测性挖掘主要根据当前数据做出推断,以对更多的或者新加入的數据进行预测。根据数据挖掘的具体任务不同,挖掘结果中会得到不同的数据模式。数据挖掘系统要有挖掘多种类型数据模式的能力,以适应不同的任务和用户要求,并允许用户参与数据挖掘过程,指导或聚焦其感兴趣的数据模式的挖掘。

3.1数据迁移算法

1)数据描述和可视化

数据库中存放的数据条目通常含有大量的细节数据,这些细节数据可能含有某种整体趋势,但是由于其琐细而且杂乱,直观的发现某些规律或趋势变得十分困难。因此,用户通常希望找到一种更加直观形式来描述数据集。用汇总的、简洁的、精确的方式描述数据库中条目中包含的每个条目类型和概念是十分有用而且必要的。

这种描述数据的方法可以提供某一类数据的概貌,或者是将它与不同的某类数据进行区别。可以使用多种可视化方式将数据描述特征的的结果进行输出,多种统计图表是一种很方便直接的选择,包括柱状图、曲线图、饼图、雷达图等等。数据仓库领域的多维数据方和包括交叉表在内的多维数据表也是很好的选择。图表中也可以加入一些针对性的特殊数据标注和度量,并允许用户对可视化输出进行操作。挖掘结果也可以通过规则叙述的方式描述给用户,或者通过总结其中的泛化关系,将二次的结果提炼呈现给用户。

2)相关性分组或关联分析

数据来源于真实世界,因此,现实世界中事物间存在的联系也体现在数据库中的数据之间。数据挖掘中,若两个或多个变量的取值之间存在某种规律性,就称为关联,比如在一次购买活动中有两种或多种商品总是被同时购买。但是,数据之间的关联是复杂的、而且总是隐含的。根据数据关系呈现的方式不同,可以分为简单关联、时序关联、因果关联和数量关联等。这些关联并不总是事先知道的,大多都需要通过对数据进行关联规则挖掘而主动地去发现,往往在这些关系蕴含着在商业决策等方面的重要价值。

3.2Driver 和算法流程

完成了MapReduce过程的编写以后,为了将k-means算法任务部署到Hadoop环境中去执行,还要完成其任务声明和参数配置。为此,我们要完成MapReduce框架的核心run 方法,该run 方法被称为MapReduce的Driver。Driver 的任务是实例化、配置并传递一个作业配置对象JonConf命名的作业,通过与JobTracker通信用在集群上启动MapReduce作业。该JobConf对象应包含保持作业运行所需要的全部配置参数。在Driver 中,我们要为MapReduce作业定制基本参数,包括聚类数据集的输入路径、结果的输出路径、前面实现的Mapper 类和Reducer类。而且,还需要根据输入数据和输出数据的格式和程序要求,重置默认的作业属性,这里我们使用TextInputFormat作为输入数据集的输入方式。一旦JobConf对象被完成并传递给JobClient,他就被视为作业的总体规划,成为了决定这个作业如何运行的蓝本

4、结论

使用多台普通PC 主机搭建分布式集群,并在不同规模的人工生成数据集上进行了聚类式数据挖掘的实验。通过对多次不同数据和计算机集群规模的对比试验,证明了在Hadoop分布式计算环境上部署数据挖掘任务的可行性,并通过加速比,效率,数据伸缩性和集群的可扩展性等方面的分析,验证了该方案的计算优势和发展潜力。

参考文献:

[1]Jeremy Chow, Redpoll: A machine learning library based on hadoop,CS Dept. Jinan University, Guangzhou,2010

猜你喜欢
分布式计算数据挖掘集群
探讨人工智能与数据挖掘发展趋势
海上小型无人机集群的反制装备需求与应对之策研究
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
基于并行计算的大数据挖掘在电网中的应用
勤快又呆萌的集群机器人
基于云计算的移动学习平台设计与实现
面向异构分布式计算环境的并行任务调度优化方法
一种基于Hadoop的大数据挖掘云服务及应用
基于GPGPU的离散数据挖掘研究