mapreduce的理解

1.自己设计一个并行计算框架,应该需要考虑那些问题呢?

第一个问题是:并行计算肯定是多台计算机吗,多台计算机他们之间如何划分任务?

这个地方总归有一个模块来分发任务,也就意味这它就是老大,它来维护任务或者资源

mapreduce在hadoop 1.x版本上是jobtracker,hadoop 2.x版本是通过yarn来管理的,它是ResourceManager,来管理其他节点以及如何分布任务的。

小弟在Hadoop 1.x版本上是tasktracker,在hadoop2版本上是NodeManager,NodeManager在启动一个进程YARNchild来运行处理计算数据。

第二个问题是:并行计算所需的计算数据从哪里来?

一个任务很大,如果都让放在老大那边,是不是压力很大吗?所以他们使用现成的可以存储数据的hdfs来负责存储数据,客户端向ResourceManager得到任务允许之后,然后将所需jar包,依赖都放在hdfs节点上,让他们自己都去取所需任务,老大只要告诉他们一定的标志就可以了吗。

第三个问题是:并行计算计算出来的结果,如何进行汇总?

并行计算计算出来的数据,最终还是写给了hdfs,不可能写给老大,老大可能还要连续接受别人给的新任务,也不可能放在每个节点上,这样数据过于离散,最后还是选择了继续放在hdfs上。

第四个问题是:如何在这个过程中有的任务失败了,会想什么办法来弥补呢?

他们通过rpc通信,(也就是所谓的心脏跳动机制,来时不时给老大反馈,)老大在让其它nodeManager来继续干这些事情,来弥补计算。

2.mapreduce的运行流程是什么?

client

jobtracker

inputsplit            ->mapper()

mapoutput  ----shuffle---reducer()  ------>output

inputsplit            ->mapper()

inputsplit:一个inputsplit对应这一个map函数   :也就一行作为一个mapper函数来处理。

mapper输出[hello    1] [zhang 1] [san 1]

shuffle:对起所需结果,进行分组。如hello 一组,[hello, (1,1,1)]

reduceer:输出 hello 5

zhangsan 1

hadoop中数据要在网络之间传输,必须实现序列化(先将文件写到磁盘中,在从磁盘中在经过网络传输)

Hadoop使用自己的高效序列化机制来代替Java版的序列化机制(string,long等都实现seriable),

hadoop序列化机制必须实现writable接口。

时间: 2024-11-05 15:30:53

mapreduce的理解的相关文章

Hadoop 对MapReduce的理解

对MapReduce的理解 客户端启动一个作业 向JobTraker请求一个JobId 将资源文件复制到HDFS上,包括Jar文件,配置文件,输入划分信息等 接收作业后,进入作业队列,根据输入划分信息为每个划分创建一个map任务,并将map任务分配给TaskTracker来执行(运算移动,数据不移动)分配Reduce任务时,不考虑数据本地化 TaskTracker每隔一段时间向JobTracker发送一个心跳, 告诉JobTracker它仍在运行,同时心跳中还带有很多信息,比如任务进度 Map端

漫画揭秘Hadoop MapReduce | 轻松理解大数据

网址:http://www.iqiyi.com/w_19rtz04nh9.html 原文地址:https://www.cnblogs.com/beiyi888/p/9546752.html

Hadoop阅读笔记(二)——利用MapReduce求平均数和去重

前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一年……我在博客园-_-#,希望用dt的代码燃烧脑细胞,温暖小心窝. 上篇<Hadoop阅读笔记(一)——强大的MapReduce>主要介绍了MapReduce的在大数据集上处理的优势以及运行机制,通过专利数据编写Demo加深了对于MapReduce中输入输出数据结构的细节理解.有了理论上的指导,仍

MapReduce架构简介

前言: MapReduce是用于数据处理的一种编程模型,简单但足够强大,专门为并行处理大数据而设计.MapReduce的处理过程分为两个步骤:map和reduce.每个阶段的输入输出都是key-value的形式,key和value的类型可以自行指定.map阶段对切分好的数据进行并行处理,处理结果传输给reduce,由reduce函数完成最后的汇总.到了2.0之后,MapReduce可以理解为是一个jar包或一个程序,这个程序要运行在Yarn上面,上面有两个进程,ResourceManager和N

MapReduce编程实战(2)-词频统计结果存入mysql数据库

摘要 通过实现MapReduce计算结果保存到MySql数据库过程,掌握多种方式保存计算结果的技术,加深了对MapReduce的理解: Api 文档地址:http://hadoop.apache.org/docs/current/api/index.html maven资源库:https://mvnrepository.com/repos/central     ##用于配置pom.xml的时候查询资源 1.master主机安装mysql 参见文章:https://www.cnblogs.com

Hadoop Day3

MapReduce原理(****理解***) 思考:怎样解决海量数据的计算? MapReduce概述 MapReduce是一种分布式计算模型,由Google提出,主要用于搜索领域,解决海量数据的计算问题. MapReduce由两个阶段组成: map():任务分解 reduce():结果汇总 这两个函数的形参是key.value对,表示函数的输入信息. 数据类型与格式 map.reduce键值对格式: 函数 输入键值对 输出键值对 Map() <K1,V1> <K2,V2> Redu

大数据实战:用户流量分析系统

本文是结合hadoop中的mapreduce来对用户数据进行分析,统计用户的手机号码.上行流量.下行流量.总流量的信息,同时可以按照总流量大小对用户进行分组排序等.是一个非常简洁易用的hadoop项目,主要用户进一步加强对MapReduce的理解及实际应用.文末提供源数据采集文件和系统源码. 本案例非常适合hadoop初级人员学习以及想入门大数据.云计算.数据分析等领域的朋友进行学习. 一.待分析的数据源 以下是一个待分析的文本文件,里面有非常多的用户浏览信息,保扩用户手机号码,上网时间,机器序

Hadoop 2.x伪分布式环境搭建测试

Hadoop 2.x伪分布式环境搭建测试 标签(空格分隔): hadoop hadoop,spark,kafka交流群:459898801 1,搭建hadoop所需环境 卸载open JDK rpm -qa |grep java rpm -e –nodeps [java] 1.1,在/opt/目录下创建四个目录: modules/ software/ datas/ tools/ 解压hadoop-2.5.0及jdk-7u67-linux-x64.tar.gz至modules目录下. $tar -

一文读懂大数据计算框架与平台

1.前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等.随着互联网.物联网等技术得到越来越广泛的应用,数据规模不断增加,TB.PB量级成为常态,对数据的处理已无法由单台计算机完成,而只能由多台机器共同承担计算任务.而在分布式环境中进行大数据处理,除了与存储系统打交道外,还涉及计算任务的分工,计算负荷的分配,计算机之间的数据迁移等工作,并且要考虑计算机或网络发生故障时的数据安全,情况要复杂得多. 举一个简单的例子,假设我们要从销售记录中统