需要在datanode上维护复制因子

时间:2015-12-10 07:40:46

标签: hadoop configuration hdfs

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

1)我想知道为什么在群集中的数据节点和名称节点上保持相同的复制因子(或任何配置)很重要?

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

3)仅仅在名称节点上维护配置是否足够?

4)在namenode和datanodes之间配置有何不同?

非常感谢任何帮助。谢谢! :)

2 个答案:

答案 0 :(得分:1)

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的卷,可用磁盘空间,DataNode服务器地址和数据传输端口

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

如果您想要了解更多您想了解的内容,请提供有关问题3和4的更多说明。

答案 1 :(得分:1)

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

要记住的事情很少 -

数据始终驻留在数据节点上,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节点集群,你想在每个节点上配置还是只是复制一个预配置的文件?

更新结束

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

希望这有帮助。