`

hadoop FSNamesystem中的recentInvalidateSets

阅读更多

 

今天早就回来了,然后偷懒了2个小时,现在才开始分析代码,之前在几篇文章里都有说将某些block加入到recentInvalidateSets,然后也没分析这个set具体的作用,以及后续的处理,今天就单独来说下他(看完代码才发现原来这么简单,其实应该在ReplicationMonitor中分析的,可惜当时太晚了没心思分析了)

分析之前先看下他的数据结构

Java代码     收藏代码
  1. //   
  2. // Keeps a Collection for every named machine containing   
  3. // blocks that have recently been invalidated and are thought to live   
  4. // on the machine in question.   
  5. // Mapping: StorageID -> ArrayList<Block>   
  6. //   
  7. private  Map<String, Collection<Block>> recentInvalidateSets =   
  8.   new  TreeMap<String, Collection<Block>>();  

 key是datanode的唯一标示StorageID  value是这个datanode上无效的block

之前的文章里已经说明了他的数据来源情况,今天只分析下对他的处理,对他的处理请求是在ReplicationMonitor这个后台任务线程中的computeInvalidateWork方法里执行的(实际方法是invalidateWorkForOneNode),在这个方法里会取出map里第一个datanode节点上所有无效的block,然后将这个block列表设置到表示这个datanode的DatanodeDescriptor对象的invalidateBlocks这个集合中,这个集合的数据结构如下:

Java代码     收藏代码
  1. /** A set of blocks to be invalidated by this datanode */   
  2.   private  Set<Block> invalidateBlocks =  new  TreeSet<Block>();  

 也就是说让datanode对象持有自身无效block列表,那么这个列表谁会关心呢,或者说什么时候会被用起来呢,追踪代码发现是datanode给namenode发送心跳信息时,namenode会依据自己保存的DatanodeDescriptor对象中invalidateBlocks这个集合来生成一个invalidate blocks的命令返回给datanode,同时将这些无效的block也给datanode,让datanode来处理这些无效的block。

更多信息请查看 java进阶网 http://www.javady.com

0
0
分享到:
评论

相关推荐

    Hadoop2.7.1中文文档

    Hadoop2.7.1是Hadoop发展中的一个重要版本,它在前一个版本的基础上进行了一系列的优化和改进,增强了系统的稳定性和性能。这个压缩包文件包含的是Hadoop2.7.1的中文文档,对于学习和理解Hadoop的运作机制、配置以及...

    hadoop2.7中文文档

    hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文文档hadoop2.7中文...

    Hadoop 2.7.1 中文文档

    3. **YARN(Yet Another Resource Negotiator)**:在Hadoop 2.x版本中引入,作为资源管理器,负责集群中的任务调度和资源分配,将原本在MapReduce中的资源管理和计算任务分离,提高了系统的灵活性和效率。...

    Hadoop官方中文文档

    在文档描述中提到,文档是一本中文手册,内容包括Hadoop的快速入门指南、集群搭建步骤、Hadoop分布式文件系统(HDFS)的架构设计、使用方法、权限管理以及配额管理等。由此,我们可以知道文档内容非常丰富,覆盖了从...

    hadoop2.6.5中winutils+hadoop

    在Hadoop生态系统中,Windows平台上的开发和运行通常比Linux环境更为复杂,因为Hadoop主要设计为在Linux上运行。然而,随着Hadoop的普及,开发者们也找到了在Windows上搭建和测试Hadoop环境的方法。标题提到的"hadop...

    hadoop2.6.5中winutils.exe+hadoop.dll

    本文将深入探讨Hadoop 2.6.5版本中与Windows环境相关的两个关键组件:winutils.exe和hadoop.dll,以及它们在Hadoop安装和运行过程中的作用。 Hadoop最初是为Linux操作系统设计的,但在Windows环境中运行Hadoop需要...

    hadoop权威指南第三版 中文 pdf

    书中还涵盖了Hadoop生态系统中的其他关键组件,如YARN(Yet Another Resource Negotiator),它是Hadoop的资源管理系统,负责调度和管理集群中的计算资源。还有HBase,一个基于Hadoop的分布式NoSQL数据库,用于实时...

    Hadoop官方中文帮助文档1.1.0

    本文档为Apache官方Hadoop 1.1.0中文文档 文档目录: 1.概述 2.快速入门 3.集群搭建 4.HDFS构架设计 5.HDFS使用指南 6.HDFS权限指南 7.HDFS配额管理指南 8.命令手册 9.FS Shell使用指南 10.DistCp使用指南 ...

    【免费】Hadoop权威指南(第3版) 修订版(带目录书签) 中文高清晰PDF

    书中首先介绍了Hadoop的起源和基本概念,包括分布式计算的基本原理,以及Hadoop是如何解决大数据挑战的。Hadoop的核心组件包括HDFS(Hadoop分布式文件系统)和MapReduce,这两部分是Hadoop处理数据的基础。HDFS为大...

    hadoop-3.1.1 bin目录文件-含hadoop.dll、winutils

    在IT行业中,Hadoop是一个广泛使用的开源框架,用于大数据处理和分布式存储。Hadoop-3.1.1是Hadoop的其中一个稳定版本,提供了一系列优化和改进,以提高性能和稳定性。本文将深入探讨Hadoop的bin目录以及其中的...

    hadoop安装过程中的问题

    (这是Hadoop的基础) 2.必须ssh无密码登录 3./etc/host 里配置 master和slaves 4.修改/etc/hostname 主机名 5、/etc/profile的java和Hadoop配置路径 6.hadoop namenode format 7./hadoop/etc/slaves这个文件里必须...

    hadoop2.7.3 Winutils.exe hadoop.dll

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分布式存储。Hadoop 2.7.3是这个框架的一个稳定版本,它包含了多个改进和优化,以提高性能和稳定性。在这个版本中,Winutils.exe和hadoop.dll是两...

    hadoop2.7.3的hadoop.dll和winutils.exe

    在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分布式存储。Hadoop 2.7.3是Hadoop发展中的一个重要版本,它包含了众多的优化和改进,旨在提高性能、稳定性和易用性。在这个版本中,`hadoop.dll`...

    hadoop的dll文件 hadoop.zip

    在提供的信息中,我们关注的是"Hadoop的dll文件",这是一个动态链接库(DLL)文件,通常在Windows操作系统中使用,用于存储可由多个程序共享的功能和资源。Hadoop本身是基于Java的,因此在Windows环境下运行Hadoop...

    hadoop的hadoop.dll和winutils.exe下载

    在Hadoop生态系统中,`hadoop.dll`和`winutils.exe`是两个关键组件,尤其对于Windows用户来说,它们在本地开发和运行Hadoop相关应用时必不可少。`hadoop.dll`是一个动态链接库文件,主要用于在Windows环境中提供...

    hadoop.dll & winutils.exe For hadoop-2.6.0

    在Hadoop生态系统中,`hadoop.dll`和`winutils.exe`是两个关键组件,尤其对于Windows用户来说。本文将详细介绍这两个文件以及它们在Hadoop 2.6.0版本中的作用。 `hadoop.dll`是Hadoop在Windows环境下运行所必需的一...

    hadoop.dll & winutils.exe For hadoop-2.7.1

    本文将详细探讨与"Hadoop.dll"和"winutils.exe"相关的知识点,以及它们在Hadoop-2.7.1版本中的作用。 Hadoop.dll是Hadoop在Windows操作系统上的一个关键组件,它是Apache Hadoop对Windows平台的适配部分。由于...

    hadoop-eclipse-plugin-2.6.0.jar.zip_2.6.0_hadoop_hadoop plugin

    3. **创建Hadoop项目**:在Eclipse的“文件”菜单中选择“新建” -&gt; “其他”,在弹出的对话框中找到Hadoop相关选项,创建Hadoop MapReduce项目。 4. **编写MapReduce代码**:在创建的项目中,编写MapReduce程序,...

    hadoop几个实例

    Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它允许在大规模集群中高效处理和存储海量数据。这个压缩包文件包含的"hadop实用案例"很可能是为了帮助初学者理解和应用Hadoop技术。以下是关于Hadoop的一些...

    Hadoop3.1.3.rar

    Hadoop 3.1.3是Hadoop发展的一个重要里程碑,它在3.x系列中引入了多项改进和优化,提高了性能、稳定性和可扩展性。 1. **Hadoop架构**:Hadoop由两个主要部分组成:Hadoop Distributed File System (HDFS) 和 ...

Global site tag (gtag.js) - Google Analytics