MapReduce实验报告

MapReduce实验报告
MapReduce实验报告

硕士研究生实践报告

题目

作者姓名

作者学号

指导教师

学科专业

所在学院

提交日期

一题目要求

我们的项目背景是,可穿戴设备的实时数据分析。1.txt记录的是某一个用户的心跳周期数据,每一个数值表示一次心跳的周期,单位是秒。例如,0.8表示用户当时的心跳间隙是0.8秒。心跳间期按照顺序存储。

1.利用Hadoop的MapReduce框架编写程序,计算出总测量时间和平均心跳间期,即求和

与求平均。请写出程序,并在实验报告中简单描述你的思路。

2.探索Spark的Transformation中的mapPartition,写出示例程序,并思考何时会用到

mapPartition,为什么要用它?

3.探索Spark的Transformation中的flatMap,写出示例程序,并思考何时会用到它,为什

么要用到它。

4.(选做)SD1和SD2是表征心率变异性的一种指标。结合发给你们的论文,用Java或

者Scala实现SD1和SD2的计算(不用考虑并行化,普通的Java或Scala程序即可)。(选做)假设我们同时监控100个用户的心率,是否能够利用Spark的RDD的特性,并行地计算SD1和SD2?(提示:把每一个用户的心率数据作为RDD里面的一个元素,RDD中不同的元素表示不同用户的心率数据,利用map对每一个用户的心率数据进行并行分析)。请描述设计思路,并尽可能实现一个多用户心率监控的计算程序。

二题目实现

第一题:

本题就是利用Hadoop的MapReduce框架编写程序,计算出总测量时间和平均心跳间期,即求和与求平均,程序代码如下:

package ;

import ;

import ;

import ;

import ;

public class InfoBean implements Writable{

private double sumHeartRate;

private double avgHeartRate;

public double getSumHeartRate() {

return sumHeartRate;

}

@Override

public String toString() {

return

"sumHeartRate\t"+this.sumHeartRate+"\tavgHeartRate\t"+this.avg HeartRate;

}

public void setSumHeartRate(double sumHeartRate) { this.sumHeartRate = sumHeartRate;

}

public double getAvgHeartRate() {

return avgHeartRate;

}

public void setAvgHeartRate(double avgHeartRate) { this.avgHeartRate = avgHeartRate;

}

public void set(double sumHeartRate, double avgHeartRate) { this.sumHeartRate = sumHeartRate;

this.avgHeartRate = avgHeartRate;

}

public void readFields(DataInput in) throws IOException { this.sumHeartRate = in.readDouble();

this.avgHeartRate = in.readDouble();

}

public void write(DataOutput out) throws IOException {

out.writeDouble(this.sumHeartRate);

out.writeDouble(this.avgHeartRate);

}

}

package ;

import ;

import ;

import ;

import ;

import ;

import ;

import ;

import ;

import ;

MapReduce海量数据并行处理总结

MapReduce海量数据并行处理 复习大纲 Ch. 1. 并行计算技术简介 1.为什么需要并行计算? 提高计算机性能有哪些基本技术手段 提高字长,流水线微体系结构技术,提高集成度,提升主频 迫切需要发展并行计算技术的主要原因 1)单处理器性能提升达到极限 2)爆炸性增长的大规模数据量 2)超大的计算量/计算复杂度 2.并行计算技术的分类 有哪些主要的并行计算分类方法? 1)按数据和指令处理结构:弗林(Flynn)分类 2)按并行类型

3)按存储访问构架 4)按系统类型 5)按计算特征 6)按并行程序设计模型/方法 1)按数据和指令处理结构:弗林(Flynn)分类 SISD:单指令单数据流 传统的单处理器串行处理 SIMD:单指令多数据流 向量机,信号处理系统 MISD:多指令单数据流 很少使用 MIMD:多指令多数据流 最常用,TOP500高性能计算机 基本都属于MIMD类型 2)按并行类型分类 位级并行(Bit-Level Parallelism) 指令级并行(ILP:Instruction-Level Parallelism) 线程级并行(Thread-Level Parallelism) 数据级并行:一个大的数据块划分为小块,分别由不同的处理器/线程处理 任务级并行:一个大的计算任务划分为子任务分别由不同的处理器/线程来处理 3)按存储访问结构分类 A.共享内存(Shared Memory) 所有处理器通过总线共享内存 多核处理器,SMP……

也称为UMA结构(Uniform Memory Access) B. 分布共享存储体系结构 各个处理器有本地存储器 同时再共享一个全局的存储器 C. 分布式内存(Distributed Memory) 各个处理器使用本地独立的存储器 B和C也统称为NUMA结构 (Non-Uniform Memory Access) 4)按系统类型分类 多核/众核并行计算系统MC(Multicore/Manycore) 或Chip-level multiprocessing, CMP 对称多处理系统SMP(Symmetric Multiprocessing) 多个相同类型处理器通过总线连接并共享存储器 大规模并行处理MPP(Massive Parallel Processing) 专用内联网连接一组处理器形成的一个计算系统 集群(Cluster) 网络连接的一组商品计算机构成的计算系统 网格(Grid) 用网络连接远距离分布的一组异构计算机构成的计算系统 5)按并行程序设计模型/方法分类 共享内存变量(Shared Memory Variables) 消息传递方式(Message Passing) MapReduce方式

MapReduce实验报告

硕士研究生实践报告 题目 作者姓名 作者学号 指导教师 学科专业 所在学院 提交日期 一题目要求 我们的项目背景是,可穿戴设备的实时数据分析。1.txt记录的是某一个用户的心跳周期数据,每一个数值表示一次心跳的周期,单位是秒。例如,0.8表示用户当时的心跳间隙是0.8秒。心跳间期按照顺序存储。 1.利用Hadoop的MapReduce框架编写程序,计算出总测量时间和平均心跳间期,即求和 与求平均。请写出程序,并在实验报告中简单描述你的思路。 2.探索Spark的Transformation中的mapPartition,写出示例程序,并思考何时会用到 mapPartition,为什么要用它? 3.探索Spark的Transformation中的flatMap,写出示例程序,并思考何时会用到它,为什 么要用到它。 4.(选做)SD1和SD2是表征心率变异性的一种指标。结合发给你们的论文,用Java或 者Scala实现SD1和SD2的计算(不用考虑并行化,普通的Java或Scala程序即可)。(选做)假设我们同时监控100个用户的心率,是否能够利用Spark的RDD的特性,并行地计算SD1和SD2?(提示:把每一个用户的心率数据作为RDD里面的一个元素,RDD中不同的元素表示不同用户的心率数据,利用map对每一个用户的心率数据进行并行分析)。请描述设计思路,并尽可能实现一个多用户心率监控的计算程序。 二题目实现 第一题: 本题就是利用Hadoop的MapReduce框架编写程序,计算出总测量时间和平均心跳间期,即求和与求平均,程序代码如下: package ; import ; import ; import ; import ;

MapReduce源码分析完整版

一MapReduce概述 Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论文公开发布了。其中对它的定义是,Map/Reduce是一个编程模型(programming model),是一个用于处理和生成大规模数据集(processing and generating large data sets)的相关的实现。用户定义一个map函数来处理一个key/value对以生成一批中间的key/value对,再定义一个reduce函数将所有这些中间的有着相同key的values合并起来。很多现实世界中的任务都可用这个模型来表达。 二MapReduce工作原理 1 Map-Reduce Map-Reduce框架的运作完全基于对,即数据的输入是一批对,生成的结果也是一批对,只是有时候它们的类型不一样而已。Key和value的类由于需要支持被序列化(serialize)操作,所以它们必须要实现Writable接口,而且key的类还必须实现WritableComparable接口,使得可以让框架对数据集的执行排序操作。 一个Map-Reduce任务的执行过程以及数据输入输出的类型如下所示: Map: ——> list Reduce:> ——> 2例子 下面通过一个的例子来详细说明这个过程。WordCount是Hadoop自带的一个例子,目标是统计文本文件中单词的个数。假设有如下的两个文本文件来运行WorkCount程序:Hello World Bye World Hello Hadoop GoodBye Hadoop 2.1 map数据输入 Hadoop针对文本文件缺省使用LineRecordReader类来实现读取,一行一个key/value对,key取偏移量,value为行内容。 如下是map1的输入数据: Key1 Value1 0 Hello World Bye World 如下是map2的输入数据: Key1Value1 0 Hello Hadoop GoodBye Hadoop 2.2 map输出/combine输入 如下是map1的输出结果

大数据之mapreduce理论

MapReduce理论篇 2.1 Writable序列化 序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输。 反序列化就是将收到字节序列(或其他数据传输协议)或者是硬盘的持久化数据,转换成内存中的对象。 Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输。所以,hadoop自己开发了一套序列化机制(Writable),精简、高效。 2.1.1 常用数据序列化类型 常用的数据类型对应的hadoop数据序列化类型 2.1.2 自定义bean对象实现序列化接口 1)自定义bean对象要想序列化传输,必须实现序列化接口,需要注意以下7项。 (1)必须实现Writable接口 (2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造 (3)重写序列化方法 (4)重写反序列化方法 (5)注意反序列化的顺序和序列化的顺序完全一致 (6)要想把结果显示在文件中,需要重写toString(),且用”\t”分开,方便后续用 (7)如果需要将自定义的bean放在key中传输,则还需要实现comparable接口,因为

mapreduce框中的shuffle过程一定会对key进行排序

详见3.2.1统计每一个手机号耗费的总上行流量、下行流量、总流量(序列化)。 2.2 InputFormat数据切片机制 2.2.1 FileInputFormat切片机制 1)job提交流程源码详解 waitForCompletion() submit(); // 1建立连接 connect(); // 1)创建提交job的代理 new Cluster(getConfiguration()); // (1)判断是本地yarn还是远程 initialize(jobTrackAddr, conf); // 2 提交job submitter.submitJobInternal(Job.this, cluster) // 1)创建给集群提交数据的Stag路径 Path jobStagingArea = JobSubmissionFiles.getStagingDir(cluster, conf); // 2)获取jobid ,并创建job路径 JobID jobId = submitClient.getNewJobID(); // 3)拷贝jar包到集群 copyAndConfigureFiles(job, submitJobDir); rUploader.uploadFiles(job, jobSubmitDir); // 4)计算切片,生成切片规划文件

3-MapReduce编程

MapReduce编程 一、实验目的 1、理解MapReduce编程模型基本知识 2、掌握MapReduce开发环境的搭建 3、掌握MapReduce基本知识,能够运用MapReduce进行基本的开发 二、实验原理 MapReduce 是Hadoop两个最基础最重要的核心成员之一。它是大规模数据(TB 级)计算的利器,Map 和Reduce 是它的主要思想,来源于函数式编程语言。从编程的角度来说MapReduce分为Map函数和Reduce函数,Map负责将数据打散,Reduce负责对数据进行聚集,用户只需要实现map 和reduce 两个接口,即可完成TB级数据的计算。Hadoop Map Reduce的实现采用了Master/Slave 结构。Master 叫做JobTracker,而Slave 叫做TaskTracker。用户提交的计算叫做Job,每一个Job会被划分成若干个Tasks。JobTracker负责Job 和Tasks 的调度,而TaskTracker负责执行Tasks。常见的应用包括:日志分析和数据挖掘等数据分析应用,另外,还可用于科学数据计算,如圆周率PI 的计算等。 MapReduce 框架的核心步骤主要分两部分:Map 和Reduce。当你向MapReduce 框架提交一个计算作业时,它会首先把计算作业拆分成若干个Map 任务,然后分配到不同的节点上去执行,每一个Map 任务处理输入数据中的一部分,当Map 任务完成后,它会生成一些中间文件,这些中间文件将会作为Reduce 任务的输入数据。Reduce 任务的主要目标就是把前面若干个Map 的输出汇总到一起并输出。按照以上基本的描述,其工作图如下。

基于MapReduce的高能物理数据分析系统

第 40 卷 Vol.40 ·专栏· 专栏·
第2期 No.2
计 算 机 工 程 Computer Engineering
文章编号: 文章编号:1000—3428(2014)02—0001—05 文献标识码: 文献标识码:A
2014 年 2 月 February 2014
中图分类号: 中图分类号:TP311
基于 MapReduce 的高能物理数据分析系统
臧冬松 1,2,霍 菁 1,2,梁 栋 1,2,孙功星 1
(1. 中国科学院高能物理研究所,北京 100049;2. 中国科学院大学,北京 100049) 摘 要:将 MapReduce 思想引入到高能物理数据分析中,提出一个基于 Hadoop 框架的高能物理数据分析系统。通过建立事例的 TAG 信息数据库,将需要进一步分析的事例数减少 2~3 个数量级,从而减轻 I/O 压力,提高分析作业的效率。利用基于 TAG 信息 的事例预筛选模型以及事例分析的 MapReduce 模型,设计适用于 ROOT 框架的数据拆分、事例读取、结果合并等 MapReduce 类 库。在北京正负电子对撞机实验上进行系统实现后,将其应用于一个 8 节点实验集群上进行测试,结果表明,该系统可使 4×106 个事 例的分析时间缩短 23%,当增加节点个数时,每秒钟能够并发分析的事例数与集群的节点数基本呈正比,说明事例分析集群具有 良好的扩展性。 关键词: 键词:高能物理;大数据;数据分析;MapReduce 模型;集群;分布式计算
High Energy Physics Data Analysis System Based on MapReduce
ZANG Dong-song1,2, HUO Jing1,2, LIANG Dong1,2, SUN Gong-xing1
(1. Institute of High Energy Physics, Chinese Academy of Sciences, Beijing 100049, China; 2. University of Chinese Academy of Sciences, Beijing 100049, China) 【Abstract】This paper brings the idea of MapReduce parallel processing to high energy physics data analysis, proposes a high energy physics data analysis system based on Hadoop framework. It significantly reduces the number of events that need to do further analysis by 2~3 classes by establishing an event TAG information database, which reduces the I/O volume and improves the efficiency of data analysis jobs. It designs proper MapReduce libs that fit for the ROOT framework to do things such as data splitting, event fetching and result merging by using event pre-selection model based on TAG information and MapReduce model of event analysis. A real system is implemented on BESIII experiment, an 8-nodes cluster is used for data analysis system test, the test result shows that the system shortens the data analyzing time by 23% of 4×106 event, and event number of concurrence analysis per second is higher than cluster nodes when adding more worker nodes, which explains that the case analysis cluster has a good scalability. 【Key words】high energy physics; big data; data analysis; MapReduce model; cluster; distributed computing DOI: 10.3969/j.issn.1000-3428.2014.02.001
1
概述
高能物理实验产生了海量数据,位于法国和瑞士边境
支持,成为大数据领域的标准。 目前 Hadoop 在高能物理实验中的全面应用还非常少, 但已经出现了许多探索和部分应用。美国的 7 个 CMS 实验 网格站点采用了 HDFS 作为存储系统[5]; 意大利国家核物理 研究所探索了利用 Hadoop 的 MapReduce 框架分析高能物 理 实 验 数 据 [6] ; 文 献 [7] 探 索 了 在 亚 马 逊 云 计 算 中 采 用 Hadoop 框架进行高能物理数据分析。 本文分析高能物理数据分析的流程和特点,以及高能 物理普遍采用的 ROOT[8]软件及 ROOT 格式文件的 I/O 特 性,给出一种基于 Hadoop 框架的高能物理数据 MapReduce 分析系统,并进行初步的评估。
的大型强子对撞机(Large Hadron Collider, LHC)每年可产生 25 PB 的数据;改造后的北京正负电子对撞机(BEPCII)和北 京谱仪(BESIII)的取数效率和性能大幅提高, 2012 年产生的 数据量超过了过去几年的总和。数据量的不断膨胀促使不 断探索新的数据存储和计算技术。谷歌公司自 2003 年后相 继发表的 GFS 、MapReduce 和 BigTable 引领了互联网
[1] [2] [3]
界大数据处理的技术革新,而随后基于 Google 实现的 Hadoop 开源项目,更是被众多的公司和厂商广泛采用和
[4]
————————————
基金项目: 基金项目:国家自然科学基金资助重点项目(90912004) 作者简介: 作者简介:臧冬松(1981-),男,博士研究生,主研方向:分布式计算,海量数据管理;霍 研究员 收稿日期: 收稿日期:2013-02-20 修回日期: 修回日期:2013-03-20 E-mail:donal.zang@https://www.360docs.net/doc/d111687899.html, 菁、梁 栋,博士研究生;孙功星,

相关主题
相关文档
最新文档