Hadoop Mapreduce学习

本文详细介绍了Hadoop MapReduce的工作原理,包括MR语义、Map和Reduce的执行过程、Shuffler的作用以及K,V的数据类型使用。MapReduce通过切片、排序和分区保证数据正确流动,而Reduce阶段则通过相同的Key汇聚进行计算。此外,文章还提到了YARN在资源管理中的角色,以及ApplicationMaster如何申请和分配资源。" 122673294,11809240,安卓自定义软键盘实现详解,"['移动开发', 'Android开发', 'Kotlin']
摘要由CSDN通过智能技术生成

Hadoop MapReduce

MR语义

在这里插入图片描述

  • map可以有多个,个数越多,深度越快,hdfs可以作为输入给map,map的输出给reduce的输入,reduce的输出给hdfs,map前面的split是切片,一个切片对应于一个map程序。
  • mapreduce默认情况下,一个块会对应与一个map程序,例如一个hdfs文件有两个块,则map的并行度为2。
  • 切片:相当于一种更小的窗口,这种窗口突破了块,将块中的每一条记录,来当做一个切片,来启用一个map,解耦了块个map1:1的关系。
  • map的数量有切片决定,具体是由数据以及运行场景来决定的。
  • reduce的数量是由人来决定。当reduce和具体服务器节点数量一致时,则相当于一个服务器启用一个进程来控制,而当reduce数量多于具体服务器节点时,则相当于一个服务器会开启对个进程来处理,所以具体reduce的数量要根据实际需求来进行决定。
  • 这里的切片给map输入是以记录为单位,一条记录为单位调用一次map,map输出的是key,value映射对。
  • 默认一行是一条记录

MR原语

  • 输入(格式化 k,v)数据---->map映射成一个中间数据集(k,v)—>reduce
  • “相同”的key为一组,调用一次reduce方法,方法内迭代这一组数据进行计算

总结

  • block > split
    • 1:1
    • N:1
    • 1:N
  • split > map
    • 1:1
  • map > reduce
    • N:1
    • N:N
    • 1:1
    • 1:N
  • group(key) > partition
    • 1:1
    • N:1
    • N:N
    • 1:N >错误 违背了原语
  • partition > outputfile

Shuffler

  • Shuffler<洗牌>:框架内部实现机制
  • 分布式计算节点数据流转:连接MapTask与ReduceTask
    在这里插入图片描述
    经过map之后数据为三个部分 (key,value,partition)这时,首先对partition进行排序,然后对key进行排序,从而一方面保证相同的key位于同一个partition中,另一方面所得到的map输出会使reduce读操作更加的快
    在这里插入图片描述
    Map和Reduce之间数据的拉取Merge叫做Shuffel

Map

  • 读懂数据
  • 映射为kv模型
  • 并行分布式
  • 计算向数据移动

Reduce

  • 数据全量/分量加工
  • Reduce中可以包含不同的key
  • 相同的Key汇聚到一个Reduce中
  • 相同的Key调用一次reduce方法
    • 排序实现key的汇聚

K,V使用自动以数据类型

  • 作为参数传递,节省开发成本,提高程序自由度
  • Writable序列化:使能分布式程序数据交互
  • Comparable比较器:实现具体排序(字典序,数值序等)

在这里插入图片描述
client:算切片,检查路径,上传资源到hdfs,触发JobTracker运行分布式作业
JobTracker:调度所有map和reduce任务,对集群资源的监控和管理,此时会从hdfs文件系统将切片文件下载,根据资源负载情况分析切片中的map应该去到哪一个节点 ,做一个规划,这是TaskTracker会与JobTracker做心跳,会将属于自己的任务取过来,这是JobTracker在从hdfs上把jar包下载到本地,并启动一个JVM进程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
任何计算框架想使用节点计算,资源向yarn来申请,这样就可以规避多个计算框架对于集群节点资源的争抢问题

  • ResourceManager是yarn的核心
  • NodeManager和DataNode是1:1的关系
  • NodeManager会和ResourceManager做心跳
  • NodeManager负责统计自己所在计算机的资源,以及资源的消耗,来汇报给ResourceManager,这样ResourceManager就能知道整个集群的资源情况

知识点:

client去访问ResourceManager,这使ResourceManager会在一个不忙的节点上创建一个ApplicationMaster,相当于之前的JobTracker,ApplicationMaster会向ResourceManager申请,然后由ResourceManager分配Map和Reduce处理的节点,然后在相应的节点上出现三个container,container中放map任务,
zookeeper用于分布式情况下做协调用的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值