Hadoop之mapreduce

本文详细介绍了Hadoop MapReduce的工作流程,包括数据处理、MapTask和ReduceTask的组成、洗牌shuffle机制、归并操作以及运行架构。MapReduce通过将数据切片、排序和归并,确保相同key的数据被同一Reduce处理,提高效率。在Hadoop 1.x和YARN架构中,解释了任务调度和资源管理的不同方式。
摘要由CSDN通过智能技术生成

1. mr流程架构

mapreduce简称mr,数据集采用(key,value)的方式,再交由reduce处理,调用reduce之前,相同key会被放在同一组中,reduce方法内迭代这一组数据进行计算。
MapReduce由MapTask 和 ReduceTask 组成,ReduceTask 又叫做partition一个分区,一个reduce可处理多组数据,一组数据只能由一个reduce处理。

  • Map
    读取数据映射为kv模式,采用并行分布式运算,计算向数据移动。
  • Reduce
    对数据进行全量/分量加工,相同的key为一组数据,Reduce中可以包含多组数据,一组数据只能放到一个Reduce中,通过排序实现key的汇聚。
    -kv使用自定义数据类型
    数据类型只能使用hadoop自带的数据类型或者自定义数据类型。自定数据类型需支持序列化writable并实现大小比较comparable。

1.1 mr数据处理流程

mr数据计算流程图
切片split 默认大小为block大小,可自定义。切片大小决定一个map处理的数据大小,切片会以每条记录调用一次map。一个切片对应一个map,切片数量决定map数量。reduce数量由用户自定义,同一组数据只能由一个reduce处理。
sort排序处理后,可以大大提高reduce处理效率。对于某些数据如果不做排序,reduce每次处理只能读取全部数据找出相同key的数据再进行处理,耗时增大。sort后,数据变为内部有序外部无序,reduce处理前进行归并即可得到一个全排序的数据,如此要找出同一组数据便简单多了。

1.2 洗牌shuffle:mr内部机制

mr洗牌
map task读取数据初步转为k,v形式,再通过partition分区机制转为k,v,p形式p代表区号,以区分该数据应由哪个reduce处理,reduce序号由0开始。
设置buffer缓冲区,减少i/o操作,默认100M。在写入磁盘之前,partition会先进行一个sort操作,排序后写入磁盘,不同分区分开写入,同一分区内key是有序的。
reduce task 从磁盘读取对应分区的同一组数据进行归并操作,可以最终归并为一个文件得到一个全排序文件,在不影响计算到前提下也可以不归并到一个文件以减少i/o操作。
洗牌:有两种说法,一种从partition将数据转为k,v,p开始到合并为一个全排序文件之前,即途中a-b过程称之为洗牌。第二种也可以将copy phase过程即c-d称之为洗牌。

1.3 归并

归并算法

1.4 案例之统计单词出现次数

在这里插入图片描述

2. 运行架构

2.1 Hadoop 1.x

在这里插入图片描述
客户端从nn读取元数据,获取块位置,根据参数计算出切片,将块信息读取到切片中。切片包含归属的文件信息,偏移量(决定移动位置计算,本地化读取),大小,块的位置信息(决定了计算向数据移动)。客户端将切片、相关jar、配置文件上传到hdfs,通知job tracker进行任务调度。
job tracker获取切片信息,根据集群负载情况决定每个计算应该在哪里节点进行,具体任务的执行由对应节点的task tracker来执行,并向job tracker汇报执行进度和结果。

  • 角色
    JobTracker:负责调度所有作业,监控整个集群的资源负载,在主节点中,单点,核心层。
    Tasktracker:在从节点中,管理自身节点资源,通过心跳,向JobTracker汇报资源获取任务。
    Client:以作业为单位规划作业计算分布,提交作业资源到hdfs,JobTacker获取到提交到作业资源。
  • 弊端
    jobtracker存在单节点故障,负载过重,资源管理和计算强度耦合度太高,其它计算框架需要重复实现资源管理,不同裤架对资源不能全局管理。
  • 计算文件中某单词总数

在这里插入图片描述

在这里插入图片描述

2.2 Hadoop yarn

hadoop2.x以后将job tracker去掉,资源管理由Resource Manager负责,App Mstr负责任务调度。
在这里插入图片描述

NodeManager将节点信息定时汇报到ResourceManager,client完成准备工作后,通知到ResourceManager,ResourceManager将根据集群情况选择一台相对不忙到节点创建一个Appliction Master(App Mstr)后,App Mstr向ResourceManager申请计算资源,ResourceManager决定每个计算应该在哪个节点进行计算,在对应到节点分配容器(yarn角色:container),app mstr将在容器中进行map和Reduce等相关操作。

  • yarn 解耦资源和计算
    ResourceManager:存在于主节点,核心层,用于管理集群节点资源
    NodeManager:向ResourceManager汇报资源信息,管理容器Container生命周期,计算框架中到角色都以Container表示
    Container:默认NodeManager启动线程监控Container大小,如果超出申请资源额度,将终止相关线程。支持linux内核到Cgroup。
  • MR
    MR ApplicationMaster Container:以作业为单位,避免单点故障,负载到不同到节点,通过向rm申请资源创建task
  • Client
    rm-client:请求资源创建am
    am-client:与am交互
    参考资料:
    参考博客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值