我正在尝试设置一个完全分布式的 Hadoop/MapReduce 实例,其中每个节点将在某些输入上运行一系列 C++ Hadoop 流任务。但是,我不想将所有输入任务移动到 HDFS - 相反,我想看看是否有办法从每个节点的本地文件夹中读取输入数据。
有什么办法吗?
编辑: 我想运行的 hadoop 命令示例类似于:
hadoop jar $HADOOP_STREAM/hadoop-streaming-0.20.203.0.jar \
-mapper map_example \
-input file:///data/ \
-output /output/ \
-reducer reducer_example \
-file map_example \
-file reducer_example
在这种情况下,我的每个节点中存储的数据都在/data/目录中,我希望输出转到每个单独节点的/output/目录中。 map_example 和 reducer_example 文件在所有节点中都是本地可用的。
我如何能够实现一个 Hadoop 命令,如果它在主节点上运行,那么所有从节点基本上将在 x 个节点上运行相同的任务,从而在每个节点中产生一个本地输出文件(基于本地输入文件)?
谢谢
最佳答案
如前所述by this question ,这似乎是可能的。虽然我没有对此进行测试,但您似乎可以在 conf/core-site.xml
中设置 fs.default.name
来引用一个 文件
URL 而不是 HDFS URL。
一些引用:
关于hadoop - 完全分布式的 Hadoop/MapReduce 程序是否有任何方法可以让其各个节点读取本地输入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205841/