最近一有时间就在补数据结构和学Hadoop上的知识,今天看了一下Hadoop中的HDFS(分布式文件系统)中是怎么将文件写入HDFS中的,在将文件写入HDFS的时候有一件事情也在发生,就是文件复本的写入,这就又要牵扯到一个东西,就是文件复本的布局,今天就来谈谈文件的复本在datanode上是怎么个布局法。
首先来说说文件复本是什么,其实从字面上也就知道了,其实他就是我们写入文件一模一样的东西,就是把文件复制了几份,在Hadoop中一般情况下复制数量是3份(这3个复本的datanode分布好后会构成一个管线)。为什么要复制了?就是为了防止数据丢失,当 一个datanode上的数据丢失或者损坏后,其他的节点上还有复本,就是为了这样才有了复本的出现。
我们知道,namenode是领导,它负责统筹规划,因此数据块和 它们的复本分配到哪个datanode上也要听从他的指挥。它也不是随便乱分配的,它需要在”可靠性“,”写入宽带 “和”读取宽带“之间来权衡好。如果把所有的复本都写在一个datanode上的话,它的”写入宽带“最小,这个想也想得出,它不用把数据传出去嘛,它的复制管线都是在单一的节点上运行,但是这样如果该节点发生了故障,块中的数据就会丢失,也就是它不提供真实的”冗余“, 还有虽然它的”写入宽带很小“但是在同一机架上”读取宽带“很高,另一方面,把他们放在不同的数据中心,那样可以最大限度的提高冗余,但是宽带的损耗非常大。
hadoop的默认布局策略是在运行客户端的节点上放第1个复本(如果客户端运行在集群之外,就随机的选择一个节点,但是系统会避免挑选那些存储太满或太忙的节点)。第2个复本放在与第1个不同且是随机选择的另外的机架中的节点上。第3个复本与第2个复本放在同一个机架上面,且是随机选择的一个节点,其他的复本放在集群中随机选择的节点上面,但是系统会尽量避免在相同的机架上面放太多的复本。
一旦选定了复本的放置的位置,就会根据网络拓扑创建一个管线,如下图为一个典型的复本管线:
总的来说,这一方法不仅提供了很好的稳定性,数据不容易丢失(数据块存储在两个机架中)同时实现了很好的负载均衡,包括写入宽带(写入操作只要遍历一个交换机),读取性能(可以从两个机架中进行选择读取)和集群中块的均匀分布(客户端只在本地机架写入一个块)。
PS:以上的内容参考自《Hadoop 权威指南》。
相关推荐
无论采用哪种配置方法,都需要对Hadoop集群的core-site.xml文件进行相应的配置,包括设置文件系统默认名称为viewfs:///,以及配置BeeGFS抽象文件系统的实现类。此外,还需要为Hadoop集群中的每个目录创建挂载表条目...
1. **hdfs-default.xml**:这是Hadoop分布式文件系统的默认配置文件。它包含了HDFS的各种配置参数,如命名节点(NameNode)和数据节点(DataNode)的设置、副本数量、块大小、安全模式、文件权限等。例如,`dfs....
(1)局域网的Hadoop分布式文件系统对象图: 本机 socket big file small files (2)界面运行情况: 1·点击file进行文件选择, 选择需要上传的文件, 如下 2·点击upload, 将所选择的文件上传, 上传...
在Hadoop的分布式文件系统(HDFS)中,文件的读写是整个大数据处理的核心操作。HDFS的设计目标是提供高容错性、高吞吐量的数据访问,以支持大规模数据处理的应用。以下是对Hadoop文件读写及相关属性的详细说明。 ##...
本文主要讨论了在 Java Web 程序中上传文件到 Hadoop HDFS 文件系统中失败的原因分析及解决方法。通过对问题的分析和解决,可以总结出以下知识点: 1. Hadoop 文件上传失败的原因分析: 在上传文件到 Hadoop HDFS ...
《深入剖析Hadoop文件系统源代码》 Hadoop文件系统(HDFS)是Apache Hadoop项目的核心组件之一,它是一个分布式文件系统,旨在处理和存储大量数据。由鲍亮教授提供的西电版Hadoop文件系统源代码,为学习和理解HDFS...
HDFS是分布式文件系统,能存储海量数据,并保证数据的高可用性和容错性;MapReduce则是一种并行计算模型,用于处理和生成大数据集。 在这个项目中,使用了`pyhdfs`这个Python第三方库来与Hadoop HDFS进行交互。`...
9. 文件系统命令:Hadoop 提供了多种文件系统命令,如 hadoop fs -ls、hadoop fs -put 等,用于管理 HDFS 中的文件。 10. BP(Block Pool):在 HDFS 中,每个数据块都有一个唯一的 BP 名称,该名称是在 HDFS 格式...
### Hadoop分布式文件系统使用指南 #### Hadoop分布式文件系统(HDFS)概述 Hadoop分布式文件系统(HDFS)是Hadoop项目的核心组件之一,主要用于存储和管理大规模数据集。它提供了一种高容错性的文件存储方式,...
但我们可以从Hadoop文件系统(HDFS)的角度来探讨Hadoop如何处理文件。 【标签】:“tt”同样没有提供具体的信息,这里我们将基于Hadoop的相关概念进行阐述。 **Hadoop文件系统(HDFS):** HDFS是Hadoop的核心...
Hadoop 大数据开发实战教学教案—03HDFS 分布式文件系统.pdf 本节课程主要介绍 HDFS 的概念、HDFS 存储架构和数据读写流程、HDFS 的 Shell 命令、Java 程序操作 HDFS、Hadoop 序列化、Hadoop 小文件处理、通信机制 ...
1. **文件系统**:定义了Hadoop默认的文件系统(如hdfs://localhost:9000),以及文件操作的缓冲区大小、文件权限等。 2. **日志管理**:配置日志级别、日志路径和日志聚合策略。 3. **命名空间**:包括Hadoop元数据...
- 文件中包含的设置有:默认的文件系统(如HDFS或本地文件系统)、I/O缓冲区大小、命名空间的元数据存储方式、文件复制的副本数量等。 - 用户可以通过修改这些默认值来优化Hadoop集群的性能,例如调整IO缓冲区大小...
HDFS是一个分布式文件系统,能够跨多台计算机(节点)存储和处理大型数据集。它将大文件分割成块,并将这些块复制到多个节点上,以确保容错性和高可用性。MapReduce则是一种编程模型,用于大规模数据集的并行处理,...
教程中涉及的Hadoop文件系统的操作,是Hadoop技术中最为核心和基础的部分之一。 Hadoop文件系统,通常指的是Hadoop分布式文件系统(HDFS),它是为了存储大量数据而设计的,可以在廉价硬件上实现高吞吐量的数据访问...
其中,重要的配置包括`fs.defaultFS`,它是Hadoop集群的默认文件系统,通常指向HDFS;`io.file.buffer.size`控制读写操作的缓冲区大小;`fs.trash.interval`设定垃圾回收的时间间隔。 接下来,`hdfs-default.xml`...
### hadoop分布式文件系统搭建 #### 一、配置hadoop分布式文件系统环境搭建 ##### 1. 准备 在开始搭建Hadoop分布式文件系统之前,首先需要确保环境准备妥当。具体步骤包括: - **检查端口占用情况**:通过`...