Hadoop原理

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

内容简介:大数据平台底层都是采用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原理》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

因计算机而强大

因计算机而强大

[美]西摩 佩珀特 Seymour Papert / 梁栋 / 新星出版社 / 2019-1 / 38

本书有两个中心主题—— 孩子可以轻松自如地学习使用计算机; 学习使用计算机能够改变他们学习其他知识的方式。 (前苹果公司总裁 约翰·斯卡利) 最有可能带来文化变革的就是计算机的不断普及。 计算机不仅是一个工具,它对我们的心智有着根本和深远的影响。 计算机不仅帮助我们学习 ,还帮助我们学习怎样学习。 计算机是一种调解人与人之间关系的移情对象。 一个数学的头脑......一起来看看 《因计算机而强大》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具