【问题标题】:How HDFS works when running Hadoop on a single node cluster?在单节点集群上运行 Hadoop 时 HDFS 是如何工作的?
【发布时间】:2013-11-14 19:20:24
【问题描述】:

有很多内容解释了数据局部性以及 MapReduceHDFS 如何在多节点集群上工作。但我找不到关于单节点设置的太多信息。在过去的三个月里,我正在尝试Hadoop,我一直在阅读有关映射器和减速器数量的教程和线程,并编写自定义分区器来优化作业,但我一直在想,它是否适用于单节点集群?

与多节点集群相比,在单节点集群上运行MapReduce 作业有什么损失?

通过拆分输入数据提供的并行性在这种情况下是否仍然适用?

从单个节点HDFS读取输入和从本地文件系统读取有什么区别?

我认为由于我的经验不足,我无法清楚地回答这些问题,因此不胜感激!

提前致谢!

编辑:我了解 Hadoop 不适合单节点设置,因为 @TC1 列出了所有因素。那么,搭建一个伪分布式 Hadoop 环境有什么好处呢?

【问题讨论】:

    标签: hadoop mapreduce hdfs


    【解决方案1】:

    我一直在阅读有关映射器和缩减器数量的教程和线程,并编写自定义分区器以优化作业,但我一直在想,它是否适用于单节点集群?

    • 视情况而定。组合器在映射和归约之间运行,如果使用得当,即使在单个节点上,您也肯定会感受到影响。自定义分区器——可能没有,数据在减少之前会到达同一个磁盘。它们会影响逻辑,即你的 reducer 接收到什么数据,但可能不会影响性能

    与多节点集群相比,在单节点集群上运行 MapReduce 作业有什么损失?

    • 处理能力。如果您可以通过单节点设置来处理数据,那么您可能一开始就不应该使用 Hadoop 进行处理。

    通过拆分输入数据提供的并行性在这种情况下是否仍然适用?

    • 不,瓶颈通常是 I/O,即访问磁盘。在这种情况下,您仍在访问同一个磁盘,只是从更多线程中访问它。

    从单节点HDFS读取输入和从本地文件系统读取有什么区别?

    • 几乎不存在。 HDFS的思想是

      • 将文件存储在大的连续块中,以避免磁盘查找
      • 在节点之间复制这些块以提供弹性;

      在单个节点上运行时,这两者都没有实际意义。

    编辑:

    “单节点”和“伪分布式”的区别在于,在单模式下,所有 Hadoop 进程都在单个 JVM 上运行。不涉及网络通信,甚至不通过localhost 等。即使只是在小数据上测试作业,我建议使用伪分布式,因为这与集群基本相同。

    【讨论】:

    • 感谢您快速详细的回答!关于第三个问题,我想我不是很清楚,我在单节点集群上运行 MapReduce 得到的并行性是由于拆分数据和在不同线程中运行 mapper 任务?如果我的说法是真的,那么这种情况下的瓶颈是内存呢?
    • 我知道 Hadoop 不适合单节点设置,我只是想了解其中的区别,因为所有这些选项都是由我发现的几个发行版提供的,但理论上实际上只涉及多节点集群。我编辑了我的问题以包含伪分布式节点。
    • 好吧,并行性适用,因为每个映射器都独立运行,但除非作业受 CPU 限制,否则您只需从单个 HDD 读取多个映射器,而 HDD I/O 是最慢的部分整个设置。您的映射器无所事事地站在那里,因为他们没有得到足够的数据输入它们,仅仅是因为磁盘太慢了。 Hadoop 集群机器通常针对磁盘 I/O 进行了优化,并且在 RAID 0 中拥有大量磁盘,或者现在只有 SSD。
    • 非常感谢您的精彩回答!你解开了我所有的疑惑!
    猜你喜欢
    • 2013-04-24
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    相关资源
    最近更新 更多