hadoop三大核心组件概念及原理

hadoop由3个核心组件构成:

(1)HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNode / DataNode/SecondaryNameNode。

(2)YARN集群:负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager

(3)MapReduce:它其实是一个应用程序开发包。

HDFS(分布式文件系统):

  NameNode主要是用来保存HDFS的元数据信息,比如命名空间信息,块信息

    namenode如何保存元数据:

                    

    fsimage - 它是在NameNode启动时对整个文件系统的快照

    edit logs - 它是在NameNode启动后,对文件系统的改动序列

    namenode正常运行时的元数据的改动会写进edit logs文件中,当服务重启时,namenode从fsimage读取并与edit logs合并,变成最新的fsimage并正常运行,之后再生出新的edit logs继续把改动写进。

  Secondary NameNode:合并NameNode的edit logs到fsimage文件。
    SNN作用:只有在NameNode重启时,edit logs才会合并到fsimage文件中,从而得到一个文件系统的最新快照,由于edit logs时间长后会有很大,因此   NameNode重启的时间往往很久。因此Secondary NameNode的出现能及时把NameNode的edit logs到fsimage文件,获取最新的fsimage,因此,NameNode重启是不在需要大量合并edit logs,减少了重启时间。

               合并流程如图:

    

  datanode:用来存储数据。


yarn(集群资源管理器):
  Resource Manager:资源调度器,处理客户端请求。
  Node Manager:负责自己本身节点资源管理和使用,定时向RM汇报本节点的资源使用情况,接收并处理来自RM的各种命令:启动Container
  Application Manager:应用程序管理器,每运行一个作业,会生成一个AM,由AM进行管理,并向RM申请资源生成一个或多个container运行任务,并监控container的健康状况。
  container:资源容器,作业在资源容器里面运行,namespace+cgroup


MapReduce:
  mapper:把每个单词拆分成键值对,比如word:1,word:1,this:1
  combiner:把mapper拆分的单词,相同的word键值相加,比如word:5,this:3
  partitioner:把相同的单词发送给同一个reduce
  shuffle && sort: 般将排序以及Map的输出传输到Reduce的过程称为混洗
  reduce:把发过来的相同的单词相加在一起,比如mapper1发送word:5,mapper2发送word:4,在reduce上进行合并成word:9

  原理附图如下:

  

原文地址:https://www.cnblogs.com/hel7512/p/13418159.html