【问题标题】:Hadoop input from different servers来自不同服务器的 Hadoop 输入
【发布时间】:2013-07-10 02:29:34
【问题描述】:

我有一个主节点和两个数据节点,它们位于不同的服务器中。对于这两个数据节点,每个节点在自己的 HDFS 中都有一个日志文件。现在我想运行 Hadoop 在主节点上进行映射/减少,输入应该是来自两个数据节点的 HDFS 的两个日志文件。我可以这样做吗?如果可以,我该如何设置输入路径? (例如 hadoop jar wordcount.jar datanode1/input/logfile1 datanode2/input/logfile2 输出......像这样?)是否有可能来自不同服务器中不同datanode的HDFS的输入?

【问题讨论】:

    标签: java hadoop mapreduce


    【解决方案1】:

    当您说 Hadoop 时,没有什么能比得上 它自己的 HDFS。 HDFS 是一个分布式 FS,并且分布在作为单个 FS 运行的 Hadoop 集群中的所有机器上。

    您只需将这两个文件放在一个 HDFS 目录中,并将该目录作为 MapReduce 作业的输入。

    FileInputFormat.addInputPath(job, new Path("/path/to/the/input/directory"));
    

    MapReduce 作业也是如此。尽管您将作业提交给 JobTracker,但该作业实际上以分布式方式在集群的所有节点上运行,其中存在要处理的数据。

    哦,还有一件事……HDFS 中的文件不会作为一个整体存储在任何特定机器上。它被切成 64MB(可配置)的小,这些块随机存储在集群中的不同机器上。

    【讨论】:

    • 听起来不错。谢谢你。还有一件事,如果我想用我自己的 map/reduce 方法运行 hadoop,就像这样:hadoop jar xxx.jar input output ...对吗?
    • 你是对的。如果您认为自己的问题得到了解答,请随时接受答案,以便其他人可以从中受益。
    • 您好:关于Hadoop,我也有以下问题:
    • 1:什么是Hadoop客户端?
    • 2:HDFS 长什么样?例如我有 2 个数据节点和复制 2。当我执行将文件存储到 HDFS 中的“hadoop dfs -put test.log 输入”时,该文件如何存储在 Hadoop 集群中?它是否遍布整个集群并存储在两个数据节点服务器上?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2022-01-09
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2014-08-27
    • 2022-06-24
    相关资源
    最近更新 更多