我在伪分布式模式下使用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);
然后我可以获得DistributedFileSystem
fs。
我的默认文件系统是不是在core-site.xml中设置为HDFS?如果没有,我应该如何设置?
答案 0 :(得分:4)
Eclipse环境不知道Hadoop安装目录下的conf目录在哪里找到core-default.xml和core-site.xml,除非这些文件被添加到Eclipse类路径中以便先加载。
由于这些未添加到eclipse类路径中,因此将从jar文件hadoop - * - core.jar加载默认的core-site.xml(例如:对于版本0.20的hadoop-0.20.2-core.jar )它将本地系统作为默认文件系统,因此您看到LocalFileSystem
对象而不是DistributedFileSystem
。
因此,要将<HADOOP_INSTALL>/conf
目录添加到eclipse项目类路径,请转到项目属性(项目 - &gt;属性) - &gt; Java构建路径 - &gt; “库”选项卡 - &gt;添加外部类文件夹 - &gt;从<HADOOP_INSTALL>
以上内容应将您的`/core-site.xml'添加到您的eclipse类路径中,所有设置都应覆盖默认设置。