gpt4 book ai didi

hadoop - 无法理解HDFS为何可以扩展到大量并发客户端的原因

转载 作者:行者123 更新时间:2023-12-02 21:17:53 26 4
gpt4 key购买 nike

最近我读了《 Hadoop:权威指南》这本书,遇到了一段我听不懂的段落,

“此设计的一个重要方面是,客户端直接与数据节点联系
检索数据,并由名称节点引导到每个块的最佳数据节点。这个
该设计允许HDFS扩展到大量并发客户端,因为数据
流量分布在群集中的所有数据节点上。”

我不明白为什么作者说“此设计允许HDFS扩展到大量并发客户端”,尽管他解释了“因为数据
流量分散在群集中的所有数据节点上”,但我听不懂他的话,有人可以用更简单的方式向我解释吗?

最佳答案

有一个名称节点,它知道给定文件的块位于哪个数据节点上。

想象一下,HDFS的文件大小为1024 MB,分成8个大小为128 MB的块。假设这些块方便地分布在8个不同的节点上。

当您的客户端需要下载文件时,它将询问namenode。如果namenode想要返回文件本身,则必须先从所有datanode下载文件,然后再将它们一个一个地返回给客户端。这是非常低效的,因为namenode必须独自服务所有客户端,并且浪费内存/ cpu来存储和服务中间数据。如果2个客户端同时请求相同的文件,则namenode必须为这些客户端总共提供16个块。

但是,如果您的客户端从每台计算机上直接下载了1个块,那将是有效的。这样,如果您有2个客户端请求同一个文件,则每个datanode只需服务2个块即可同时进行。

当您使用HDFS客户端时,例如您的hadoop安装随附的FS shell,并且可以通过hdfs dfs -<cmd>hadoop fs -<cmd>进行调用,默认情况下,客户端会在端口9000上询问namenode文件。 namenode返回不同​​数据节点上不同块的URI。客户端可以从单独的数据节点(通常在数据传输端口50010)上下载块。

如果使用FS Shell下载文件并监视客户端计算机上的网络,则会看到该文件直接从其他数据节点下载块。这是一个下载4块文件并使用tcptrack工具监视网络的示例。

enter image description here

这减轻了名称节点的负担,分散了工作量,还使客户端可以同时从多个数据节点下载块。您可以在屏幕截图中看到,其中2个连接处于 Activity 状态,而1个连接正在从3个不同的IP地址(数据节点)关闭。

当所有下载完成后,客户端将所有块连接起来以获得完整文件。

关于hadoop - 无法理解HDFS为何可以扩展到大量并发客户端的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38283515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com