6

我在伪分布式模式下使用 Hadoop 1.0.3。我的 conf/core-site.xml 设置如下:

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
    <name>mapred.child.tmp</name>
    <value>/home/administrator/hadoop/temp</value>
    </property>
</configuration>

所以我相信我的默认文件系统设置为 HDFS。但是,当我运行以下代码时:

Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);

我认为 fs 应该是一个DistributedFileSystem实例。然而,事实证明它是LocalFileSystem实例。

但是,如果我运行以下代码:

Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://localhost:9000");
FileSystem fs = FileSystem.get(conf);

然后我可以得到一个DistributedFileSystemfs。

我的默认文件系统不是在 core-site.xml 中设置为 HDFS 吗?如果没有,我应该如何设置?

4

1 回答 1

6

Eclipse环境不知道Hadoop安装目录下的conf目录在哪里找到core-default.xml和core-site.xml,除非这些文件被添加到Eclipse类路径中首先加载。

由于这些没有添加到 eclipse 类路径中,默认的 core-site.xml 将从 jar 文件 hadoop-*-core.jar (例如:hadoop-0.20.2-core.jar 用于版本 0.20)加载本地系统作为默认文件系统,因此您看到的是LocalFileSystemobject 而不是 DistributedFileSystem.

因此,要将<HADOOP_INSTALL>/conf目录添加到 Eclipse 项目类路径,请转到项目属性(项目 -> 属性) -> Java 构建路径 -> 库选项卡 -> 添加外部类文件夹 -> 从中选择 conf 目录<HADOOP_INSTALL>

以上应该将您的“/core-site.xml”添加到您的 Eclipse 类路径中,并且您的所有设置都应该覆盖默认设置。

于 2013-05-23T17:37:39.553 回答