请原谅,如果这个问题已经提前提出,因为我找不到任何相关的问题。
1) 我想知道为什么在集群中的datanodes和namenodes之间保持相同的复制因子(或者任何配置)很重要?
2) 当我们上传任何文件到hdfs时,管理存储的不是namenode吗?
3) 仅仅在namenodes上维护配置就足够了吗?
4) 在namenode和datanodes之间配置不同意味着什么?
非常感谢您的帮助。谢谢!:)
请原谅,如果这个问题已经提前提出,因为我找不到任何相关的问题。
1) 我想知道为什么在集群中的datanodes和namenodes之间保持相同的复制因子(或者任何配置)很重要?
2) 当我们上传任何文件到hdfs时,管理存储的不是namenode吗?
3) 仅仅在namenodes上维护配置就足够了吗?
4) 在namenode和datanodes之间配置不同意味着什么?
非常感谢您的帮助。谢谢!:)
2条答案
按热度按时间q5iwbnjs1#
我将以复制为例来回答你的问题。
没什么要记住的-
数据总是驻留在datanode上,namenode从不处理数据或存储数据,它只保存有关数据的元数据。
复制因子是可配置的,您可以为每个文件副本更改它,例如file1的复制因子可能为2,而file2的复制因子可能为3,以类似的方式,也可以在执行时配置一些其他属性。
2) 当我们上传任何文件到hdfs时,管理存储的不是namenode吗?我不知道您所说的namenode管理存储的确切含义,下面是如何执行文件上传到hdfs的-
对于第3和第4个问题,重要的是要理解,任何分布式应用程序都需要每个节点都有一组可用的配置,以便能够彼此交互并按照预期执行指定的任务。如果每个节点都选择有自己的配置,协调的基础是什么?dn1的复制因子为5,而dn2的复制因子为2,数据实际如何复制?
update start hdfs-site.xml还包含许多其他配置规范,包括namenode、datanode和secondary namenode、一些特定于客户端和hdfs的设置,而不仅仅是复制因子。
现在想象一下有一个50节点的集群,您是想在每个节点上进行配置,还是只是复制一个预先配置的文件?
更新结束
如果将所有配置保留在一个位置,则每个节点每次必须执行某个操作时都需要连接到该共享资源以加载配置,这将增加延迟,除了一致性/同步性问题外,还可能导致任何配置属性发生更改。
希望这有帮助。
1tu0hz3e2#
hadoop是为处理大型数据集而设计的。在一台机器上存储大型数据集不是一个好主意,因为如果存储系统或硬盘崩溃,您可能会丢失所有数据。
在hadoop之前,人们使用传统的系统来存储大量的数据,但是传统的系统非常昂贵。在分析来自传统系统的大型数据集时也存在挑战,因为从传统系统读取数据是一个耗时的过程。考虑到这些,hadoop框架被设计出来了。
在hadoop框架中,当您加载大量数据时,它会将数据分成小块,称为块。这些块基本上用于将数据放置到分布式集群中的datanode中,也用于分析数据。
数据拆分背后的区域是并行处理和分布式存储(即:您可以将数据存储到多台计算机上,当您要分析数据时,可以通过并行分析来完成)。
现在来回答你的问题:
理由:hadoop是一个允许分布式存储和计算的框架。换句话说,这意味着您可以将数据存储到多台机器上。它具有复制功能,这意味着您要保留同一数据的多个副本(基于复制因子)。
ans1:hadoop被设计为在商品硬件上运行,而故障在商品硬件上很常见,因此假设您将数据存储在一台机器上,当您的机器崩溃时,您将丢失所有数据。但是在hadoop集群中,您可以从另一个复制中恢复数据(如果您的复制因子大于1),因为hadoop不会将数据的复制副本存储在原始复制所在的同一台机器上。这些事情是从hadoop本身处理的。
ans2:当您在hdfs上上传文件时,您的实际数据将转到datanode,namenode保留您的数据的元数据信息。namenode元数据信息conatains类似于文件的块名、块位置、文件名、目录位置。
ans3:您需要维护与hadoop集群相关的整个配置。维护一个配置文件是不够的,而且您还可能面临其他问题。
ans4:namenode配置属性与namenode功能相关,如namespace服务元数据位置等,处理所有客户端请求的rpc地址datanode配置属性与datanode执行的服务相关,如datanode的卷、可用磁盘空间、,用于数据传输的datanode服务器地址和端口
请检查此链接以了解有关不同配置属性的更多信息。
如果你想知道更多的事情,请对问题3和问题4做进一步的澄清。