> Linux集群 > Hadoop >

面向MapReduce 的数据处理流程开发方法 ------------重点内容摘要

摘    要:数据处理流程在信息爆炸的今天被广泛应用并呈现出海量和并行的特点,  MapReduce 编程模型的简单性和高性价比使得其适用于海量数据的并行处理,  但是 MapReduce 不支持多数据源的数据处理,  不能直接应用于具有多个处理操作、多个数据流分支的数据处理流程。提出一种模型驱动的面向 MapReduce 计算模型的数据处理流程快速开发方法,  定义数据处理流程的逻辑模型、物理模型和组件模型,  使用模型转换算法和代码生成算法将逻辑模型转化为物理模型,  再转换为能直接在 Hadoop 平台上运行的 MapReduce 程序,   基于该方法实现了一个开发工具 CloudDataFlow。

 1    引言
     数据处理通常可以刻画为对一个或多个数据集进行多步数据处理操作的流程化处理过程,  这些数据处理操作既包含一些通用的关系形式的操作,  如过滤、合并、分组、连接、计数等,  也包含一些领域相关的操作,  如语义标注、人脸检测等,  本文将这个流程化的数据处理过程称为数据处理流程。

     常见的数据处理流程应用包括数据仓库应用中的 ETL过程,  商业智能应用中的数据分析挖掘过程,  科学计算领域的科学工作流,  搜索引擎领域的大量分析处理过程等,  这些典型的应用场景广泛出现在大型企业和科学研究领域。
      此外,  在信息爆炸的今天,  随着数据量的不断增大,  数据处理流程越来越呈现出海量和并行的特点,  数据格式也以非结构化和结构化的形式出现, 而且处理数据的底层系统一般使用集群来搭建,  这些 对 传 统 的 并 行 数 据 处 理 流 程 实 现 方 法 ,   如DBMS、网格计算等,  提出了新的挑战。现在流行的由 Google 提出的 MapReduce 数据并行计算模型极大地简化了在集群上的海量数据并行处理过程[1] , 开源云计算平台 Hadoop [2]实现了这一计算模型,  很好地满足了大多数用户海量数据处理的需求,  并在实际场景中得到了广泛的应用。

     但是  MapReduce模型的简单性也导致了几个问题:
(1)  不直接支持复杂的 n 步 n 分支数据处理流程操作,  而这在实际数据处理中是非常常见的。
(2)  缺少同时处理多个数据集的严格支持能力,必须通过用户自己编程实现,这是一项非常艰难的工作。
(3)  一些常用的基本数据操作,  如过滤、连接、分组等操作,  在每次使用时必须重复地手工编码 实现。

     由 于 这 几 个 问 题 的 出 现 ,   用 户 在 使 用MapReduce 的过程中总是手工编写各种复杂的数据处理流程,  纠缠于多数据源的数据分析,  重复地在一 些 黑 盒 流 程 中 实 现 基 本 的 操 作 ,  严 重 限 制 了MapReduce  编程模型的使用,  减慢数据分析进度, 而且使数据处理程序的可读性大大降低,  同时也不可能进行一些自动的流程优化。

(责任编辑:IT)