HDFS工作流程与机制和MapReduce

HDFS工作流程与机制和MapReduce

NameNode

  • NameNode:Hadoop分布式文件系统的核心,架构中的主角色

  • NameNode维护和管理文件系统元数据,包括名称空间目录数结构、文件和块的位置信息、访问权限的信息

  • NameNode成为了访问HDFS的唯一入口

  • NameNode内部通过内存和磁盘文件两种方式管理元素据

DataNode

  • DataNode是Haddop HDFS中的从角色,负责具体的数据块存储

  • DataNode的数量决定了HDFS集群的数据存储能力。通过和NameNode配合维护着数据块

Secondary Name Node

  • Secondary NameNode充当Namenode的辅助节点,但不能替代Namenode,主要是帮助主角色进行元数据文件的合并动作

写数据完整流

Pipeline管道。

  • 这是HDFS在上传文件写数据过程中采用的一种数据传输方式

  • 客户端将数据块写入第一个数据节点,第一个数据节点保存数据后再将复制到第二个数据节点,后者保存后将其复制到第三个数据节点

    为什么datanode之间采用线性传输,而不是一次给三个datanode拓扑式传输?
       因为数据以管道的方式,顺序的沿着一个方向传输,这样能够充分利用每个机器的带宽,避免网络连接和高延迟时的连接。最小化推送所有数据的延时。
    

默认3副本存储策略

  • 第一块副本:优先客服端本地,否则随机
  • 第二块副本:不同于第一块副本的不同机架
  • 第三块副本:第二块副本相同机架不同机器

ACk校验

  • ACK即使确认字符,在数据通信中,接收方给发送方的一种传输类控制字符。表示发来的数据已确认无误
  • 在HDFS管道传输数据对 过程中,传输的反方向会进行ACK校验,确保数据传输安全。

Hadoop MapReduce(分布式计算框架)

分而治之

mapreduce的思想核心是“分而治之”

  • 分而治之:就是把一个复杂的问题,按照一定的“分解”方法分为等价的规模较小的若干部分,然后在逐个解决,分别找出各部分的结果,然后把各部分的结果组成整个问题的最终结果。

  • Map:表示第一阶段,负责“拆分”,即把复杂的任务分解为若干个“简单的子任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此之间没有依赖关系。

  • Reduce表示第二个阶段,负责“合并”,即对map阶段的结果进行全局汇总

    这两个阶段合起来正是MapReduce思想的体现

设计构思

  • 应对相互间不具有依赖关系的大数据计算任务
  • MapReduce处理的数据类型是<key,value>键值对
  • MapReduce最大的亮点在于通过计算机框架需要做什么与具体怎么做分来了,为程序员提供了一个抽象和高层的编程接口和框架

MapReduce优点

  • 易于编程
  • 良好的扩展性
  • 高容错性
  • 适合海量数据的离线处理

MapReduce缺点

MapReduce虽然有很多优势,也有相对局限性,局限性不代表不能做,而是在有些场景下实现的效果比较差,并不适合MapReduce来处理,主要表现在以下结果方面:

  • 实时计算性能差

    mapreduce主要应用与离线作业,无法做到秒级或者亚秒级得数据响应

  • 不能进行流失计算

    流失计算特点的数据是源源不断得计算,并且数据是动态的;而mapreduce作为一个离线计算框架,主要是针对静态数据集得,数据是不能动态变化的

MapReduce实例进程

一个完整的MapReduce程序在分布式运行时有三类

  • MRAPPMaster:负责整个MR程序的过程调度及其状态协调
  • MapTask:负责map阶段的整个数据处理流程
  • ReduceTask:负责reduce阶段的整个数据处理流程

阶段组成

  • 一个MapReduce编程模型中只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段

  • 不能有诸多个Map阶段、多个Reduce阶段的情景出现

  • 如果用户的业务逻辑非常复杂,那就只能多个Mapreduce程序串行运行

MapReduce数据类型

  • 整个MapReduce程序中,数据都是以KV键值对的形式流转的

  • 在实际编程解决各种业务问题中,需要考虑每个阶段的输入输出KV分别是什么

  • MapReduce内置了很多默认属性,比如排序,分组,都和数据的K有关,所以说KV的类型数据确定及其重要的

案例

示例1:评估案例Π(PI)的值:

/export/server/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar
 hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 2 2
 
//结果:Estimated value of Pi is 4.00000000000000000000

在这里插入图片描述

示例2:wordcount单词词频统计:

先将带有英语单词的文档进行上传

 jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output
 
//结果:  File Input Format Counters 
                Bytes Read=105
        File Output Format Counters 
                Bytes Written=53
<注意>输出位置要求是一个空文件

在这里插入图片描述

在这里插入图片描述

Map阶段执行过程

  1. 逻辑切片(128M)

  2. 按行读数据

  3. 调用Mapper类中的map方法处理数据

    每读取解析出来一个<key,value>,调用一次map方法

  4. 分区partition

  5. Map输出数据写入内存缓冲区,达到比例溢出到磁盘上。溢出spill的时候根据key进行排序sort

  6. 对溢出文件进行最终的merge合并,成为一个文件

Reduce阶段执行过程

  1. ReduceTask会主动从MapTask复制拉取属于需要自己处理的数据

  2. 把拉取来的数据,全部进行合并,即把分散的数据合并成一个大的数据,在对合并后的数据排序

  3. 对排序后的键值对调用reduce方法。键相等的键值调用一次reduce方法。最后把这些输出的键值对写入HDFS文件中。

Shuffle机制

Shuffle:将map端的无规则输出按指定的规则“打乱”具有一定规则的数据,以便reduce端接收处理

  • 一般把从Map产生输出开始到Reduce取得数据作为输入之前的过程称为shuffle

Map端Shuffle

  1. collect 2.spill 3.merge

Reduce端Shuffle

1.copy 2.merge 3.sort

shuffle机制弊端

  • shuffle是MapReduce程序的核心和精髓,是MapReduce的灵魂所在
  • shuffle也是MapReduce被诟病最多的地方所在,MapReduce相较于Spark、Flink计算引擎慢的原因,跟shuffle机制有很大关系
  • shuffle中频繁涉及到数据在内存、磁盘之间的多次往复

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值