首页 > 其他分享 >MapReduce:简化集群上的大数据处理.18139822

MapReduce:简化集群上的大数据处理.18139822

时间:2024-04-17 10:36:56浏览次数:14  
标签:18139822 reduce 并行 MapReduce 集群 计算 数据处理 我们

本文是论文《MapReduce: Simplified Data Processing on Large Clusters》的翻译。
原作者:Jeffrey Dean and Sanjay Ghemawat @ Google, Inc.
为了刷MIT 6.824 2021,分布式系统课程,可以去B站看下,也有Lab可以刷

概述

MapReduce是一个针对处理大数据集的编程模型以及关联实现。用户定义一个map函数,该函数用来处理一个键/值对,生成一系列的中间键/值对;reduce函数合并所有与相同中间键关联的中间值。就像本论文说的,许多真实世界的任务都可以适配这个模型。

使用这种函数式方式编写的程序可以自然而然的在大型商用机集群上并行化执行。运行时系统来关心输入数据的分区细节;在一系列机器上调度程序执行;处理机器故障(failures);管理必要的机器间通信。这使得程序员可以轻松的利用大型分布式系统的资源而无需任何并行化以及分布式系统的经验。

我们的MapReduce实现运行在一个大的商用机集群上,并且高度可扩展:一个典型的MapReduce计算会在数千台机器上处理几TB的数据。程序员们会发现系统非常易用:我们已经实现了数百的MapReduce程序(译者:指利用MapReduce框架编写的程序),并且在谷歌的集群中,每天都有一千多个MapReduce任务在执行。

1. 介绍

在过去五年里,作者以及Google的其他很多人已经实现了数百个特定用途的,用于处理大量原始数据的计算程序,这些数据可能是爬取的文档、web请求日志等。我们要计算出很多类型的派生数据,比如反向索引、多种表现形式的图形化结构的web页面、每一个host下爬取了多少页面的汇总数据、给定一天下最频繁的查询等等......在概念上,大多数这样的计算都是简单明了的,然而,输入数据通常很大很大,为了在合理时间内完成任务,这种计算必须分布在数百或数千台机器上,如何并行化计算,如何分布数据以及如何处理失败这些问题使得原本简单的计算被用来处理这些问题的大量复杂的代码所掩盖。

为了对付这种复杂性,我们设计了一个新的抽象,允许我们可以表示我们想要执行的简单计算,但是将并行化、容错以及数据分布、负载均衡的复杂问题隐藏到一个库中。我们的抽象灵感来源于Lisp语言以及很多其它函数式语言提供的map以及reduce原语。我们发现,我们的大部分计算都涉及到在输入中的一个逻辑“记录”上应用一个map操作,以计算出一系列中间键/值对,然后对所有共享相同键的值应用一个reduce操作,以组合出使用的派生数据。由于用户自定义的mapreduce操作是函数式的,所以我们可以轻易地并行化大型计算,并且将重新执行作为容错的主要机制。

这个工作的主要贡献就是一个简单并且强大的接口,它能够自动的并行化、分布大规模计算,结合该接口的实现以达到在大型商用PC集群上的高性能。

第二节介绍了基础编程模型,给出了一些示例;第三节介绍了针对我们的基于集群的计算环境的MapReduce接口实现;第四节介绍了我们认为有用的几种编程模型的改进;第五节中包含在多种任务下我们的实现的性能;第六节探索了Goolge对MapReduce的应用,包含我们将它作为重写我们生产索引系统的基础的经验;第七节讨论了相关以及未来的工作。

2. 编程模型

3. 实现

4. 修正

5. 性能

6. 经验

7. 相关工作

标签:18139822,reduce,并行,MapReduce,集群,计算,数据处理,我们
From: https://www.cnblogs.com/lilpig/p/18139991

相关文章

  • sqoop:错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster(已
    1报错信息错误:找不到或无法加载主类org.apache.hadoop.mapreduce.v2.app.MRAppMaster说明:操作将数据库中的数据导入到HDFS中执行sqoopimport --connectjdbc:mysql://aaa01:3306/mysql--usernameroot--passwordroot--tabletest时报了以下错误2报错截图:......
  • 深入理解PHP+Redis实现布隆过滤器(亿级大数据处理和黑客攻防必备)
    布隆过滤器极简概括英文名称BloomFilter,用于判断一个元素是否在一个大数据集合中,如果检测到存在则有可能存在,如果不存在则一定不存在。Redis官网对于布隆过滤器的说明:https://redis.io/docs/data-types/probabilistic/bloom-filter/使用场景防止缓存穿透:用于快速判断某个商......
  • ADNI数据库T1MRI数据处理——基于freesurfer与matlab(1)
    在从ADNI上下载得到T1MRI数据之后,我们需要对数据进行处理才能进一步使用。在信息获取过程中受到各种因素的干扰,导致数据内容不一致,因此我们选择使用freesurfer对数据进行一键式处理。freesurfer必须要装载于linux系统上,安装成功的标志如图所示。对数据进行reconall命令进行3......
  • 雨滴谱数据处理
    一、parsivel雨滴谱数据:二、数据介绍: 总结一下就是,第一行数据是第一个速度对应的全部32个尺度粒子个数,第二行数据是第二个速度对应的全部32个尺度粒子个数。 三、速度、尺度一览表:四、先将速度、尺度数据放入原雨滴谱txt数据中,以方便后期计算:(1)先按时间进行分组(2)再按......
  • 【STM32项目】基于STM32的测量温度与压力的数据处理设计(完整工程资料源码)
    前言:        项目的架构涉及两个关键组成部分,即硬件组件和软件开发。具体到硬件组成,项目包含若干关键模块,如:STM32微控制器作为项目的脑部控制中心,重力感应模块用于检测和记录重力数据,温度感应模块负责监测环境温度,以及液晶显示模块用于向用户展示实时数据和其他信息。......
  • 【数据处理包Pandas】数据载入与预处理
    目录一、数据载入二、数据清洗(一)Pandas中缺失值的表示(二)与缺失值判断和处理相关的方法三、连续特征离散化四、哑变量处理 准备工作导入NumPy库和Pandas库。importnumpyasnpimportpandasaspd一、数据载入对于数据分析而言,数据大部分来源于外部数......
  • 【数据处理包Pandas】分组及相关操作
    目录一、初步认识分组并查看分组信息(一)通过聚合函数查看分组信息(二)转换成列表查看所有组的信息(三)通过循环查看各组的名称和组中的数据信息(四)通过get_group()方法直接获得一组数据二、分组再认识三、分组的执行过程(一)split阶段:创建分组的常见形式(二)应用阶段:对数据进行必......
  • 大数据实验统计-1、Hadoop安装及使用;2、HDFS编程实践;3、HBase编程实践;4、MapReduce编
    大数据实验统计1、Hadoop安装及使用;一.实验内容Hadoop安装使用:1)在PC机上以伪分布式模式安装Hadoop;2)访问Web界面查看Hadoop信息。二.实验目的1、熟悉Hadoop的安装流程。2、熟悉Hadoop访问Web界等基本操作。大数据实验一,Hadoop安装及使用-CSDN博客文章浏览阅读149次,点赞3......
  • Python机器学习实验 数据处理之Numpy
    一、实验目的1.了解numpy库的基本功能2.掌握Numpy库的对数组的操作与运算二、实验工具:1.Anaconda2.Numpy三、Numpy简介Numpy的英文全称为NumericalPython,指Python面向数值计算的第三方库。Numpy的特点在于,针对Python内建的数组类型做了扩充,支持更高维度的数......
  • 【数据处理包Pandas】多级索引的创建及使用
    目录一、元组作为一级索引(一)示例1(二)示例2二、引入多级索引(一)多级索引的创建(二)多级索引中的数学选取 首先,导入NumPy库和Pandas库。importnumpyasnpimportpandasaspd一、元组作为一级索引如果想产生如下图所示的学生成绩表:因为DataFrame的行索......