【问题标题】:Is it necessary to execute a task on Hadoop DataNode?是否需要在 Hadoop DataNode 上执行任务?
【发布时间】:2014-07-27 21:00:38
【问题描述】:

这是 Hadoop 的工作方式吗?

  1. 客户端向NameNode提交一个MapReducer作业/程序。

  2. JobTracker(驻留在 NameNode 上)将任务分配给在单个工作机器(日期节点)上运行的从属任务跟踪器

    李>
  3. 每个 Tasktracker 负责执行和管理 Job Tracker 分配的各个任务

根据上述场景MapReducer 程序将在slave 节点上运行。是不是表示Job要消耗Slave计算引擎或处理能力?。

如果我想使用另一台机器(独立于 Hadoop 安装系统)执行 MapReduce 作业并使用 Hadoop Clusters 数据怎么办?

为什么要使用 Hadoop 集群? Hadoop 以一种非常有效的方式将大数据分发到它们的 DataNode(s)

新场景如下:

一个。服务器

b.客户

a.1 ) 使用 Hadoop 集群

分发无序数据

b.1) 客户端将执行(未提交到 NameNode)一个 MapReducer 作业,该作业正在从 Hadoop 集群 数据节点获取数据。如果可能,那么 JobTracker (NameNode) 和 Tasktracker (DataNode) 会发生什么?

我在这里忽略了 Hadoop 的主要部分,通过在客户端机器上执行作业,但这是我的项目要求。有什么建议吗?

【问题讨论】:

    标签: java hadoop mapreduce cluster-computing distributed-computing


    【解决方案1】:

    你在第一部分是对的。首先,具有 jobTracker 和 TaskTracker 的架构适用于 Hadoop 1。您应该查看最新的架构 Hadoop 2。

    您对 HDFS 和 MapReduce 感到困惑。

    • HDFS : Hadoop 的分布式文件系统。 NameNode 是集群的主节点。它包含元数据和文件的本地化。 DataNode 是集群的从属节点。它们在整个集群中存储数据。

    • MapReduce :所以“新”架构称为 Yarn 并像这样运行:您有一个主角色,即 RessourceManager 和一些从属角色,即节点管理器。当您向集群提交 MapReduce jar 时,RessourceManager 会将进程分配给 nodemanager。为简化起见,每个节点管理器都会对存储在 HDFS 中的文件的一部分执行程序。

    所以只需正确区分 HDFS 角色和 MapReduce 角色即可。

    【讨论】:

    • 那意味着提交的作业只能在从服务器上运行?并且提议的将不会在任何情况下工作?
    • master 驱动应用程序,他将任务发送给slave 并从它们那里获取resultats 以获得最终结果。所以实际上两次是强制性的。你的第二个问题是什么意思?你指的是你的b-1)?因为这种情况是不可能的,所以如果你使用Hadoop来执行MapReduce,你就得把job提交给master。
    【解决方案2】:

    Hadoop 是一个框架,用于存储、分析和处理以 tera 字节/peta 字节为单位的大数据。

    存储:

    HDFS 是 Hadoop 应用程序使用的主要分布式存储。 HDFS 集群主要由管理文件系统元数据的 NameNode 和存储实际数据的 DataNodes 组成。看看这个HDFS architecture

    处理

    Map reduce 是处理分布式数据的框架。 MRv2 的基本思想是将JobTracker 的两个主要功能,资源管理作业调度/监控 拆分为单独的守护进程。这个想法是拥有一个全局 ResourceManager (RM) 和每个应用程序 ApplicationMaster (AM)

    NodeManager 是每台机器的框架代理,负责容器、监控它们的资源使用情况(cpu、内存、磁盘、网络)并将其报告给 ResourceManager/Scheduler。看看这个Yarn architecture

    总结:

    名称节点+数据节点是存储的守护进程

    Resource Manager + Scheduler + Node Manager + Application Master是用于处理的守护进程。

    所有这些守护进程都可以在不同的节点上运行。如果 Data Node + Node Manager 对于数据节点中可用的数据在同一个节点上运行,则使用 Data Locality 可以提高性能。如果 Data Node 和 Node Manager 进程运行在不同的节点上,并且节点管理器对存储在不同 Data Node 中的数据进行操作,则数据需要通过网络传输,处理开销较小。

    【讨论】:

      【解决方案3】:

      是的,可以在作为数据节点运行的不同机器上运行任务跟踪器。每个任务跟踪器都需要知道承载数据块的数据节点在哪里。但为了最佳实践,数据节点本身被分配为任务跟踪器。

      【讨论】:

      • 有任何教程或链接吗?
      【解决方案4】:

      是的,可以,但没有直接配置。您需要更改启动脚本。与其使用 start-all 脚本启动所有恶魔,不如在单独的节点上启动 hdfs 恶魔,而不是 map reduce 恶魔节点。

      【讨论】:

        【解决方案5】:

        不,它不会那样工作。在开始一个严肃的项目之前,我会阅读几本 Hadoop 书籍。从 Michael White 的“Hadoop,权威指南”开始。

        【讨论】:

          猜你喜欢
          • 2013-11-23
          • 2013-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多