Hadoop 基本了解 (一)

一.构成

Hadoop主要四个构成部分:

  • 基础核心:提供基础的通用功能
  • HDFS:分布式存储
  • MapReduce:分布式计算
  • Yarn:资源分配(任务的执行方式)

这里写图片描述

1.HDFS的构成

主要分为三个节点:

  • NameNode:主要存储数据的存放地址等元数据
  • DataNode:只用来存储数据
  • SecondaryNameNode:辅助DataNode,把元数据持久化到磁盘中

这里写图片描述

1. NameNode

功能:

  1. 存储数据的分布位置、数据的各种描述信息(如文件名、文件大小、文件所在目录、所有者名称、读写执行权限等)

  2. 读数据时,要先从NameNode获取文件的分布位置(在哪些DataNode上),然后再从DataNode上读数据(当然,这个过程已经由HDFS的Shell或API实现了)

  3. 处理客户端的读写请求.写数据时,先向NameNode提交要写的文件的信息,NameNode检查自己的记录表,以找到合适的DataNode(需要找多个,因为每个文件还要创建副本)来存储这些数据,然后指挥这些DataNode串成一串接收数据。如果某个DataNode在接收数据时罢工,则忽略掉它(忽略之后造成的副本数少于指定数量会在后期补加副本);如果所有选出的DataNode全挂掉(几率很低),则写入失败。

  4. 管理HDFS文件系统的命名空间.需要时,可以调用NameNode列出HDFS中的文件夹及文件(如执行 hdfs dfs -ls / 命令时)。

  5. 管理副本的配置和信息(默认三个副本)

元数据的存储位置

由配置文件hdfs-site.xml中的dfs.namenode.name.dir指定

dfs.namenode.name.dir的默认值是file://${hadoop.tmp.dir}/dfs/name

${hadoop.tmp.dir}的默认值是tmp/hadoop-${user.name}

${user.name}是安装Hadoop的用户名

配置时可以在core-site.xml中修改${hadoop.tmp.dir}

持久化的元数据

元数据目录下的文件:

[root@izj6cj3wje0m1jxumjkuelz current]# pwd
/export/hadoop/tmp/dfs/name/current
[root@izj6cj3wje0m1jxumjkuelz current]# ls
edits_0000000000000000001-0000000000000000002  fsimage_0000000000000000057
edits_0000000000000000003-0000000000000000053  fsimage_0000000000000000057.md5
edits_0000000000000000054-0000000000000000055  fsimage_0000000000000000059
edits_0000000000000000056-0000000000000000057  fsimage_0000000000000000059.md5
edits_0000000000000000058-0000000000000000059  seen_txid
edits_inprogress_0000000000000000060           VERSION

由于需要快速查询,NameNode的元数据运行时是加载在内存中的,关闭时内存中的数据会持久化到硬盘中fsimages文件.同时HDFS集群也会将所有的操作都记录到edits文件中

内存元数据 == fsimage + edits

其他fsimage*.md5是校验文件,用于校验fsimage的完整性
seen_txid是hadoop的版本
VERSION里存储的namespaceID:NameNode的唯一ID,clusterID:集群ID,NameNode和DataNode的集群ID应该一致,表明是一个集群

2.SecondaryNameNode

功能

  1. NameNode的热备节点,有故障时可以快速切换到SecondaryNameNode
  2. 周期性同步edits编辑日志,定期合并fsimage和edits到本地磁盘

生产环境中NameNode会长时间运行,几乎不关闭。而内存中的元数据是在NameNode关闭时进行持久化的。这样生产环境中内存元数据与持久化元数据差异就会越来越大,会导致生成大量的edits文件,NameNode重启速度变慢.

SecondaryNameNode会将NameNode中产生的fsimage和edits下载过来,执行合并生成新的fsimage,然后把新的fsimage再重新发回NameNode,这样NameNode中的持久化元数据就能与内存中的元数据一致或非常接近了,edits文件的数量大大减少

3.JournalNode

功能

  1. NameNode在文件系统被修改时,会向JournalNode写入操作日志(edits)
  2. SecondaryNameNode同步JournalNode的edits日志,使集群中的更新操作可以被共享和同步
  3. 可以被NameNode和SecondaryNameNode同时访问,用以支持NameNode高可用

4.DataNode

功能

  1. 负责存储数据块和数据块校验
  2. 处理客户端的读写请求
  3. 通过心跳机制定期向NameNode汇报运行状态和本地所有块的列表信息
  4. 在集群启动时DataNode项NameNode提供存储Block块的列表信息

Block数据块

  • HDSF固定的最小的存储单元(默认128M,可配置修改)
  • 写入到HDFS的文件会被切分成Block数据块(若文件大小小于数据块大小,则不会占用整个数据块)
  • 默认配置下,每个block有三个副本

2.Yarn构成

主要组成

  • ResourceManager
  • NodeManager

这里写图片描述

1.ResourceManager

主节点只有一个,从节点可以有多个

功能

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

2.NodeManager

每个节点只有一个,和DataNode部署在同一台机器上且一一对应

功能

  1. 定期向ResourceManager汇报本机资源的使用状况
  2. 处理来自ResourceManager的作业请求,为作业分配Container
  3. 处理来自ApplicationMaster的请求,启动和停止Container

3.ApplicationMater

每个任务只有一个,负责任务的管理、资源的申请和任务调度

功能

  1. 和ResourceManager协商,为任务申请资源
  2. 和NodeManager通信,启动和停止任务
  3. 监控任务的运行状态和失败处理

4.Container

任务运行环境的抽象,只有在分配任务时才会抽象生成一个Container

功能

  1. 负责任务运行资源和环境的维护(节点、内存、CPU)
  2. 负责任务的启动
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值