【问题标题】:Is NameNode the bottleneck of HDFS throughput?NameNode 是 HDFS 吞吐量的瓶颈吗?
【发布时间】:2020-07-26 23:19:03
【问题描述】:

在 HDFS 中,每次读取和写入都必须通过 NameNode 来获取有关数据存储位置的 metaDate。这样的系统如何扩展? NameNode会不会成为整个系统的瓶颈?

【问题讨论】:

    标签: hdfs


    【解决方案1】:

    Namenode 确实会成为瓶颈,但并不像看起来那么容易。 Namenode持有元数据,一旦客户端说读取从Namenode获取块位置,它不需要去namenode读取,它会直接连接到datanode读取,无需NN干预。 至于写入,客户端确实先去 Namenode 在 Namespace 树中创建一个条目,然后获取数据节点写入数据的位置,一旦它有了数据节点位置,它将只与数据节点对话,它会返回仅当它需要另一个块时才到 Namenode。因此,在大多数情况下,客户端只会使用 datanodes,它会在非常短的时间内转到 Namenode。

    Namenode 上的读取调用(比如获取块位置)都是并行处理的,只有写入调用没有并行处理(例如获取要写入的新块)。在正常制作中,读取负载通常在 60:40 左右,因此可以很好地扩展和运行。

    在最近添加的Namenode中多了一类叫做Observer Namenode,可以服务所有的Read请求,集群中可以有N个Observer Namenode...

    如果你想了解 Observer Namenodes,可以在这里阅读: https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/ObserverNameNode.html

    【讨论】:

    • 所以NameNode是一个瓶颈,只是不容易达到。我想知道如果写操作率超过HDFS可以使用的阈值吗?
    • 是的,它什么时候会达到瓶颈,这取决于它运行的机器、内存和 vCore 等。没有具体的值或具体的数学公式可以说明,这么多写/ NN 的读取调用和资源将使其成为瓶颈。 Namenode 响应时间会随着负载的增加而增加,但它不会死掉。瓶颈不仅仅出现在负载的情况下,因为所有的元数据都在 Namenode 的堆内存中,如果文件太多,一般情况下超过 500-600M 在这种情况下,namenode 也会开始出现问题。
    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    相关资源
    最近更新 更多