【问题标题】:Basics of Hadoop and MapReduce functioningHadoop 和 MapReduce 功能的基础知识
【发布时间】:2016-10-08 13:52:17
【问题描述】:

我刚刚开始学习 Hadoop 和 map-reduce 概念,并且在继续之前我想解决以下几个问题:

据我了解:

Hadoop 专门用于涉及大量数据的情况。当我们将文件存储在 HDFS 中时,会发生这种情况,文件被分割成不同的块(块大小通常为 64MB 或 128MB ......或为当前系统配置的任何内容)。现在,一旦大文件被拆分成不同的块,这些块就会存储在集群上。这是由 hadoop 环境在内部处理的。

问题的背景是:

假设系统中存储了多个如此巨大的文件。现在,这些不同文件的块可以存储在数据节点 A(有 3 个数据节点,A、B 和 C)。而且,同一个文件的多个块也可以存储在同一个数据节点A上。

场景1

如果客户端请求访问同一数据节点上的同一个文件的多个块,那会发生什么?是否会有多个映射器分配给这些不同的块,或者同一个映射器将处理多个块?

同一问题的另一部分是,客户端如何知道哪些块或让我们说处理需要文件的哪个部分? 由于客户端不知道文件是如何存储的,它如何向 NameNode 询问块位置等? 或者对于每个这样的处理,相应文件的所有块都被处理?我的意思是问,NameNode上存储了哪些元数据?

场景2

如果有两个不同的请求访问同一个数据节点上不同文件的块,那会发生什么?这种情况下,会有其他数据节点无事可做,单个数据节点会不会出现瓶颈?

【问题讨论】:

    标签: mapreduce hadoop2 hadoop-partitioning


    【解决方案1】:

    1) 映射器数 = 文件块数。也就是说,每个块都有单独的映射器。理想情况下,没有。集群中的节点数应该非常高,并且同一文件的两个块不会存储在同一台机器上。

    2) 每当客户端提交作业时,作业将在整个文件而不是特定块上执行。

    3) 当客户端提交作业或将文件存储在 HDFS 中时,其功能取决于框架。客户不应该知道 hadoop 功能,基本上不关他的事。客户应该只知道两件事 - 文件和作业(.jar)。

    4) Namenode 存储有关 HDFS 中存储的所有文件的所有元数据信息。它存储有关文件在多少块内被分发/划分的信息。文件的每个块都存储在多少个节点/机器上。 平均而言,为了存储每个块的元数据信息,namenode 需要 150 字节。

    5) 场景 2:Namenode 很好地处理了此类问题。 HDFS 的默认复制因子为 3,这意味着每个块将存储在 3 个不同的节点上。因此,通过这些其他节点,HDFS 管理负载平衡,但是是的,复制的主要目标是确保数据可用性。但考虑到读取文件内容的请求会非常少。 Hadoop 旨在处理数据,而不仅仅是读取内容。

    我希望这能解决你的一些疑问。

    【讨论】:

      【解决方案2】:

      如果出现需要访问多个块的客户端请求 同一个数据节点上的同一个文件,那么会发生什么?

      客户端不需要是映射器,在这个级别,我们正在处理 HDFS,数据节点将为任何请求它们的客户端提供相同的数据。

      是否会有多个映射器分配给这些不同的块,或者 > 同一个映射器将处理多个块?

      每个 map reduce 作业都有自己的映射器。涉及相同数据块的作业越多,意味着处理相同数据的映射器越多。

      同一个问题的另一部分是,客户如何知道什么 阻止或让我们说出需要文件的哪一部分 加工? 由于客户端不知道文件是如何存储的,它会如何询问 用于块位置等的 NameNode? 或者对于每个这样的处理,相应文件的所有块 被处理?我的意思是问,NameNode 上存储了哪些元数据?

      客户端知道由于 namenode 而需要哪些块。在文件访问开始时,客户端使用文件名转到名称节点,并返回一个块列表,其中数据存储在一起的数据节点保存它们。 namenode 将“目录信息”保存在数据所在的块列表中,所有这些信息都存储在 RAM 中,并在每次系统启动时更新。 datanode 还会向 namenode 发送心跳以及块分配信息。 每个数据节点都向每个名称节点报告。

      如果有两个不同的请求访问不同的块 同一个数据节点上的文件,那么会发生什么?在这种情况下, 会有其他数据节点没有工作要做并且不会有 单个数据节点的瓶颈?

      除非数据节点没有响应(失败)访问总是在同一个数据节点上。复制不是用来使事情快速运行,而是要确保不会丢失任何数据。 IE:当您写入 HDFS 时,您的数据将被转发到任何复制块,这使得写入速度非常慢。我们需要确保数据是安全的。

      【讨论】:

        猜你喜欢
        • 2018-05-25
        • 1970-01-01
        • 2015-01-19
        • 2014-10-14
        • 1970-01-01
        • 2010-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多