今天早就回来了,然后偷懒了2个小时,现在才开始分析代码,之前在几篇文章里都有说将某些block加入到recentInvalidateSets,然后也没分析这个set具体的作用,以及后续的处理,今天就单独来说下他(看完代码才发现原来这么简单,其实应该在ReplicationMonitor中分析的,可惜当时太晚了没心思分析了)
分析之前先看下他的数据结构
-
-
-
-
-
-
- private Map<String, Collection<Block>> recentInvalidateSets =
- new TreeMap<String, Collection<Block>>();
key是datanode的唯一标示StorageID value是这个datanode上无效的block
之前的文章里已经说明了他的数据来源情况,今天只分析下对他的处理,对他的处理请求是在ReplicationMonitor这个后台任务线程中的computeInvalidateWork方法里执行的(实际方法是invalidateWorkForOneNode),在这个方法里会取出map里第一个datanode节点上所有无效的block,然后将这个block列表设置到表示这个datanode的DatanodeDescriptor对象的invalidateBlocks这个集合中,这个集合的数据结构如下:
-
- 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
分享到:
相关推荐
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中文...
3. **YARN(Yet Another Resource Negotiator)**:在Hadoop 2.x版本中引入,作为资源管理器,负责集群中的任务调度和资源分配,将原本在MapReduce中的资源管理和计算任务分离,提高了系统的灵活性和效率。...
在文档描述中提到,文档是一本中文手册,内容包括Hadoop的快速入门指南、集群搭建步骤、Hadoop分布式文件系统(HDFS)的架构设计、使用方法、权限管理以及配额管理等。由此,我们可以知道文档内容非常丰富,覆盖了从...
在Hadoop生态系统中,Windows平台上的开发和运行通常比Linux环境更为复杂,因为Hadoop主要设计为在Linux上运行。然而,随着Hadoop的普及,开发者们也找到了在Windows上搭建和测试Hadoop环境的方法。标题提到的"hadop...
本文将深入探讨Hadoop 2.6.5版本中与Windows环境相关的两个关键组件:winutils.exe和hadoop.dll,以及它们在Hadoop安装和运行过程中的作用。 Hadoop最初是为Linux操作系统设计的,但在Windows环境中运行Hadoop需要...
书中还涵盖了Hadoop生态系统中的其他关键组件,如YARN(Yet Another Resource Negotiator),它是Hadoop的资源管理系统,负责调度和管理集群中的计算资源。还有HBase,一个基于Hadoop的分布式NoSQL数据库,用于实时...
本文档为Apache官方Hadoop 1.1.0中文文档 文档目录: 1.概述 2.快速入门 3.集群搭建 4.HDFS构架设计 5.HDFS使用指南 6.HDFS权限指南 7.HDFS配额管理指南 8.命令手册 9.FS Shell使用指南 10.DistCp使用指南 ...
书中首先介绍了Hadoop的起源和基本概念,包括分布式计算的基本原理,以及Hadoop是如何解决大数据挑战的。Hadoop的核心组件包括HDFS(Hadoop分布式文件系统)和MapReduce,这两部分是Hadoop处理数据的基础。HDFS为大...
在IT行业中,Hadoop是一个广泛使用的开源框架,用于大数据处理和分布式存储。Hadoop-3.1.1是Hadoop的其中一个稳定版本,提供了一系列优化和改进,以提高性能和稳定性。本文将深入探讨Hadoop的bin目录以及其中的...
(这是Hadoop的基础) 2.必须ssh无密码登录 3./etc/host 里配置 master和slaves 4.修改/etc/hostname 主机名 5、/etc/profile的java和Hadoop配置路径 6.hadoop namenode format 7./hadoop/etc/slaves这个文件里必须...
在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分布式存储。Hadoop 2.7.3是这个框架的一个稳定版本,它包含了多个改进和优化,以提高性能和稳定性。在这个版本中,Winutils.exe和hadoop.dll是两...
在IT行业中,Hadoop是一个广泛使用的开源框架,主要用于大数据处理和分布式存储。Hadoop 2.7.3是Hadoop发展中的一个重要版本,它包含了众多的优化和改进,旨在提高性能、稳定性和易用性。在这个版本中,`hadoop.dll`...
在提供的信息中,我们关注的是"Hadoop的dll文件",这是一个动态链接库(DLL)文件,通常在Windows操作系统中使用,用于存储可由多个程序共享的功能和资源。Hadoop本身是基于Java的,因此在Windows环境下运行Hadoop...
在Hadoop生态系统中,`hadoop.dll`和`winutils.exe`是两个关键组件,尤其对于Windows用户来说,它们在本地开发和运行Hadoop相关应用时必不可少。`hadoop.dll`是一个动态链接库文件,主要用于在Windows环境中提供...
在Hadoop生态系统中,`hadoop.dll`和`winutils.exe`是两个关键组件,尤其对于Windows用户来说。本文将详细介绍这两个文件以及它们在Hadoop 2.6.0版本中的作用。 `hadoop.dll`是Hadoop在Windows环境下运行所必需的一...
本文将详细探讨与"Hadoop.dll"和"winutils.exe"相关的知识点,以及它们在Hadoop-2.7.1版本中的作用。 Hadoop.dll是Hadoop在Windows操作系统上的一个关键组件,它是Apache Hadoop对Windows平台的适配部分。由于...
3. **创建Hadoop项目**:在Eclipse的“文件”菜单中选择“新建” -> “其他”,在弹出的对话框中找到Hadoop相关选项,创建Hadoop MapReduce项目。 4. **编写MapReduce代码**:在创建的项目中,编写MapReduce程序,...
Hadoop是Apache软件基金会开发的一个开源分布式计算框架,它允许在大规模集群中高效处理和存储海量数据。这个压缩包文件包含的"hadop实用案例"很可能是为了帮助初学者理解和应用Hadoop技术。以下是关于Hadoop的一些...
Hadoop 3.1.3是Hadoop发展的一个重要里程碑,它在3.x系列中引入了多项改进和优化,提高了性能、稳定性和可扩展性。 1. **Hadoop架构**:Hadoop由两个主要部分组成:Hadoop Distributed File System (HDFS) 和 ...