2013-02-13 49 views
0

我的hadoop程序最初是在本地模式下启动的,现在我的目的已经成为完全分布式模式。为此目的,有必要提供从群集的所有计算机访问在reducer和mapper函数中执行读取的文件,因此我提出了一个关于http://answers.mapr.com/questions/4444/syntax-of-option-files-in-hadoop-script的问题(也因为它不知道计算机是什么执行映射函数(从程序的逻辑映射器将只有一个,并且程序将仅使用一个映射器启动),则还需要在到达映射函数输入的文件上提供对所有群集的访问) 。在这方面,我有一个问题:是否可以直接使用hdfs文件:即在HDFS的文件系统中预先复制Linux文件系统中的文件(因此,正如我所假设的,这些文件在所有计算机上都可用如果不是这样,请更正),然后使用HDFS Java API读取这些文件,在群集的计算机上执行的reducer和mapper函数中?从群集的所有计算机访问HDFS文件

如果对此问题的反应积极,请从HDFS文件系统中的Linux文件系统拷贝一个实例,并使用HDFS Java API将这些文件在Java中读取到程序中,并将其内容记录在Java的字符串。

回答

0

将所有输入文件复制到主节点节点(这可以使用scp完成)。 然后登录到您的节点(ssh),并执行类似下面从本地文件系统中的文件复制到HDFS:

hadoop fs -put $localfilelocation $destination

现在,在你的Hadoop作业,您可以使用输入要hdfs:///$destination。无需使用任何额外的API从HDFS读取。

如果您确实想从HDFS读取文件并将其用作除输入文件以外的其他信息,则请参阅this