量了一下4个datanode时候HDFS写操作时每个node分配block的情况,每个datanode是4张disk,写了个脚本处理log后发现平均每个node分配的block数量占写的block总数量的25%,而每个node上的每个disk又分到了25%的block数目。因此,HDFS的写分配算法相对在我这个cluster上还是均匀的。
具体看了一下code,选datanode的算法是chooseTarget,这个是大家熟知的了,比如replication是3的情况,就是选一个local,然后同一个rack的另外一个node,然后是另外一个rack的一个node,这些选择是随机的了。
选disk(或者说选block file的目录),则是round-robin的了。
因此有个疑问就是现在这种算法对现在这样每个node的每个disk的io能力是一样的效果会比较好,那如果不一样呢,比如一些node的某些disk用SD,相对IO处理会快,那么理想中就应该给该node或者该SD分配较多的block写操作,现在的算法就太一视同仁了,能力强的得不到利用,能力差的分配到一样多的任务。
但不可否认,现在的算法是最简洁的,Simple is beauty。如果要namenode选择datanode的时候知晓备选的datanode上当前写任务是否繁重的情况也比较难吧。
当然,也会有人说,如果某datanode能力强,按照你理想中的应该分配较多的写,那么这个device不就很快歇菜了……我也没办法,只能说更看重什么吧。
分享到:
相关推荐
HDFS 可靠性策略 HDFS(Hadoop Distributed File System)作为一种分布式文件系统,其高可靠性主要是由多种策略及机制共同作用实现的。下面我们来分析这些策略和机制,对分布式文件系统的高可靠性进行详细的解释。 ...
在大数据处理场景中,为了优化性能和降低成本,HDFS支持了多种存储策略,包括“冷热温”存储策略以及内存存储策略——LAZY PERSIST。 一、HDFS内存存储策略支持 1. LAZY PERSIST介绍 LAZY PERSIST是一种内存存储...
HDFS 基本操作详解 HDFS(Hadoop Distributed File System)是 Hadoop 生态系统中的一个核心组件,负责存储和管理大规模数据。作为一个分布式文件系统,HDFS 提供了高可靠性、可扩展性和高性能的存储解决方案。本文...
副本管理策略是HDFS中极为重要的一部分,它涉及到如何创建、存储、复制以及删除数据副本。 数据副本技术的优势主要体现在以下三个方面: 1. 数据的可用性和可靠性:在分布式系统中,数据副本能够分散存储在不同的...
### HDFS文件读写操作详解 #### 一、HDFS架构概述 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目之一,旨在提供高吞吐量的数据访问,适用于大规模数据集上的应用。HDFS采用了Master/Slave的...
5. **HDFS写性能**:写操作首先将数据发送到NameNode,然后NameNode指示一个DataNode接收数据,该DataNode再将数据转发给其他副本。写操作的性能受到NameNode的处理能力、网络延迟和DataNode之间的数据同步速率的...
### Hadoop学习总结之二:深入理解HDFS读写过程 ...通过对HDFS读取机制的深入理解,不仅可以帮助我们更好地掌握Hadoop生态系统的核心技术,还能在实际应用中优化数据访问策略,提升大数据处理的性能与可靠性。
本篇文章将详细讲解Hadoop HDFS文件操作、MapReduce(MR)示例以及如何实现TopN问题。 首先,HDFS是分布式文件系统,设计用于跨大量廉价硬件节点存储和处理大规模数据。它具有高容错性,能够自动数据复制,确保数据...
在Hadoop分布式文件系统(HDFS)中,文件的读写操作是整个系统的核心功能。本文将详细解析HDFS的读取和写入过程,基于标题"《Hadoop学习总结之二:HDFS读写过程解析》"和描述中提到的代码分析。 1. **文件的打开** ...
4. **读写流程**:读操作通常从最近或最空闲的DataNode开始,写操作则需要先与NameNode通信确定数据块的位置,然后将数据写入各个DataNode。 Hadoop和HDFS的可视化操作研究对于推动大数据处理的普及至关重要,它...
在HDFS中,为了简化文件管理操作,可以定义一系列基础的API接口。例如,以下是一个示例性的`HdfsFileService`接口: ```java public interface HdfsFileService { void mkdirs(String path) throws Exception; // ...
标题“C操作HDFS”指的是使用C语言编程接口与Hadoop分布式文件系统(HDFS)进行交互。HDFS是Apache Hadoop项目的核心组件之一,它为大规模数据存储提供了可扩展的、可靠的分布式文件系统。在C语言环境中操作HDFS,...
这些是使用Java操作HDFS的基础,但实际应用可能更复杂,包括错误处理、性能优化、数据分片策略等。在大数据项目中,理解如何有效地利用HDFS和MapReduce是至关重要的,它们能帮助你处理PB级别的数据,实现高效的存储...
Hadoop分布式文件系统(HDFS)是Hadoop...以上就是HDFS的原理与操作相关的知识点,从其设计思想到体系结构再到具体的操作流程和可靠性策略都有所介绍。希望这些信息能帮助你深入理解HDFS的工作原理和如何有效操作HDFS。
通过阅读《HDFS——Hadoop分布式文件系统深度实践》,读者不仅可以掌握HDFS的基本操作,还能深入了解其内部机制,从而更好地利用HDFS来构建和管理自己的大数据存储系统。书中的实例和实践指导对于提升Hadoop开发者和...
本文将详细探讨HDFS的相关知识点,包括其设计需求、扩展性、块的概念、中心节点的作用、局限性、节点功能、冗余保护策略、数据复制策略、错误检测与恢复机制,以及读写文件过程。 一、分布式系统设计的需求 分布式...
`core-site.xml`文件用于定义HDFS的基本属性,包括文件系统的默认URI、垃圾回收策略以及安全验证方式等。 - **fs.defaultFS**: 设置HDFS的NameNode的地址,默认格式为`hdfs://hostname:port`。例如:`<value>hdfs:/...