来自不同服务器的Hadoop输入



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

当你说Hadoop时,没有什么能比得上自己的HDFS。HDFS是一个分布式FS,分布在Hadoop集群中的所有机器上,用作单个FS。

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

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

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

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

最新更新