我从本地文件系统给映射器输入了一个输入.它从eclipse成功运行,但是没有从集群运行,因为它无法找到本地输入路径说:输入路径不存在.请问任何人都可以帮助我如何给映射器提供一个本地文件路径,以便它可以在集群中运行,我可以在hdfs中获得输出
这是一个非常老的问题。最近面临同样的问题。我不知道这个解决方案对我有多正确。如果有任何缺点,请注意。这就是我所做的。
阅读从邮件归档解决方案,如果我修改我意识到fs.default.name来自hdfs://localhost:8020/于file:///它可以访问本地文件系统。但是,我不想在我所有的mapreduce工作中都这样做。因此,我core-site.xml在本地系统文件夹中创建了一个副本(与将MR jar提交到的文件夹相同hadoop jar)。
在我Driver 上课的时候MR我补充说,
Configuration conf = new Configuration();
conf.addResource(new Path("/my/local/system/path/to/core-site.xml"));
conf.addResource(new Path("/usr/lib/hadoop-0.20-mapreduce/conf/hdfs-site.xml"));
Run Code Online (Sandbox Code Playgroud)
在MR从本地系统获得输入和输出写入hdfs:
在集群中运行需要将数据加载到分布式存储(HDFS)中。首先使用将数据复制到 HDFS hadoop fs -copyFromLocal,然后再次尝试运行您的作业,为其提供 HDFS 中数据的路径