一个hadoop MR作业的多个HDFS源

时间:2012-02-17 17:01:45

标签: hadoop mapreduce

我设置了两个HDFS群集,C1和C2。显然两者都存储了大量数据,但是对于这个特定的工作,其中一个数据具有大部分必要数据(假设C1有90%),其余数据都在C2上。我想编写一个可以在C1上运行的M / R作业,但仍然可以访问C2上其他10%的数据。 Hadoop是否内置了这种功能?有人遇到过这种情况吗?

我有一些我知道可行的想法:

1)我可以明确地断开必要的数据并只运行C1,但我希望有一个更清晰,更灵活的解决方案。

2)我已经看过一些关于HDFSProxy的内容,看起来它似乎可以解决这个问题。知道我可以期待多少性能影响吗?

无论哪种方式,我都不得不付出必须从C2向C1提取所需数据的代价,以便C1中的计算节点可以处理数据。

我对Hadoop很新,所以任何指针都会非常感激。谢谢!

1 个答案:

答案 0 :(得分:3)

我会继续回答我自己的问题,以防万一其他人对此感到好奇。

事实证明,Hadoop足以实现此问题的解决方案。如果输入列为来自多个名称节点(即hdfs:// namenode1:12345 / file1和hdfs:// namenode2:12345 / files2),则Hadoop会自动将文件从第二个集群复制到第一个集群并执行。无论在何处运行这些命令,都将指示作业将在哪个集群上执行。

显然这并不理想,因为一小部分工作可以保证将数据带到计算中,而不是将计算数据转移到数据中,但它会起作用。