Parallel dataflow programming frameworks (e.g., MapReduce, Dryad, Pig and Hive) have been widely applied in processing big data both in academy and industry. From the perspective of underlying system, a critical problem is how to manage the massive intermediate data which are generated during the execution of parallel dataflow programs. In practice, a large space of memory and disk will be occupied for storing intermediate data. Network overhead is common while transferring these massive intermediate data among distributed computing nodes. Fault-tolerant and fast recovery mechanisms are also needed to keep the high availability of these data. Furthermore, the sharing and elastic cloud platform increases the difficulty of intermediate data management since multiple parallel dataflow programs will run concurrently. How to store these diverse intermediate data from different programs and how to schedule the transferring of these data under different Service Level Agreements are two major challenges..This project aims to develop a new specific intermediate data management system considering various aspects such as data, resource utilization, fault-tolerance and performance. Firstly, we need to understand and delve into the characteristics of intermediate data. They are almost short-lived and accessed in the form of write-once-read-once. Other features (e.g., data size and distribution) follow the semantics of the concrete programs. Secondly, we will focus on intermediate data's cost-effective storage, reliable but efficient transmission and fault tolerance. Thirdly, we will build a new and actual storage system towards intermediate data based on distributed memory cache. Fourthly, we will present new schedule strategies of intermediate data transferring especially for concurrent parallel dataflow programs running in the cloud. Finally, we will integrated the system with Hadoop and evaluate its performance. We wish this project can improve run-time performance and fault-tolerance of cloud applications, and lead to new cloud programming paradigms.
并行数据流编程框架如MapReduce、Dryad、Pig等被广泛应用于处理日益增长的数据。并行数据流程序执行时产生海量的中间数据,占用大量存储资源。同时,中间数据分布式产生,需要在大量节点间进行传输。另外,中间数据的容错机制也严重影响系统性能。此外,大量并行数据流程序的并发运行于云平台,对中间数据管理的任务调度和资源管理提出挑战。.本课题充分考虑中间数据特殊读写模式、生命周期短、与应用语义密切相关的特点,在云平台背景下研究并行数据流程序的海量中间数据的存储、传输、容错的优化技术,包括:基于分布式协同缓存优化并行数据流程序的中间数据访问;QoS保障的中间数据传输调度策略;应用语义感知的中间数据容错策略。本课题将实现中间数据管理原型系统,并集成到Hadoop平台,同时通过实验评价其优化效果。本课题有利于优化基于并行数据流编程框架的云应用性能,并大大降低资源成本。
并行数据流编程框架如MapReduce、Spark、Dryad、Pig 等被广泛应用于处理日益增长的数据。并行数据流程序执行时产生海量的中间数据,占用大量存储资源。同时,中间数据分布式产生,需要在大量节点间进行传输。另外,中间数据的容错机制也严重影响系统性能。此外,大量并行数据流程序的并发运行于云平台,对中间数据管理的任务调度和资源管理提出挑战。.本课题主要从中间数据内存管理切入,研究中间数据的内存用量估算与预测技术,中间数据内存溢出错误诊断技术,并研发了MapReduce工作流系统,对所提出的关键技术进行验证,并开展了实际的推广应用。具体来讲,包含以下研究内容: .(1) 内存用量模型构建与用量估算:研究目的是构建应用的内存用量模型,量化应用的静态因素(数据、配置、用户代码)与动态内存用量的关系,并估算出新应用的内存用量。我们以数据流为中心构建了应用内存用量模型,模型包含数据流模型、框架内存用量模型和用户代码内存用量模型。为了解决如何在用户代码未知的情况下构建用户代码内存用量与其输入数据之间关系的问题,我们在用户代码模型中设计了生命周期敏感的内存用量监控方法。在内存用量模型的基础上,我们通过在小数据上运行应用来估算该应用在大数据集上的内存用量。.(2) 内存溢出错误的诊断方法:研究目的是设计出内存溢出错误诊断方法及工具。本文基于内存用量模型设计了一个内存分析器Mprof。Mprof可以自动建立应用静态因素与动态内存用量之间的关系,方法是重建应用数据流,重建用户代码内存使用历史信息,并对两者进行关联分析。Mprof也包含定量诊断规则,这些规则根据应用静态因素与动态内存用量之间的关系自底向上定位内存溢出错误相关的代码段,错误相关的数据,以及不恰当的配置参数。.(3) MapReduce流程建模与执行系统:研究目的是充分考虑中间数据特点,设计一种优化的MapReduce工作流模型,用于实现多个MapReduce任务的并行执行与中间数据流转。提出一个MapReduce逻辑模型,并研究算法实现向Oozie工作流模型的自动翻译技术。研发了可视化的工作,支持用户设计MapReduce工作流模型,并执行。可用于复杂大数据预处理与机器学习应用。.本课题有利于优化基于并行数据流编程框架的云应用性能,并大大降低资源成本。
{{i.achievement_title}}
数据更新时间:2023-05-31
论大数据环境对情报学发展的影响
正交异性钢桥面板纵肋-面板疲劳开裂的CFRP加固研究
特斯拉涡轮机运行性能研究综述
栓接U肋钢箱梁考虑对接偏差的疲劳性能及改进方法研究
氯盐环境下钢筋混凝土梁的黏结试验研究
面向高性能云平台的并行程序优化关键技术研究
并行、多平台“云测试”的关键技术研究
基于数据流分析的顺序程序并行转换智能化方法的研究
GPU并行程序自动优化方法研究