Hadoop 需要在数据节点上维护复制因子

Hadoop 需要在数据节点上维护复制因子,hadoop,configuration,hdfs,Hadoop,Configuration,Hdfs,请原谅,如果这个问题已经提前提出,因为我无法找到任何相关的问题 1) 我想知道为什么在集群中的datanodes和namenodes之间保持相同的复制因子(或任何配置)很重要 2) 当我们将任何文件上传到HDFS时,管理存储的不是namenode吗 3) 仅仅在namenodes上维护配置就足够了吗 4) 在namenode和datanodes之间使用不同的配置意味着什么 非常感谢您的帮助。谢谢!:) Hadoop设计用于处理大型数据集。在一台机器上存储大型数据集不是一个好主意,因为如果存储系统

请原谅,如果这个问题已经提前提出,因为我无法找到任何相关的问题

1) 我想知道为什么在集群中的datanodes和namenodes之间保持相同的复制因子(或任何配置)很重要

2) 当我们将任何文件上传到HDFS时,管理存储的不是namenode吗

3) 仅仅在namenodes上维护配置就足够了吗

4) 在namenode和datanodes之间使用不同的配置意味着什么


非常感谢您的帮助。谢谢!:)

Hadoop设计用于处理大型数据集。在一台机器上存储大型数据集不是一个好主意,因为如果存储系统或硬盘崩溃,您可能会丢失所有数据

在Hadoop之前,人们使用传统系统来存储大量数据,但传统系统的成本非常高。分析传统系统中的大型数据集时也存在挑战,因为从传统系统中读取数据是一个耗时的过程。考虑到这些,Hadoop框架被设计出来了

在hadoop框架中,当您加载大量数据时,它会将数据分成小块,称为块。这些块基本上用于将数据放置到分布式集群中的datanode中,并且在数据分析期间也使用它们

数据拆分背后的区域是并行处理和分布式存储(即:您可以将数据存储到多台机器上,当您想要分析数据时,可以通过并行分析进行)

现在来回答您的问题:

原因:Hadoop是一个允许分布式存储和计算的框架。换句话说,这意味着您可以将数据存储到多台机器上。它具有复制功能,这意味着您要保留同一数据的多个副本(基于复制因子)

Ans1:Hadoop设计用于在商品硬件上运行,商品硬件上常见故障,因此假设您将数据存储在一台机器上,当您的机器崩溃时,您将丢失所有数据。但是在hadoop集群中,您可以从另一个复制中恢复数据(如果复制因子大于1),因为hadoop不会将数据的复制副本存储在原始复制所在的同一台机器上。这些事情是由hadoop本身处理的

Ans2:当您在HDFS上上载文件时,您的实际数据将转到datanode,而NameNode保留数据的元数据信息。NameNode元数据信息类似于文件的块名、块位置、文件名、目录位置

Ans3:您需要维护与hadoop集群相关的整个配置。维护一个配置文件是不够的,而且您可能会面临其他问题

Ans4:NameNode配置属性与NameNode功能相关,如名称空间服务元数据位置等,处理所有客户端请求的RPC地址Datanode配置属性与Datanode执行的服务相关,如Datanode卷之间的存储平衡,可用磁盘空间、数据节点服务器地址和数据传输端口

请检查此项以了解有关不同配置属性的更多信息


如果您想了解更多信息,请对问题3和问题4进行更多澄清。

我将以复制为例尝试回答您的问题

需要记住的事情很少-

数据始终驻留在datanodes上,Namenode从不处理数据或存储数据,它只保留有关数据的元数据

复制因子是可配置的,您可以为每个文件副本更改它,例如file1的复制因子可能为2,而file2的复制因子可能为3,以类似的方式,也可以在执行时配置一些其他属性

2)当我们将任何文件上载到HDFS时,管理存储的不是namenode吗? 我不确定您所说的namenode管理存储的确切含义,下面是如何执行文件上传到hdfs的-

1) Client sends a request to Namenode for file upload to hdfs
2) Namenode based on the configuration(if not explicitly specified by the client application) calculates the number of blocks data will be broken into.
3) Namenode also decides which Datanodes will store the blocks, based on the replication factor specified in configuration(if not explicitly specified by the client application)
4) Namenode sends information calculated in step #2 and #3 to the client
5) Client application will break the file into blocks and write each block to 'a' Datanode say DN1.
6) Now DN1 will be responsible to replicate the received blocks to other  Datanodes as chosen by the Namenode in #3; It will initiate replication when Namenode instructs it.
对于问题#3和#4,重要的是要理解,任何分布式应用程序都需要一组每个节点可用的配置,以便能够相互交互,并按照预期执行指定任务如果每个节点都选择有自己的配置,那么协调的基础是什么?DN1的复制系数为5,而DN2的复制系数为2。数据实际如何复制

更新开始 hdfs-site.xml还包含许多其他配置规范,包括namenode、datanode和secondary namenode、一些特定于客户端和hdfs的设置,而不仅仅是复制因子

现在想象一下,拥有一个50节点的集群,您是想在每个节点上进行配置,还是简单地复制一个预先配置的文件

更新结束

如果将所有配置保留在一个位置,则每个节点都需要连接到该共享资源,以便在每次必须执行操作时加载配置,这将增加延迟,在任何配置属性发生更改时还会出现一致性/同步问题。


希望这有帮助。

在DataNodes上保持相同的配置是什么意思?您是指数据节点中的hdfs-site.xml文件吗?确切地说是@ManjunathBallurhello!谢谢你的详细解释!我的问题实际上是关于维护集群上所有节点的配置文件,例如hdfs-site.xml文件是c