Hadoop的HDFS以及YARN简介

Hadoop的HDFS以及YARN简介

Hadoop分布式系统简介

  • Hadoop是分布式的系统架构,是Apache基金会顶级金牌项目

  • 来源:三大论文GFS、MapReduce、 Bigtable

  • 创始人:Doug cutting

Hadoop分布式系统重要部分

  • HDFS
  • YARN
  • MapReduce
  • Zookeeper
  • Hive
  • Hbase

HDFS(分布式存储系统)

  • 用途:解决大数据的存储问题

主要优缺点

  • 优点:
    • 分布式的特性
    • 适合大数据处理
    • 百万规模以上的文件数量
    • 适合批处理
    • 移动计算而非数据(MR),数据位置暴露给计算框架
    • 高可靠性,高容错性
  • 缺点
    • 低延迟高数据吞吐访问问题
    • 小文件读取占大量内存
    • 不支持文件修改

功能模块

数据存储单元(block)

文件被切分成固定大小的数据块block

默认数据块大小为128MB(Hadoop2.x)

数据大小不足一个block存成一个block

block为逻辑概念,并非一定占用1个block大小的物理存储空间

默认副本数为3(包括原文件)

Block大小和副本数通过Client端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更

副本放置策略

  • 第一个副本:放置在上传文件的DN;如果是集群外提交,则随机挑选一台磁盘不太满,CPU不太忙的节点。
  • 第二个副本:放置在于第一个副本不同的机架的节点上。
  • 第三个副本:与第二个副本相同机架的不同节点。
  • 更多副本:随机节点

同一个文件的副本不能放在相同节点上!否则会报错

NameNode(NN)

  • 接收客户端的读写服务
  • 保存文件的metadata信息
  • 文件的metadata信息启动时加载到内存

SecondaryNameNode(SNN)

它的主要工作是帮助NN合并edits log文件,减少NN启动时间,它不是NN的备份(但可以做备份)。

DataNode(DN)

  • 存放数据(Block)
  • 通过心跳与NN联系

HDFS读写流程

  • 1.调用FileSystem对象的open方法
  • 2.DFS得到第一批block块的location
  • 3.返回FSDataInputStream对象,寻找离客户端最近的datanode并连接
  • 4.数据从datanode源源不断的流向客户端
  • 5.如果第一文件的数据读完了,就会关闭指向第一块的datanode连接,接着读取下一文件。
  • 6.如果第一批block块读完,会从namenode拿下一批block块,以此类推,直到读完为止,关闭流。
  • Datanode连接发生异常:当前DataNode连接发生故障之后重新选择第二近的Datanode,之后的block块读取时直接跳过该Datanode
  • block块损坏:先报告namenode,然后从其他datanode上读取该block的镜像

  • 1.客户端通过DistributedFileSystem的create方法创建文件
  • 2.DistributedFileSystem通过RPC调用NN创建一个没有block块关联的新文件
  • 创建前, namenode会做各种校验,比如文件是否存在,客户端有无权限去创建等。
  • 3.返回FSDataOutputStream对象,将数据切成小的packet,然后排成队列data queue
  • 4.决定目标datanode,将数据排成管道输出,在datanode之间串行输出
  • 5.另一个ack queue接受datanode的收到响应,当传输到一半datanode发生错误时进行操作
    • 1)关闭管道
    • 2)将传输完成的packet同步到data queue中
    • 3)block剩下的部分写到正常的datanode中
    • 4)NN找到另一个正常的datanode部署一份副本
  • 6.完成后关闭流

Hadoop2.0以及HA

产生背景:

Hadoop1.0存在的问题

  • namenode单点故障

  • namenode压力过大,影响系统扩展性

  • JobTracker访问压力大,影响系统扩展性

  • 难以支持除MapReduce外其他计算框架

组成

  • HDFS
  • YARN
  • MapReduce(或其他计算框架)

Hadoop2.0重要特点:高可用(HA)

  • 解决单点故障
  • 主备namenode
  • 基于zookeeper的切换
  • 解决内存受限问题
  • HDFS Federation(联邦机制)

ZooKeeper

作用

提供一致性服务

功能

  • 配置维护
  • 域名服务
  • 分布式同步
  • 组服务

角色

  • 领导者(Leader)
    • 负责进行投票的发起和决议,更新系统状态。
  • 跟随者(Follower)
    • 用于接受客户端请求并想客户端返回结果,在选主过程中参与投票。
  • 观察者(Observer)
    • 不参与投票,把请求由客户端发给Leader

原理

paxos算法

特点

  • 最终一致性
    • 为客户端展示同一个视图,这是zookeeper里面一个非常重要的功能
  • 可靠性
    • 如果消息被到一台服务器接受,那么它将被所有的服务器接受.
  • 实时性
    • Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
  • 独立性
    • 各个Client之间互不干预
  • 原子性
    • 更新只能成功或者失败,没有中间状态。
  • 顺序性
    • 所有Server,同一消息发布顺序一致。

YARN

YARN为Hadoop2.0引入的资源管理系统

组成

  • ResourceManager
    • 负责整个集群的资源管理和调度。
  • ApplicationMaster
    • 负责应用程序相关的事务,比如任务调度、任务监控和容错等。

yarn资源管理任务调度流程

  • 1.在客户端提交Application
  • 2.发送请求到ResourceManager,请求启动ApplicationMaster
  • 3.ResourceManager收到请求后,会在随机一台NN上启动ApplicationMaster
  • 4.AM启动后,会向NN请求一批Container用于启动Executor
  • 5.RM返回给AM一批NodeManager节点
  • 6.AM启动Executor
  • 7.Driver发送task到Executor上执行,并监控task的执行情况和回收结果。

YARN3种调度模式

  • FIFO,最简单的先进先出,按照用户提交任务的顺序执行。这种方式最简单,但是也一大堆问题,比如任务可能独占资源,导致其他任务饿死等。
  • Capacity,采用队列的概念,任务提交到队列,队列可以设置资源的占比,并且支持层级队列、访问控制、用户限制、预定等等高级的玩法。
  • Fair share,基于用户或者应用去平分资源,灵活分配。

你可能感兴趣的:(大数据)