Hadoop原理

栏目: 编程工具 · 发布时间: 7年前

内容简介:大数据平台底层都是采用Hadoop作为其框架,Hadoop包含底层的分布式文件系统和资源调度框架Yarn,当然算上计算框架还有MapReduce。这里重点总结一下HDFS和其资源调度框架Yarn的原理

大数据平台底层都是采用Hadoop作为其框架,Hadoop包含底层的分布式文件系统和资源调度框架Yarn,当然算上计算框架还有MapReduce。这里重点总结一下HDFS和其资源调度框架Yarn的原理

HDFS

系统架构

Hadoop原理 这块就不用怎么介绍了,主要是NameNode和DataNode,一个用于存储数据块和文件映射、文件属性信息,另一个用来存放真正的业务数据;重点要说下NameNode。

  • NameNode

    Hadoop原理

EditLog 事务日志文件记录每一个对文件系统元数据的改变,如在HDFS中创建一个新的文件,名称节点将会在EditLog中插入一条记录来记录这个改变。整个文件系统的名字空间,包括数据块到文件的映射、文件的属性等等都存放在 Fslmage 文件中。

  • NameNode HA

    Hadoop原理

一个NameNode处于Active状态,另一个处于Standby状态。Active NameNode对外提供服务,Standby NameNode仅通过JournalNode同步Active NameNode的状态,以便能够在它失败时快速进行切换(使用ZooKeeper)。

每个Journal节点暴露RPC接口,允许NameNode读取和写入数据,数据存放在Journal节点的本地磁盘。当Active NameNode写入 EditLog时,它向集群的所有JournalNode发送写入请求,当多数节点回复确认成功写入之后, EditLog就认为是成功写入。

数据流

基本概念

  • block

    文件上传前需要分块,这个块就是block,一般为 128MB ,可以调整。

    块太小:寻址时间占比过高;

    块太大:Map任务数太少,作业执行速度变慢。

  • packet

    packet是第二大的单位,它是client端向DataNode,或DataNode的PipLine之间传数据的基本单位,默认 64KB

  • chunk

    chunk是最小的单位,它是client向DataNode,或DataNode的PipLine之间进行数据校验的基本单位,默认 512Byte

写入流程

  1. 客户端请求NameNode上传数据,NameNode检查是否已存在文件、检查权限;通过后为其分配资源,并写入EditLog返回stream;
  2. HDFSStream会有一个 chunk buff ,客户端每写满一个chunk后,会计算校验和;
  3. 带有校验和的chunk被写入 packet ,当客户端一个packet满后被发送到服务端,服务端packet会进入 dataQueue 队列;
  4. 其他机架的DataNode从服务端dataQueue获取client端上传的packet,并存储;
  5. 一个DataNode成功存储一个packet后之后就会返回一个 ack packet ,放入 ack Queue 中;
  6. client写完数据后,关闭stream,发送完成信号给NameNode将元数据刷到FsImage。

读取流程

packet

其他

如果文件小于块大小(128M),会占用一个块资源,但是在硬盘上大小依然是文件的大小。块的概念是为了切分大文件,同时便于对map按照块来操作数据。

Yarn

架构

Hadoop原理

包含以下组件:

  • Resource Manager
    • Application Manager
    • Yarn Scheduler
  • Node Manager
  • Application Master
  • Container

任务创建流程

Hadoop原理

  1. 用户向YARN中提交应用,其中包括Application Master程序、启动Application Master的命令、用户程序等;
  2. Resource Manager 内部包含了 Application ManagerYarn Scheduler ,RM为应用分配第一个 Container ,并要求 Node Manager 在Container中启动应用程序的 Application Master
  3. Application Master向Resource Manager注册自己,这样用户就可以通过Resource Manager感知应用的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7;
  4. Application Master基于应用中任务内容,向Resource Manager申请资源;
  5. 申请到资源后,AM与分配到的Node Manager通信,要求它启动任务;
  6. Node Manager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务;
  7. 各任务向Application Master汇报状态和进度,在任务失败时重新启动任务;
  8. 应用程序运行完成后,Application Master向Resource Manager注销并关闭自己。

以上所述就是小编给大家介绍的《Hadoop原理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pattern Recognition and Machine Learning

Pattern Recognition and Machine Learning

Christopher Bishop / Springer / 2007-10-1 / USD 94.95

The dramatic growth in practical applications for machine learning over the last ten years has been accompanied by many important developments in the underlying algorithms and techniques. For example,......一起来看看 《Pattern Recognition and Machine Learning》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具