0

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

如果对这个问题的回答是肯定的,请给出一个从 Linux 文件系统复制到 HDFS 文件系统中的示例,并通过 HDFS Java API 将这些文件用 java 读取到程序中,并将其内容记录在 java-string 中。

4

1 回答 1

0

将所有输入文件复制到节点(可以使用 来完成scp)。然后登录到您的节点 ( ssh) 并执行以下操作以将文件从本地文件系统复制到 hdfs:

hadoop fs -put $localfilelocation $destination

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

如果您真的想从 HDFS 读取文件并将其用作输入文件以外的其他信息,请参阅.

于 2013-02-13T19:44:41.067 回答