Hadoop Map Reduce计算框架概述

MapReduce在YARN上的的工作机制 Mapreduce过程概述 首先我们对整个mpred的过程有个初步的理解。 首先,我们在客户节点上提交mapred程序,也就是向资源管理器提交作业。 其次,资源管理器对任务进行初始化和分配。 分配任务之后,任务开始在特定节点上的制定容器执行,并向MRapplicationManager更新进度。 最后,application master收到作业完成的或者是薄的通知,并通知客户端。清理容器和工作状... 阅读详情

Map Reduce(计算框架)

 

Map Reduce是Hadoop提供的一款通用的并行计算框架,该计算框架可以计算来自于文本文件、NoSQL、RDBMS系统中的数据。该计算实质是利用了HDFS集群中的DataNode所在机器的CPU、内存和少许磁盘完成分布式计算。

该计算分为两个阶段:

①Map reduce将一个大任务拆分若干个小任务(数据拆分),Map阶段作用是对每一小任务对应的数据做归类分析(分区、排序、Combiner Map Shuffle),并且将归类分析的结果存储到本地磁盘(不是HDFS),该过程称为MapTask,在该过程中系统会根据任务划分在各个物理节点上同时启动多个MapTask完成第一阶段归类分析,加速归类分析的过程。

②Map Reduce在完成Map阶段后,会根据系统设置的汇总并行度数开启多个ReduceTask对第一阶段计算的临时结果进行归并汇总,我们把该阶段称为ReduceTask,在该阶段所有的汇总节点会将所以Map任务计算的中间结果下载到本地(不是HDFS),在本地执行归并排序(合并、排序 Reduce Shuffle)最终将结果输出到HDFS、NoSQL、RDBMS中。

 

 

组件说明:

NodeManager 

每个节点上装有一个NM,主要的职责有: 

(1)为应用程序启动容器,同时确保申请的容器使用的资源不会超过节点上的总资源。 

(2)为task构建容器环境,包括二进制可执行文件,jars等。 

(3)为所在的节点提供了一个管理本地存储资源的简单服务,应用程序可以继续使用本地存储资源即使它没有从RM那申请。比如:MapReduce可以使用该服务程序存储map task的中间输出结果。

调度器 

调度器收集所有正在运行的应用程序的资源请求并构建一个全局规划进行资源分配。调度器会根据应用程序相关的约束(如合适的机器)和全局约束(如队列资源总量,用户可提交作业总数等)分配资源。 

调度器使用与容量调度类似的概念,采用容量保证作为基本的策略在多个应用程序间分配资源。 

调度器的调度策略如下: 
· 选择系统中“服务最低”的队列(如何定义服务最低?可以是资源利用量最低的队列,即:已使用的资源与总共可用资源比值最小) 

· 从该队列中选择优先级最高的作业 

· 尽量满足该作业的资源请求

ASM 

ASM负责管理系统中所有应用程序的AM,ASM负责启动AM,监控AM的运行状态,在AM失败时对其进行重启等。 

为了完成该功能,ASM主要有以下几个组件: 

(1) SchedulerNegotiator:与调度器协商容器资源,并返回给AM 

(2) AMContainerManager:告知NM,启动或者停止某个AM的容器 

(3) AMMonitor:查看AM是否活着,并在必要的时候重启AM

ApplicationMaster 

每个应用程序均会有一个AM,主要职责有: 

(1) 与调度器协商资源 

(2) 与NM合作,在合适的容器中运行对应的task,并监控这些task执行 

(3) 如果container出现故障,AM会重新向调度器申请资源 

(4) 计算应用程序所需的资源量,并转化成调度器可识别的格式(协议) 

(5) AM出现故障后,ASM会重启它,而由AM自己从之前保存的应用程序执行状态中恢复应用程序。

调度器API 

Yarn调度器与AM之间仅有一个API: 

Response allocate(List ask, List release); 

AM使用一个ResourceRequest列表请求特定资源,并同时可要求释放一些调度器已经分配的容器。 

Response包含三方面内容:新分配的容器列表,自从上次AM与RM交互以来已经计算完成的容器的状态(包含该容器中运行task的详细信息),当前集群中剩余资源量。 AM收集完成容器的信息并对失败的任务作出反应。资源剩余量可用于AM调整接下来的资源请求,如MapReduce AM可使用该信息以合理调度maps和reduces从而防止产生死锁。

 

 

 

第 1 步:Client执行main()函数中run job(),开启作业 

通过submit或者waitForCompletion提交作业,waitForCompletion()方法通过每秒循环轮转作业进度,如果发现与上次报告有改变,则将进度报告发送到控制台。其实waitForComplection()方法中还是调用submit()方法。

第 2 步:client向RM发送作业请求同时RM将作业id(在YARN中叫做应用程序ID)以及jar包存放路径返回给Client。 

客户端向ResourceManager提交请求GetNewApplicationRequest,ResourceManager为其返回应答GetNewApplicationResponse,该数据结构中包含多种信息,包括ApplicationId、可资源使用上限和下限等。

第 3 步:这时候作业客户端检查输出说明、计算输入分片(可以通过yarn.app.mapreduce.am.computer-splits-in-cluster在集群上产生分片)。Client会把Jar路径为前缀作业id为后缀作为唯一存放路径,并将作业信息(jar、配置文件、分片信息)写入到HDFS集群中,默认情况下jar包写10份,而其他数据只写3份,当该程序运行完后删除这些数据

第 4 步:客户端Client将启动ApplicationMaster所需的所有信息(包括描述更为详细的Jar存放地址)打包到数据结构ApplicationSubmissionContext中,然后调用submitApplication(ApplicationSubmissionContext)将ApplicationMaster提交到ResourceManager上。

第 5 步(5a-5b):资源管理器RM在收到submitApplication()消息后,将其放入调度器(Scheduler),调度器为其分配一个容器Container,向NM发送命令,然后NM在RM的管理下在container中启动MRAPPMaster进程 

ApplicationMaster首先需向ResourceManager发送注册请求RegisterApplicationMasterRequest,而ResourceManager将返回RegisterApplicationMasterResponse。

第 6 步:applicationmaster对作业进行初始化,创建过个薄记对象以跟踪作业进度。MR根据HDFS中jar包数据量为NM分配任务.

第 7 步:applicationmaster接受来自HDFS在客户端计算的输入分片,对每一个分片创建一个map任务,任务对象,由mapreduce.job.reduces属性设置reduce个数。 

uber模式 

当任务小的时候就会启动一个JVM运行MapReduce作业,这在MapReduce1中是不允许的,这样的作业在YARN中成为uber作业,通过设置mapreduce.job.ubertask.enable设置为false使用。 

那什么是小任务呢? 

当小于10个mapper且只有1个reducer且输入大小小于一个HDFS块的任务。 

但是这三个值可以重新设定:mapreduce.job.ubertask.maxmaps

第 8 步:如果作业不适合uber任务运行,applicationmaster就会为所有的map任务和reduce任务向资源管理器申请容器(Container,仅包含内存和cpu两类资源)。 

ApplicationMaster使用ResourceRequest类描述每个Container。一旦为任务构造了Container后,ApplicationMaster会向ResourceManager发送一个AllocateRequest对象,以请求分配这些Container。ResourceManager会为ApplicationMaster返回一个AllocateResponse对象。 

请求作业为任务指定内存需求,map任务和reduce任务的默认都会申请1024MB的内存,这个值可以通过mapreduce.map.memory.mb和mapreduce.reduce.memory.mb来设置。 

这里的内存分配策略和mapreduce1中不同,在MR1中tasktracker中有固定数量的槽,每个任务运行在一个槽(slot)中,槽有最大内存分配限制,这样集群是固定的,当任务使用较少内存时,无法充分使用槽的内存,造成其他任务不能够获取足够内存因而导致作业失败。 

在YARN中,资源分为更细的粒度,所以避免了以上的问题。应用程序可以申请最小到最大内存限制的任意最小值的倍数的内存容量。默认值是1024~10240,可以通过yarn.scheduler.capacity.minimum-allocation-mb和yarn.scheduler.capacity.maximum-allocation.mb设定。任务可以通过设置mapreduce.map.memory.mb和mapreduce.reduce.memory.mb来请求1GB到10GB的任意1GB的整数倍的内存容量。

第 9 步(9a~9b):资源管理器为任务分配了容器,当ApplicationMaster(从ResourceManager端)收到新分配的Container列表后,会向对应的NodeManager发送ContainerLaunchContext以启动Container。NM会开启内部YARNChild,由YarnChild的java应用程序执行。

第 10 步:运行任务之前,首先将资源本地化,包括作业配置、jar文件和所有来自分布式缓存的文件。YARNChild根据命令到HDFS检索作业资源。

第 11 步:YARNChild开启MapTask 或者Reduce Task

 

ApplicationMaster会不断重复步骤8~9,直到所有任务运行成功。

 

Map Reduce 环境搭建 (单机)

① 修改etc/hadoop/mapred-site.xml(文件默认不存在)

[root@CentOS ~]# cp /usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml.template /usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml
[root@CentOS ~]# vim /usr/hadoop-2.6.0/etc/hadoop/mapred-site.xml
<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
</property>

② 修改etc/hadoop/yarn-site.xml

[root@CentOS ~]# vim /usr/hadoop-2.6.0/etc/hadoop/yarn-site.xml 
<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>CentOS</value>
</property>

③ 启动Yarn(关闭stop-yarn.sh)

[root@CentOS ~]# start-yarn.sh

④ 打开浏览器访问ResourceManager

 

http://centos:8088/cluster

 

 

 

MapReduce编程模型【重点】

maven依赖

<dependency>
	<groupId>jdk.tools</groupId>
	<artifactId>jdk.tools</artifactId>
	<version>1.6</version>
	<scope>system</scope>
	<systemPath>C:/Java/jdk1.8.0_144/lib/tools.jar</systemPath>
</dependency>
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-common</artifactId>
	<version>2.6.0</version>
</dependency>
<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-hdfs  </artifactId>
	<version>2.6.0</version>
</dependency>
<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-mapreduce-client-core</artifactId>
	<version>2.6.0</version>
	</dependency>
<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-mapreduce-client-jobclient</artifactId>
	<version>2.6.0</version>
</dependency>
<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-mapreduce-client-common</artifactId>
	<version>2.6.0</version>
</dependency>
<dependency>
	<groupId>org.apache.hadoop</groupId>
	<artifactId>hadoop-mapreduce-client-shuffle</artifactId>
	<version>2.6.0</version>
</dependency>
<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>

 

案例:统计一个文件中每个词出现的次数

 

Mapper端 -归类分析

static class WordsMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        String[] tokens = value.toString().split(" ");
        for (String token : tokens) {
            context.write(new Text(token), new IntWritable(1));
        }
    }
}

Reducer端-归并汇总

static class WordsReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        int total = 0;
        for (IntWritable value : values) {
            total += value.get();
        }
        context.write(new Text(key), new IntWritable(total));
    }
}

完整代码

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;

import java.io.IOException;

public class TestWords {
    public static void main(String[] args) throws Exception {
        //1.创建job
        Configuration conf = new Configuration();
        Job job = Job.getInstance(conf);

        //2.设置数据的格式类型 决定读入和写出的数据的方式
        job.setInputFormatClass(TextInputFormat.class);
        job.setOutputFormatClass(TextOutputFormat.class);

        //3.设置数据的读入和写入路径
        Path src = new Path("/demo/words");
        Path res = new Path("/demo/res");

        FileSystem fileSystem = FileSystem.get(conf);

        if (fileSystem.exists(res)) {
            fileSystem.delete(res, true);
        }
        TextInputFormat.addInputPath(job, src);
        TextOutputFormat.setOutputPath(job, res);

        //4.设置数据的处理规则
        job.setMapperClass(WordsMapper.class);
        job.setReducerClass(WordsReducer.class);

        //5.设置Mapper和Reducer的key,value类型
        job.setMapOutputKeyClass(Text.class);
        job.setMapOutputValueClass(IntWritable.class);

        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);

        //6.提交任务job
        job.waitForCompletion(true);

    }

    static class WordsMapper extends Mapper<LongWritable, Text, Text, IntWritable> {
        @Override
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            String[] tokens = value.toString().split(" ");
            for (String token : tokens) {
                context.write(new Text(token), new IntWritable(1));
            }
        }
    }

    static class WordsReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
        @Override
        protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
            int total = 0;
            for (IntWritable value : values) {
                total += value.get();
            }
            context.write(new Text(key), new IntWritable(total));
        }
    }
}

 

参考博客 https://blog.youkuaiyun.com/sunspeedzy/article/details/69119521

 

Hadoop基本理论 1、什么是Hadoop? Hadoop是一个分布式系统。主要包含两个核心组件HDFS和MR。 HDFS: 分布式存储系统,解决海量数据的存储问题。 MR:分布式计算框架,解决海量数据的处理问题。 在基础的HDFS和MR基础上,Hadoop生态圈又加入了其它的组件:     Habse 非关系型的分布式数据库,     Hive基于HDFS的数据仓库,     Pig  一个基 阅读详情

相关推荐

Hadoop Map/Reduce教程

Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。一个Map/Reduce作业(job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。

Eternity_04的博客 1181

Yarn运行Mapreduce程序的工作原理

第 1 步:Client执行main()函数中run job(),开启作业 通过submit或者waitForCompletion提交作业,waitForCompletion()方法通过每秒循环轮转作业进度,如果发现与上次报告有改变,则将进度报告发送到控制台。其实waitForComplection()方法中还是调用submit()方法。第 2 步:client向RM发送作业请求同时RM将作业id

sunspeedzy的博客 2575

Map-Reduce的通俗理解

Hadoop简介 Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase,同时Hadoop的相关项目也很丰富,包括ZooKeeper,Pig,Chukwa,Hive,Hbase,Mahout,flume等. 这里详细分解这里面的概念让大家通过这篇文章了解到底是什么hadoop: 1.什么是Map/Redu...

小白_努力 5063

MapReduce on Yarn运行原理

一、概念综述   MapReduce是一种可用于数据处理的编程模型(或计算模型),该模型可以比较简单,但想写出有用的程序却不太容易。MapReduce能将大型数据处理任务分解成很多单个的、可以在服务器集群中并行执行的任务,而这些任务的计算结果可以合并在一起计算最终的结果。最重要的是,MapReduce的优势在于易于编程且能在大型集群(上千节点)并行处理大规模数据集,以可靠,容错的方式部...

aju1790的博客 756

大数据|MapReduce模型 | Hadoop MapReduce的基本工作原理

MapReduce模型 | Hadoop MapReduce的基本工作原理

知识库搭建ing 2306

大白映射 宝马Esys编程设码映射、USB设备映射

大白映射,宝马Esys设码编程、USB设备映射

denson0394的博客 4803

2.MapReduce—YARN原理

HDFS: 特征:切块 用途:分治 最终目的:分布式计算 角色:NN--DN(心跳,汇报) 重点关注:读写流程 MapReduce: 计算模型、批量计算 Map和Recude是一种阻塞关系 Map:单条记录加工处理 Reduce:多条记录加工处理 想要实现,就需要计算向数据移动,就需要HDFS暴露自己的位置,这就需要JobTracker和TaskTracker JobTracker: 1. 资源管理 2. 任务调度 TaskTracker: 1. 任务管理 2. TaskTracker和DN是一一

小羽的博客 250

看不懂分子动力学模拟的结果?一文读懂RMSD曲线

随后,将每一帧结构与初始模板进行叠合,计算对应原子的平均偏移量,即RMSD。总之,掌握 RMSD 的解读方法,就等于抓住了评估分子动力学模拟成败与质量的“总开关”。①在模拟初始阶段,RMSD会从0迅速上升,这是蛋白质从静态晶体或模型结构释放到溶液环境中并逐渐适应的正常过程。②经过一段时间后,曲线不再系统性上升或下降,而是围绕一个平均值,小幅度地上下波动,形成一个稳定的“平台”。这种情况下,RMSD 在初始快速上升后,并未进入平台,而是持续甚至加速上升,始终未见收敛。🔍 如何解读不同趋势的RMSD曲线。

weixin_46587777的博客 4893

Hadoop之MapReduce任务执行流程

Hadoop之MapReduce任务执行流程 图中名词的解析 1.job 表示一个MapReduce作业,负责监控作业的运行状态,它维护了一个作业的状态机,以实现异步执行各种作业相关操作 2.Task 表示一个MapReduce作业的某个任务,负责监控一个任务的运行状态。它维护了一个任务状态机,以实现各种任务相关的操作 3.MRAppMaster MRAppMaster是MapReduce的A...

Java学习笔记 932

AI大模型应用性能核心指标:TTFT 与 TPOT 详解

这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。

lovehu6686的博客 3974

C#与欧姆龙PLC 通信——fins udp协议

该调试助手专门为了帮助大家学习以及测试Fins-Udp通信,下面进行详细介绍。

qq_34059233的博客 2875

MapReduce>分布式计算框架MapReduce(A)

文章目录分布式并行计算框架MapReduceHadoop为什么比传统技术方案快?理解MapReduce思想MapReduce并行计算Hadoop -MapReduce设计构思MapReduce编程初体验 Hadoop组成 Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统,对海量数据的存储。 Hadoop MapReduce:一个分布式的资源调度和离线并行计算框架。 Hadoop ...

qq_44509920的博客 1157

实验三、数字PID控制器的设计

由图可知,由于微分环节的作用,在曲线的起始上升段出现了一个尖锐的波峰,之后曲线也呈衰减的振荡:随着Td增加,系统的超调量增大,但曲线尖锐的起始上升阶段后响应速度减慢,可以看出Td越小。对大多数算法,缩短采样周期可使控制回路性能改善,但采样周期缩短时,频繁的采样必然会占用较多的计算工作时间,同时也会增加计算机的计算负担,而对有些变化缓慢的受控对象无需很高的采样频率即可满意地进行跟踪,过多的采样反而没有多少实际意义。随着Kp的增加,闭环系统的超调量增加,响应速度加快,控制时间加长,稳态误差减少;

m0_51738372的博客 8023

Hadoop组成

1.1 Hadoop1.x和Hadoop2.x区别 1.2 HDFS架构概述 1.3 YARN架构 1.4MapReduce架构概述 MapReduce将计算过程分为两个阶段:Map和Reduce 1)Map阶段并行处理输入数据 2)Reduce阶段对Map结果进行汇总 (图文来自尚硅谷) “求知若饥、虚心若愚!” “求知若饥、虚心若愚!” “求知若饥、虚心若愚!” ...

YoungITの博客 209

笔试题-2023-星宸-数字IC设计【纯净题目版】

4 笔试题-2023-星宸-数字IC设计【纯净题目版】

w0shishabi的博客 1172

HarmonyOS应用开发者基础认证

B. 自定义组件:可复用的 UI 单元,可组合其它组件。D. 内置组件:ArkTS中默认内置的基本组件和布局组件,开发者可以直接调用,如Column、Text、Divider、Button等。E. 属性方法:用于组件属性的配置,统一通过属性方法进行设置,如fontSize()、width()、height()、color() 等。在Column和Row容器组件中,justifyContent用于设置子组件在主轴方向上的对齐格式,alignItems用于设置子组件在交叉轴方向上的对齐格式。

牛肉胡辣汤 3819

【Hadoop】 软件

Map采用一组数据并将其转换为另一组数据,其中各个元素被分解为元组(键/值对)。其次,reduce任务,它将map的输出作为输入,并将这些数据元组合并成一组较小的元组。

a571574085的博客 900

热红外图像小目标检测算法综述

热红外小目标检测算法综述,着重介绍基于深度学习的小目标检测算法

Littro Innovations 4244

大数据处理技术导论(4) | Datawhale组队学习46期

mapreduce 相关内容

mba1398的博客 196

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

初识Apache Hadoop

Apache Hadoop是一套用于在由通用硬件构建的大型集群上运行应用程序的框架。它实现了Map/Reduce编程范型,计算任务会被分割成小块(多次)运行在不同的节点上。除此之外,它还提供了一款分布式文件系统(HDFS),数据被存储在计算节点上以提供极高的跨数据中心聚合带宽。下面编者对于ApacheHadoop进行详细介绍: 一、什么是Apache Hadoop? ...

weixin_33778778的博客 83

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

第三部分:Apache Hadoop的重要组成

一、Hadoop HDFS Hadoop Distribute File System 一个高可靠、高吞吐量的分布式文件存储系统。 采用“分而治之”思想: 比如100T数据,分:拆分--》数据切割,100T数据拆分为10G一个数据块由一个电脑节点存储这个数据块。 数据切割、制作副本、分散存储 一个大数据被切分成多个数据块,存储在多个DataNode上。 NameNode(nn):存储文件...

helloworld999999的博客 199

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

hadoop之MapReduce

MapReduce是hadoop的三驾马车之一,是一个批处理计算框架。 以下内容中,为方便描述 MapReduce有时简写为MR。 理论基础:源自于Google发表于2014年12月的MapReduce论文,可以把Hadoop MapReduce是Goole MapReduce的克隆版。 整体思路:局部性原理将整个问题分而治之。 MR之前,数据分布在各个节点;MR时每个节点就近读取本地存储的数据处理(MAP)-处理后的数据进行合并(combine)-排序(shuffle & sort).

arno_wzkdhr的专栏 475

Storm实现实时大数据分析(storm介绍,与Hadoop比较,)

一、storm与Hadoop对比 Hadoop:   全量数据处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大、自动容错等优点,在海量数据处理上得到了广泛的使用。 Hadoop下的Map/Reduce框架对于数据的处理流程是: 1、 将要处理的数据上传到Hadoop的文件系统HDFS中。 2、 Map阶段...

weixin_30919571的博客 186

hadoop中map到reduce的过程详解

对于Hadoop的MapReduce执行机制,主要分为两部分来处理数据,mapper和reducer阶段,这两个阶段中间有一个非常重要的shuffle过程,这个过程其实是mapreduce的核心部分,因为优化过程主要就是从shuffle处下手。系统将map输出作为输入传给reducer的过程(同时会排序)成为shuffle。shuffle是MapReduce的“心脏”,是奇迹发生的地方。 现就m

mm_bit的博客 9431

Hadoop--MapReduce详解(Map、Shuffle、Reduce)

目录1、MapReduce概述1.1 MapReduce是什么1.2 MapReduce核心思想和简单过程1.3 MapReduce的优缺点2、MapReduce工作机制2.1 MapReduce常用数据序列化类型2.2 MapReduce简单过程图示2.2.1 MapReduce进程2.2.2 数据切片与MapTask并行度2.2.3 分区机制与ReduceTask并行度2.2.4 排序2.2.5 MapReduce过程描述2.3 MapReduce工作机制2.3.1 MapTask工作机制2.3.2 S

words8的博客 1万+

Map和Reduce 个数如何确定

基于org.apache.hadoop.mapreduce包新版API 一、Map 1、Map个数的确定 map的个数等于split的个数。我们知道,mapreduce在处理大文件的时候,会根据一定的规则,把大文件划分成多个,这样能够提高map的并行度。 划分出来的就是InputSplit,每个map处理一个InputSplit.因此,有多少个InputSplit,就有多少个map数。 2、谁负责...

weixin_42410172的博客 3746
上一篇: Hadoop HDFS JAVA API
下一篇: Hadoop MapReduce 任务发布
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值