hadoop - 完全分布式的 Hadoop/MapReduce 程序是否有任何方法可以让其各个节点读取本地输入文件?

标签 hadoop mapreduce hadoop-streaming

我正在尝试设置一个完全分布式的 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/

相关文章:

hadoop - pig @hadoop : processing local files without hdfs with multiple cores

oracle - 是否可以使用 sqoop 导入表并添加额外的时间戳列?

java - nodemanager连接到resourcemanager,但datanode没有连接到namenode

hadoop - 将行转换为 pig 中的列

hadoop - 将数据插入 Hive 分区表时失败 : SemanticException org. apache.hadoop.hive.ql.metadata.HiveException

amazon-ec2 - EMR - 利用竞价实例

hadoop - 使用 hadoop tarball(CDH4.3) 安装 MR1

hadoop - 用于 Hadoop Streaming 的 Go 客户端

hadoop - 重复的任务被杀死

hadoop - 获取仅包含一个键值的输出文件?