美文网首页
【HDFS】从BlockPoolSlice#createRbwF

【HDFS】从BlockPoolSlice#createRbwF

作者: 小北觅 | 来源:发表于2023-02-22 14:30 被阅读0次
  • BlockPoolSlice#createRbwFile的过程
  • FsDatasetImpl#createRbw的源码详解
  • 需要构造BlockReceiver的几种情况讨论

从FsDatasetImpl#createRbw,经过FsVolumeImpl#createRbw,最终会调用BlockPoolSlice#createRbwFile的方法。

看下createRbwFile,主要功能就是在rbw目录下根据block的name创建一个文件。

  /**
   * RBW files. They get moved to the finalized block directory when
   * the block is finalized.
   */
  File createRbwFile(Block b) throws IOException {
    File f = new File(rbwDir, b.getBlockName());
    // 如果文件已经存在或创建失败会抛出异常。
    File rbwFile = DatanodeUtil.createFileWithExistsCheck(
        volume, b, f, fileIoProvider);
    // If any exception during creation, its expected that counter will not be
    // incremented, So no need to decrement
    // BlockPoolSlice的numOfBlocks加1。
    incrNumBlocks();
    return rbwFile;
  }

看FsVolumeImpl#createRbw:

  public ReplicaInPipeline createRbw(ExtendedBlock b) throws IOException {
    // 调用上面的createRbwFile创建rbw文件
    File f = createRbwFile(b.getBlockPoolId(), b.getLocalBlock());
    // 构造出LocalReplicaInPipeline对象,这个类我们后面描述
    LocalReplicaInPipeline newReplicaInfo = new ReplicaBuilder(ReplicaState.RBW)
        .setBlockId(b.getBlockId())
        .setGenerationStamp(b.getGenerationStamp())
        .setFsVolume(this)
        .setDirectoryToUse(f.getParentFile())
        .setBytesToReserve(b.getNumBytes())
        .buildLocalReplicaInPipeline();
    return newReplicaInfo;
  }

LocalReplicaInPipeline:
定义了在pipeline中的一个副本,这个副本包括正在被dfs client写入的persistent副本、或者是正在被source datanode做复制的temporary副本,或者是为了做balance正在拷贝的temporary副本。

相关文章

  • 【HDFS】从BlockPoolSlice#createRbwF

    BlockPoolSlice#createRbwFile的过程 FsDatasetImpl#createRbw的源...

  • 12. apache hadoop 伪分布式搭建-part2-H

    HDFS 简单用法 从官网查看dfs的基本用法HDFS用法 操作HDFS 一共有三个命令:hadoop fs: ...

  • Hadoop学习

    本次Hadoop学习重点是HDFS,所以会从以下方面介绍: HDFS基础Hadoop基础架构HDFS假设及目标HD...

  • 关于HDFS的几个操作纯代码

    一.功能实现: 1:将本地文件上传到HDFS上 2:从HDFS上读取文件到本地 3:删除HDFS上的文件 4:遍历...

  • 个人总结-Sqoop

    一、从rdbms导入到hdfs中 1、一 import(从rdbms导入到hdfs中) 可选参数 默认使用as-t...

  • Hadoop

    1.HDFS的特点? 2.客户端从HDFS中读写数据过程? 3.HDFS的文件目录结构? 4.NameNode的内...

  • HDFS中API的使用

    在项目开发中,有时我们需要通过HDFS的api来对文件进行操作,比如将数据上传到HDFS或者从HDFS获取数据等。...

  • 零基础玩转大数据(二)Hadoop伪分布式环境搭建

    配置HDFS(Hadoop分布式文件系统)** hdfs有两个namenode(主和从),datanode(多个)...

  • ClickHouase读写HDFS

    ClickHouase读写HDFS 1. 从ClickHouse导数据到HDFS 1.1 准备测试数据 先在Cli...

  • Hadoop Java API

    获取HDFS客户端对象 创建文件夹 读取HDFS文件 创建文件、写文件 重命名文件 从本地复制文件到hdfs 复制...

网友评论

      本文标题:【HDFS】从BlockPoolSlice#createRbwF

      本文链接:https://www.haomeiwen.com/subject/rpeakdtx.html