我很好奇您是否可以从本质上将 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 目录中找到该脚本。
如果你看一下这个脚本,你会发现它所做的是调用一些与启动数据节点、任务跟踪器和名称节点、作业跟踪器相对应的子脚本。
为了实现你所说的,我会这样做:
修改masters和slaves文件如下: 主文件应包含 machine1 的名称 slaves应该包含machine2的名字
运行 start-mapred.sh
修改masters和slaves文件如下: 主文件应包含 machine1 从属文件应包含 machine1
运行 start-dfs.sh
我必须告诉你,我从未尝试过这样的配置,所以我不确定这是否可行,但你可以试一试。无论如何,解决方案就是朝着这个方向!
关于hadoop - 如何将 Hadoop MapReduce 与 HDFS 分开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11371341/