hadoop - 如何将 Hadoop MapReduce 与 HDFS 分开?

标签 hadoop hdfs

我很好奇您是否可以从本质上将 HDFS 文件系统与 MapReduce 框架分开。我知道 Hadoop 的要点是在有问题数据的机器上运行 maps 和 reduce,但我想知道你是否可以只更改 *.xml 文件来更改 jobtracker、namenode 和数据节点正在运行。

目前,我的配置是 2 个 VM 设置:一个(主)带有 Namenode、Datanode、JobTracker、Tasktracker(和 SecondaryNameNode),另一个(从属)带有 DataNode、Tasktraker。本质上,我想要改变的是让主节点具有 NameNode DataNode(s)、JobTracker,并让从节点仅具有 TaskTracker 来执行计算(以及稍后,拥有更多仅具有 TaskTracker 的从节点;每个节点一个) .瓶颈将是两个 VM 之间用于计算 map 和 reduce 的数据传输,但由于此阶段的数据非常小,我主要不关心它。我只想知道这种配置是否可行,以及如何实现。有什么建议吗?

谢谢!

最佳答案

您无需在配置文件中指定此类选项。 你要做的是注意你在每台机器上启动什么样的守护进程(你称它们为 VM,但我认为你指的是机器)。

我想您通常使用 start-all.sh 脚本启动所有内容,您可以在 hadoop 安装目录下的 bin 目录中找到该脚本。

如果你看一下这个脚本,你会发现它所做的是调用一些与启动数据节点、任务跟踪器和名称节点、作业跟踪器相对应的子脚本。

为了实现你所说的,我会这样做:

  1. 修改masters和slaves文件如下: 主文件应包含 machine1 的名称 slaves应该包含machine2的名字

  2. 运行 start-mapred.sh

  3. 修改masters和slaves文件如下: 主文件应包含 machine1 从属文件应包含 machine1

  4. 运行 start-dfs.sh

我必须告诉你,我从未尝试过这样的配置,所以我不确定这是否可行,但你可以试一试。无论如何,解决方案就是朝着这个方向!

关于hadoop - 如何将 Hadoop MapReduce 与 HDFS 分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371341/

相关文章:

apache - 无法通过Hive在Tez上执行MapReduce作业

hadoop - Hadoop或Spark读取tar.bzip2读取

java - 使用 SPARK 从 zip 到 seq

hadoop - YARN 提示 java.net.NoRouteToHostException : No route to host (Host unreachable)

hadoop - 完成设置后未在单节点 hadoop 集群中运行 Wordcount 作业

java - 次要名称节点未启动

hadoop - Ambari-将多个文件导入到Hive

hadoop - 为什么 HDFS ACL max_entries 设置为 32?

hadoop - 小文件和 HDFS block

hadoop - 使用 copyFromLocal 开关将数据移动到 hdfs