欢迎进入ag444.APP|首页! ? 设为首页 | 加入收藏 ?
您所在的位置:网站首页?>?大数据资讯
提升大数据数据分析性能的方法及技术(一)

发布日期:2019-03-11

转载:https://www.cnblogs.com/csbdong/p/5719484.html

1 大数据概述

1.1 大数据的产生

  我们正处于一个信息化的时代。在信息化时代,我们认为[1]数据就是金钱、就是成功的根基。借助于电脑和卫星等科技的帮助,我们能够收集大量的数据。起初,我们利用电脑和各式各样的存储技术来存储各种形态的数据。然而,随着时间的推移,大量的异构的数据存储构成的数据集就变的异常的庞大。

  随着因特网在全球范围的普及,数据量变的如此的巨大,以至于使用现有的数据管理方法或者传统的数据处理应用很难应付。上述所提到的大规模、大体量的数据集我们就称之为大数据。

1.1.1 大数据的形成

  大数据就是一类复杂且庞大的数据集合,传统的数据管理工具或者应用已经无法胜任其数据的处理工作。数据之所以会大规模的增长[1],其中一个原因就在于通过对一些具有单一关联的大型数据集的分析,产生的额外的信息资源。这些通过分析产生的信息资源利用的案例可以在“景点的商业发展趋势的预测”、“研究成果质量的预测”、“疾病的预防”、“打击犯罪”和“预测实时交通拥塞程度”等场景下看到。

1.2?大数据的发展趋势和挑战

  大数据通常是和云计算、数据挖掘、机器学习密不可分的。大数据的分析主要涉及到以下的四个方面[2]:数据管理和结构支撑、开发模型和评测、可视化和用户接口、商业模型。

1.2.1?大数据的发展

  图1[2]显示了传统的大数据工作流分析经历的一些阶段。数据以数据库,数据流,数据集合以及数据仓库等方式来建模。数据的数量级以及数据的多样性要求在处理之前要进行数据的集成、清洗以及过滤等工作,以保证其后续工作的开展。
数据分析过程中最耗时、耗力的就是[2]数据的准备阶段。通常会遇到的一个问题就是需要分析的数据会使得现有的分析系统达到饱和。因此,分析大规模的数据时必须考虑到数据存储、过滤、移植和检索的效率。

  分析处理这些大数据之所以面临挑战的另一个原因是[2]数据形式的多样性。正如图2所示,数据主要有四种形式。而如今大部分的数据,既不是结构化的数据,也不是半结构化的数据。

  下面将讨论数据的速率[2](图3)。这里所说的速率,主要是讨论数据到达的时间问题。在某些应用中,数据的到达以及处理形式可能是成批的,但是在其他的应用中可能数据就需要以连续不断的或者实时的形式展现。一些时候需要对这些数据进行及时的处理和响应。例如为数据中心提供实时的数据活动的管理。

1.2.2 大数据的挑战

  大数据已经成为一个炙手可热的话题,但是不可否认,大数据仍然面临一系列的挑战。尤其是现阶段广泛使用的流数据(下面会重点讨论)。

  数据的多样性[2]:如何去应对始终呈增长趋势的数据。尤其是当数据以非结构化的形式产生的时候,如何从大量该类型的数据中快速有效的读取出用户所需要的数据。如何从流式数据中聚集并读取数据中的潜在关联性。

  数据的存储:如何从非结构化的数据中快速提取并存储重要的信息?如何优化存储的结构,使得存储在其中的数据能够被高效率的检索?现存的文件系统能否有效的满足大数据分析所要求的性能?

  数据的集成:需要新的协议和接口来满足不同形态和不同来源的数据。

  数据处理和资源管理:需要设计出应用于流式数据的最优模型。需要设计出协同文件系统达到最高效能的处理引擎。

2 数据流挖掘概述

  传统的数据处理的方法[3],对于那些建立在特定数据集上的离线的数据,以及批量到达的数据显得相对有效。但是随着时代的发展和处理任务的更迭,有时候,我们的任务所处理的对象是流式数据,或者在线的实时产生的数据。越来越多的实时应用程序需要动态的处理基于流式数据的一些查询请求。若在这样的请求中,在运用传统的方法,那么无论是对于空间占用还是效率来说,可能花销都是比较大的。现在先对流式数据的一些概念加以阐释。下述内容主要也将针对流式数据展开。

2.1 流式数据概述

  为了能够在数据仓库中提取出一些新的潜在信息,我们已经掌握了一些系列数据挖掘的技术。但是[4]如今,当我们试图从大量的流式数据中以一种合适、高效的方法来提取我们所需要的信息时,出现了一系列的挑战。

2.2 流式数据发展及挑战

  在处理流式数据挖掘的时候,我们不能无视静态数据和流式数据之间的区别。我们知道,静态数据是预先存储在固定的设备上,供查询和分析,一边找到潜在的价值。但是,由于流式数据连续性特性,很显然无法完全存储不断进入应用的流式数据,而且,应用通常也要求我们要在极短的时间内对请求做出相应,这与处理静态数据来比,时间显然要短得多。因此流式数据的挖掘处理主要面对内存管理、数据结构和资源分配方面的挑战。

3 流式数据工具集

表1[3]列出了大数据(包括流式数据、批量数据等形式)处理所需要的工具集,包括大数据处理的所需要的库、平台和框架引擎。

工具集

处理对象

匹配引擎

Mahout

Batch

MapReduce, Spark, H2O

MLlib

Batch,?Streaming

Spark

H2O

Batch

H2O

SAMOA

Streaming

Storm, Samza, S4

表1? 大数据处理工具集

  因为本文主要针对性地调研了流式数据相关方面的内容,因此下面的分析也主要集中于流式数据相关工具集(SAMOA),对于MLlib仅简单介绍。关于匹配引擎和框架的内容将在下一章节具体分析。

3.1 MLlib库

  MLlib[3]是一个与Spark几乎同时段出现的产物,MLlib是一个机器学习的库文件。其作为一款常驻内存的分布式处理引擎,广受欢迎并且被许多大数据应用程序所使用。MLlib兼容批量数据和流式数据。MLlib的设计初衷就是为了使用户能够在利用该库的基础上创建自己的算法。Spark.ml提供了一系列统一的接口与MLlib合作创建、扩展以及应用一些机器学习的算法。MLlib支持很多有助于数据处理和模型评估的数学和统计学方法。现在很多的模型都很好的使用了MLlib库,包括分类模型、迭代模型、评价模型、集群以及降维等。

3.2 SAMOA平台

3.2.1 SAMOA平台概述

  Samoa(Scalable Advanced Massive Online Analysis)是一种流数据挖掘的平台。该平台为[5]最常用的数据挖掘和机器学习的任务(如:分类、集群、迭代以及抽象等等)提供了一系列分布式的流式处理算法。它的优势在于提供了接口,这使得其能很好的被利用在多种分布式系统,结合一些流式处理引擎(Storm、S4、Samza)。Samoa用Java语言编写,是一个开源的平台,可以在[6]http://samoa-project.net上获取使用。图4描述了平台与引擎之间的关系。

  我们既可以将SAMOA看作是一个框架也可以将其看作是一个库(跟上面提到的MLlib类似)。

  作为框架,它允许算法的开发人员从底层的硬件设备中抽象,达到代码重用的目的。上文提到,它的优势[5]在于提供了能用在多种分布式系统上的接口,并适配多种流式处理引擎。通过设计了一个基于现代DSPE必要元素的最小化的应用程序接口API。这些接口使得可以很方便的将其绑定到新的引擎上面。SAMOA通过API和部署的方式,隐藏了DSPE的底部细节和底层差异。

  图5和图6具体给出了SAMOA的项目架构。作为库,SAMOA包含了为在分布式机器上进行流式数据机器学习所设计的算法的实现。为“分类”这一步的操作,提供了Vertical Hoeffding Tree (VHT)算法,对于集群,其包含了基于CluStream的算法。

  Samoa平台在科学研究和实际生产生活的部署中都占有一席之地。

3.2.2 SAMOA算法架构

  在SAMOA中,算法[5]被看作有向图上的节点进行消息传递的,这些节点之间通过数据流的形式传递消息。在图7表示的有向图拓扑中,每个节点都是一个通过流来发送和接收消息的处理器。每一个处理机都是节点执行算法的载体[7]。一个数据流可以有一个源节点,但是可以有多个目的节点(类似于PUB/SUB模型)有向图的拓扑是通过一个拓扑建立器的工具来生成的,它连接各部分用户的代码到SAMOA平台上,并且在后台做相应的处理和备份工作。图8则是从集群角度来描述了对应的算法架构。

?


? ?
/* 10 */

?版权所有: 济南市卫生科技交流服务中心 ?? 电话:0531-86551686 ?? 地址:济南市历下区利农庄路33号
?备案/许可证编号:鲁ICP备10022623号