Hadoop组成结构(新版3.x)

一. HADOOP组成描述

(1)Hadoop的四个特性

  1. 高可靠(底层维护了多个副本,即使丢失某一个副本也没事)
  2. 高可扩展(在集群中分配任务,可以随意扩展集群的节点数)
  3. 高效性(基于MapReduce的思想,Hadoop是并行工作的,可以加快任务处理速度)
  4. 高容错性(可以将失败的任务重新分配,即使一个节点挂掉了也没事)

(2)Hadoop的组成

  1. 在hadoop1.x之前,由hdfs和mapreduce组成,hdfs负责存储,mapreduce负责计算和资源管理
  2. 在hadoop2.x之后,新增了yarn单独负责资源管理,让mr只负责计算,进行职能的解耦,提高了容错性。

二.HDFS概述

(1)HDFS概念

Hadoop的分布式的文件管理系统

(2) HDFS的特点

  1. 保存多个副本,且提供容错机制,副本丢失或者宕机自动恢复,默认保存3份
  2. 硬件要求不高,可以在廉价的机器上面运行
  3. 适合大文件处理不适合小文件处理,HDFS会将文件默认分为block块,每个块的初始大小是128M,然后将这些块的信息按照键值对,存储在内存中,如果小文件太多的话,就会使得内存的压力太大,寻址时间超过了读取时间。

(3)HDFS的组成结构和作用

  1. Namenode

    1. 管理HDFS命名空间,存储文件的元数据,目录结构,管理数据块的映射和datanode节点

    2. 处理客户端读写请求

    3. 配置副本策略

    4. namenode内存中存储的是两个东西,fsimage和edits

    5. 其中fsimage是 (元数据镜像文件)文件系统的目录树,NameNode内存中元数据序列化后形成的文件

      edits是堆元数据进行追加操作,效率很高,每当元数据有更新或者添加元素时,修改内存中的元数据添加到Edits中去

  2. datanode

    1. 存储数据块,包括数据本身,和数据块的信息(数据长度,校验和,时间戳)
    2. 自动向namenode注册,并且周期性地向namenode返回自己地块信息
    3. 心跳每三秒一个,返回结果会带有namenode 的命令,如果namenode在10分钟30秒内没有接收到datanode的心跳,那么认为该节点不可用了
  3. SecondaryNamenode

    1. 专门用于Fsimage和edits的合并,减少namenode的压力,添加效率,并返回给Namenode 节点 fsimage.chkpoint,Namenode更名为fsimage
    2. 请求和执行checkpoint
    3. 在特殊情况可以进行namenode的恢复(一般不用)

三. Yarn的组成

管理整个集群的计算资源

1.Nodemanage 负责管理自己一台节点上的内存,将自己的信息汇总给ResourceManager

每次有任务时候,RM会先启动一个Appmaster,以容器 的行式运行,它为单个节点来向RM申请资源,各种资源也都是以资源的行式分配的。

有任务的时候会有Appmaster,没有就会回收

(1)ResourceManager(RM)

  1. 处理客户端请求
  2. 监控NodeManger
  3. 启动或监控ApplicationMaster
  4. 资源的分配和调度

(2)NodeManager

  1. 负责管理单个节点的资源
  2. 处理来自RM的命令
  3. 处理来自于ApplictionMaster命令

(3)ApplicationMaster

  1. 负责数据的切分
  2. 为应用程序申请资源并分配给内部的任务
  3. 任务的监控和容错

(4)container

  1. 分装了某个节点上的多维度资源,如内存,cpu,磁盘,网络
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个开源的分布式计算框架,其中的Hadoop Distributed File System(HDFS)是其核心组件之一。HDFS是一个设计用于存储大规模数据的分布式文件系统,其目标是提供高可靠性、高性能和高可扩展性。下面对Hadoop 2.x HDFS的源码进行剖析。 HDFS的源码主要包含以下几个关键模块:NameNode、DataNode、BlockManager和FileSystem。 首先,NameNode是HDFS的主节点,负责管理文件系统的命名空间和元数据(例如文件的名称和位置等)。它通过解析客户端的请求,维护了一个表示文件和目录路径的层次结构,并使用高效的数据结构(如内存中的树状结构)来存储和管理元数据。 其次,DataNode是HDFS的工作节点,负责存储和处理实际的数据块。每个DataNode都与一个或多个存储介质(如磁盘)相连,可以提供数据的读取和写入操作。DataNode定期向NameNode报告其存储的数据块的状态,并接收来自NameNode的指令,如复制、移动和删除数据块。 BlockManager是NameNode的重要组成部分,负责管理数据块的复制和位置信息。它通过与DataNode的交互,监控和维护数据块的复制系数(即数据块的副本数),确保数据块的可靠性和可用性。 最后,FileSystem是用户与HDFS进行交互的接口。它提供了一系列的API和命令,例如创建、读取和写入文件等,以便用户可以对HDFS中的文件进行操作。 Hadoop 2.x HDFS的源码剖析主要涉及上述模块的实现细节,包括具体数据结构的设计和实现、请求处理的流程、数据块的复制策略以及与底层存储介质的交互等。剖析源码可以深入了解HDFS的内部工作原理,帮助开发者理解和优化系统的性能,同时也有助于扩展和改进HDFS的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值