0

在 Hadoop 中编程是否必须使用 MapReduce 结构,或者我们也可以运行任何类型的简单 JAR?

我正在尝试从 Java 代码访问 HDFS 中的文件。我试过了:

static{
    URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());    
}

in = new URL("hdfs://cluster-server:54310/home/hduser/sort/inputs").openStream();
IOUtils.copyBytes(in, System.out, 2, false);

但是当我从 Eclipse 运行这段代码时,它会导致错误:

本地异常调用 cluster-server/172.16.18.75:54310 失败:null

但是我可以通过命令行界面看到文件存在于Hadoop HDFS集群中。

请帮我。提前致谢。

4

3 回答 3

2

在当前版本的 Hadoop 中 - MapReduce 仅支持范式。在下一个版本中,它将成为libraray,并且将支持其他并行处理范例。
今天你可以通过 hadoop 命令运行任何 jar - 但它只会在本地运行你的 main。
是的,您可以在不连接 MapReduce 的情况下访问 HDFS,但您应该通过 Hadoop 类来访问 - 而不是一般的 java IO。

于 2012-04-17T06:08:50.950 回答
0

我猜 OP 只是想从 Java 程序以编程方式访问 HDFS。如果是这样的话,我发现这个链接非常有用:- http://blog.rajeevsharma.in/2009/06/using-hdfs-in-java-0200.html

于 2013-05-23T19:41:31.600 回答
0

如果你想访问 HDFS 中的文件,Hadoop: The Definitive Guide中的第 3 章是一个好的开始。使用 URL 打开输入流可能不适用于 HDFS。

于 2014-01-02T02:23:21.397 回答