栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop服务和Zookeeper服务中的各个交互流程

Hadoop服务和Zookeeper服务中的各个交互流程

1、ResourceManager和NameManager的交互 流程
  • 1)由客户端向RM发送计算任务的请求,

  • 2)RM的APPlocationManager接收计算的任务,然后在namemanager中生成一个applocationmaster

  • 3)applocationmaster接收请求后,向RM中的ResourceScheduler申请计算资源,申请成功后告知applocationmaster

  • 4)applocationmaster接收到申请成功的消息后,通知NM按照分配资源,提供相应的资源数据

  • 5)NM中的map和reduce将计算信息通知给applocationmaster

  • 6)applocationmaster接收到计算完成信息后,通知NM回收资源

  • 7)之后applocationmaster计算任务完成后告知RM中的applocationmanager,释放自己的资源.

  • 多个计算任务的资源调度的分配

    • FIFO:队列形式,先进先出  

    • 容量调度:会划分不同的通道,进行大任务和小任务的计算, 

      • 其中会有动态调整机制:可以设置资源上限,若发现其中一个通道没有计算任务,则会将该通道内的资源分配给另一个通道,但不会达到百分之百的资源使用

      • 初始值:30%、70%

      • max:45%、85%

    • 公平调度,在一个计算任务时间较长时,在进行map阶段结束后,会将资源分配给较小任务进行计算任务

2、zookeeper和hadoop服务之间的交互
  • 1)最少要有2个hadoop服务,5台服务器,Node1、Node2、Node3、Node4、Node5

  • 2)Node1和Node2上安装Namenode、Resourcemanager,如果服务器多可以将NN和RM分开安装,Node3、Node4、Node5上安装DataNode、Namemanager、Zookeeper

  • 3)Node1和Node2中的NN通过ZKFC连接zookeeper服务,

    • ZKFC服务是hadoop自带的,由hadoop服务启动

    • 负责监控各自NN的状态

    • 连接zk服务创建节点,确认主服务是谁

    • 备用服务的ZKFC会去监听主服务的节点

    • 监听到主服务的节点有变化时,启动备用的服务作为主服务

    • zk服务需要维护一个终端会话

  • 4)两个NN之间的数据同步是依靠journal manager

    • NN会将元数据传递给journal manager中的journal node进行保存,

    • JN也会对所收到的元数据进行备份,JN有几个就备份多少份数据,

    • JN存储数据也遵循过半机制,有超过一半的JN存储成功,数据才算真的存储成功,

    • JN会持续不断的接收NN产生的新的数据进行保存

3、namenode和secondarynamenode之间的交互流程
  • 1)namenode中如果有新的事务指令(写,删除,移动)操作写入,则先将食物之灵写入本地的edits文件,写入成功后再写入内存

  • 2)secondarynamenode向namenode定时询问是否存需要存储数据,

  • 3)namenode接收后,如果需要存储,则向secondarynamenode发送edits和fsimage

  • 4)secondarynamenode接收后,执行edits中的指令,把发生变化的文件信息(文件的路径发生变化)写入fsimage,(合并操作)生成新的new_fsimage,并将其发送到内存,

  • 5)同时,secondarynamenode将新的new_fsimage重新传递给namenode,然后namenode将最近最新的edits按照指令拆解成一个一个的新的new-edits

4、MapReduce的计算过程
  • 1)先对datanode中的数据按照块进行分片操作,并分成key-value的形式,key为行号,value为行中的数据

  • 2)然后,每个分片会对应一个map,运行map进行数据的进一步的分割,分割为key-value的形式,此时运行了map代码,(若是词频统计操作)key为词,value为词的个数

  • 3)进入shuffles机制中,对所得key-value数据进行分区、排序、规约、合并数据操作

    • 分区:指定分区,默认情况下是一个分区对应一个reduce

    • 排序:对map数据进行排序,词频统计时,是按照字母的先后顺序排序

    • 规约:指定数据按照什么方式合并,hadoop自身完成

    • 合并数据

  • 4)进入reduce阶段进行合并统计,运行reduce代码,如果是多个分区,则对应会有多个reduce进行计算统计

  • 5)输出数据到hdfs中进行保存展示

5、namenode和datanode之间的流程
  • 1)客户端向namenode发送上传、删除等指令请求,询问namenode是否可以存储数据,namenode会检查所存储的文件目录是否存在

  • 2)如果目录存在则返回按照已有的副本数,并指定datanode的存储位置,和存储顺序

  • 3)客户端收到消息后,按照NN分配好的datanode的存储顺序去连接第一个datanode

  • 4)第一台datanode保存完成后回去连接第二个datanode,这之间数据的传递大小大概是64kb

  • 5)第二台保存成功后会连接第三台,以此类推,直到所有的datanode保存完成

  • 6)最后一个datanode保存完成后会向前一台发送保存结果,以此类推,直到第一台datanode,此时datanode会将保存结果返回给客户端

 

 

 

6、zk服务保存数据的过程
  • 无论客户端访问的哪个zk服务,都会先把保存数据的指令请求发送给leader

  • zk服务中的leader接收请求后会询问各个follower能否存储

  • 如果返回的结果中有超过一半(过半机制)的follower同意保存,则leader通知各个follower进行数据存储

  • zk服务的leader也是通过过半选举产生的,observer处理查询请求,不参加是否保存数据的选举

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号