`
zhaomengsen
  • 浏览: 212017 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

Block源代码

 
阅读更多

Block是HDFS中的最基本单位是对数据块的抽象,它通过一个final long(blkid)来进行标识。一个Block拥有三个longs,它们分别是block-id 、block length和generation stamp。Block名的格式是”blk”+blkid。通过set和get等方法能够得到关于Block的id、name、len等信息
 
一个Block对应着两个文件,其中一个存数据,一个存放元数据信息。它的元数据信息文件的格式如下:”blk_”+blkid+”_”+version.meta
和Block相关的类如下所示:

 
  private long blockId;
 
例如${hadoop.tmp.dir}/dfs/data/current /blk_826540629399449945,这一串数字就是blockId
 blockId 是block编号
 
  private long numBytes;
 blockId 是文件实际大小
 
  private long generationStamp;
 类似个时间戳,每次修改加1
 
在equals中用到 generationStamp
在hashcode没有用到generationStamp
 
 
 
 
文件名称和block的转换
  static long filename2id(String name) {
    return Long.parseLong(name.substring("blk_".length()));
 
  }
 
 
 
  public boolean   public boolean equals(Object o) {    if (!(o instanceof Block)) {      return false;    }    final Block that = (Block)o;    //Wildcard generationStamp is ALLOWED here    return this.blockId == that.blockId      && GenerationStamp.equalsWithWildcard(          this.generationStamp, that.generationStamp);  }
  /** {@inheritDoc} */  public int hashCode() {    //GenerationStamp is IRRELEVANT and should not be used here    return 37 * 17 + (int) (blockId^(blockId>>>32));  }(Object o) {    if (!(o instanceof Block)) {      return false;    }    final Block that = (Block)o;    //Wildcard generationStamp is ALLOWED here    return this.blockId == that.blockId      && GenerationStamp.equalsWithWildcard(          this.generationStamp, that.generationStamp);  }
  /** {@inheritDoc} */  public int hashCode() {    //GenerationStamp is IRRELEVANT and should not be used here    return 37 * 17 + (int) (blockId^(blockId>>>32));  }
 
 
分享到:
评论

相关推荐

    Microsoft Data Access Application Block 源代码

    ### Microsoft Data Access Application Block 源代码解析 #### 标题与描述中的核心知识点 - **Microsoft Data Access Application Block**:这是一个由微软提供的用于简化数据访问逻辑的应用程序块,主要面向.NET...

    hadoop-2.0.4官方源代码

    这个【标题】"hadoop-2.0.4官方源代码"代表着Hadoop的2.0.4版本的原始代码,这是一次重要的发布,因为它引入了许多改进和新特性。【描述】"hadoop-2.0.4官方源代码"简洁明了地指出了该压缩包的内容,即Hadoop的源码...

    俄罗斯方块Java源代码

    【俄罗斯方块Java源代码】是一个关于编程领域的项目,它提供了使用Java语言实现经典游戏“俄罗斯方块”的全部源代码。这个项目对于学习Java编程、游戏开发或者对算法有兴趣的人来说非常有价值。通过阅读和理解这些源...

    Linux MTD源代码分析

    在深入分析Linux MTD源代码之前,我们需要理解一些基本概念。 1. **MTD层次结构**:MTD将闪存设备分为几个层次,包括设备层、分区层和块层。设备层直接对应物理设备,如NAND或Nor闪存;分区层是对设备的逻辑划分,...

    俄罗斯方块mfc源代码

    例如,当用户按下左箭头键时,源代码会调用Block的move方法向左移动当前的方块。 除了基本的游戏逻辑,一个完整的MFC俄罗斯方块程序还可能包含一些额外的功能,如设置菜单、音效支持、高分保存等。这些功能可以通过...

    Github yolov5源代码

    在GitHub上的YOLOv5源代码提供了完整的训练、测试和部署流程,方便开发者进行自定义数据集的训练和模型优化。 **YOLOv5的架构** YOLO(You Only Look Once)系列的目标检测框架以其单阶段检测方法著称,即直接预测...

    FreeBSD 7.0 内核源代码2(共两部分)

    标题提及的"FreeBSD 7.0 内核源代码2"表明这是该版本内核源代码的第二部分,由于文件大小限制被分割。这部分源代码包括多个子目录,每个子目录对应内核的不同组件或子系统,下面将逐一介绍这些子目录及其包含的知识...

    俄罗斯方块源代码 绝对简单

    《俄罗斯方块源代码解析:探索游戏编程的绝对简单之道》 俄罗斯方块,这款经典的电子游戏,以其独特的魅力和简单的玩法风靡全球。对于初学者来说,它是一个绝佳的入门项目,因为其源代码相对简洁,易于理解。本文将...

    CSS禅意花园-源代码

    这个项目的源代码是学习和理解CSS布局、样式和设计原则的宝贵资源。以下是对这个项目及其源代码的详细解读: 1. **CSS基础知识**:在源代码中,你可以看到CSS如何定义元素的字体、颜色、大小、位置等属性,从而理解...

    俄罗斯方块java源代码

    【标题】:俄罗斯方块是经典的电子游戏,其java源代码是学习编程和游戏开发的宝贵资源。在Java编程环境中,开发者可以理解如何利用面向对象编程原则构建游戏逻辑,实现图形用户界面(GUI)以及处理事件。 【描述】...

    俄罗斯方块源代码

    《俄罗斯方块源代码》是基于C#编程语言实现的一款经典游戏。俄罗斯方块作为一款流传广泛的休闲益智游戏,其源代码具有重要的学习价值,尤其是对于初学者来说,能够帮助他们理解游戏开发的基本原理和C#编程的核心概念...

    c++ 俄罗斯方块源代码

    源代码中可能包含了游戏的核心逻辑类,如“Block”(方块)、“Board”(游戏板)和“Game”(游戏控制)等,每个类都封装了相应的功能。 MFC是微软为Windows平台提供的一个C++库,用于简化Windows应用程序的开发。...

    Fatal Python error: PyFrame_BlockPop: block stack underflow 源代码

    Fatal Python error: PyFrame_BlockPop: block stack underflow 源代码

    linux0.11源代码

    Linux 0.11 源代码是 Linux 内核早期的一个版本,它为学习和理解操作系统内核的运作机制提供了宝贵的资源。这个版本的源代码对于初学者来说是一个很好的起点,因为它相对简单且易于理解,同时伴随着丰富的注释教程,...

    yolov8源代码下载

    YOLOv8的源代码是该算法的核心部分,它包含了模型架构、训练脚本、数据预处理逻辑以及推理模块等关键组件。下面我们将详细探讨YOLOv8源代码中的关键知识点。 首先,YOLOv8的模型架构是对先前YOLO版本的改进和优化。...

    深入云计算 Hadoop源代码分析

    ### 深入云计算 Hadoop源代码分析 #### 一、引言 随着大数据时代的到来,数据处理成为了各个领域中的关键技术之一。Hadoop作为一个开源的大数据处理框架,因其优秀的分布式计算能力,在业界得到了广泛的应用。...

    C#俄罗斯方块源代码

    源代码中会包含多个类,如GameBoard(游戏板)、Block(方块)、Player(玩家)等,这些类通过封装各自的数据和行为,实现了游戏的各个组件。同时,可能会有继承关系,比如一个基础的Shape类,其他具体的方块形状类...

    Linux0.01内核源代码及注释

    【Linux0.01内核源代码及注释】是早期Linux操作系统的核心代码,它展示了Linux发展的起点。这个源代码包含了一系列的汇编语言和C语言编写的基本系统组件,用于启动计算机、初始化硬件、管理内存、处理输入输出设备...

Global site tag (gtag.js) - Google Analytics