MapReduce运行架构

1.Hadoop1.x版本

  • 运行架构是一个主从架构。主节点是JobTracker,从节点是TaskTracker
  • 主要流程:
      客户端运行一个应用程序,然后JobTracker会向NameNode发送请求,请求这个应用程序需要的数据在哪个DataNode上。然后JobTracker会向有数据的TaskTracker发消息,让它分配一些资源出来,我要发布任务去执行。
  • JobTracker的作用:
      资源调度主节点和任务调度主节点。所以JobTracker的压力很大,容易挂掉。
  • 因为JobTracker和TaskTracker是MapReduce自带的,与MapReduce耦合度太高,如果还有一个spark的应用程序也要执行,由于两者之间没有通信,就会造成资源隔离以及抢夺问题。

2.Hadoop2.x版本
  采用yarn资源调度器。也是主从架构,主节点是ResourceManager,并且还有一个备用的ResourceManager,从节点是NodeManager。流程如下:

  1. 客户端拿到应用程序计算的文件的路径找NameNode获取每一个block的位置,并生成一个报表。
  2. 客户端找ResourceManager为ApplicationMaster申请资源。
  3. ResourceManager接收客户端的申请,然后查看哪一个节点上资源充足,如果大部分节点的资源充足,那就随机找一台节点启动container容器.
  4. 在第三步选择的节点中规划出一个container以后,NodeManager会在这个容器中启动一个ApplicationMaster(主要负责任务调度)。
  5. 客户端会将生成的报表交给ApplicationMaster。
  6. ApplicationMaster拿到报表后,会根据报表去找ResourceMaster申请资源。如果一个block块的三个存储位置都没有资源,那么就会在与block存储位置同机架上选择一个节点。如果同机架上的节点也都没有资源,那么就随机找一台节点。然后在选中的节点中规划出一个container,在容器中启动一个yarn-child.
  7. ApplicationMaster发布map task到各个yarn-child中执行。
  8. yarn的引入使得多个计算框架可运行在一个集群中。只要每个应用程序实现一个ApplicationMaster。

3.yarn集群的搭建
  步骤:

  1. 集群规划
    MapReduce运行架构_第1张图片

2.配置mapred-site.xml文件。
  一开始在Hadoop的配置文件中没有mapred-site.xml文件,只有mapred-site.xml文件,需要把mapred-site.xml文件复制一份,并重命名为mapred-site.xml,然后在做配置。配置信息如下:

 
     mapreduce.framework.name
     yarn
 

3.配置yarn-site.xml文件


   yarn.nodemanager.aux-services
   mapreduce_shuffle


   yarn.resourcemanager.ha.enabled
   true
 
 
   yarn.resourcemanager.cluster-id
   cluster1
 
 
   yarn.resourcemanager.ha.rm-ids
   rm1,rm2
 
 
   yarn.resourcemanager.hostname.rm1
   node03
 
 
   yarn.resourcemanager.hostname.rm2
   node04
 
 
   yarn.resourcemanager.zk-address
   node02:2181,node03:2181,node04:2181
 

4.每个节点都这样配置完成后,然后就可以启动yarn集群。命令是:start-yarn.sh

你可能感兴趣的:(分布式计算原理)