Hadoop配置文件加载

1. hadoop使用org.apache.hadoop.conf.Configuration类来加载配置文件

2. 一般我们在写客户端程序等需要连接hadoop集群时,需要自己准备好core-site.xml和hdfs-site.xml文件,然后使用Configuration类的addResource(xxx)方法来加载以上两个配置文件,下面就来解析下,假如自己不主动加载以上两个配置文件时,Configuration默认加载了什么。

3. 在使用Configuration conf = new Configuration()来创建conf对象时默认加载了哪些配置项呢?

看Configuration类的源码可以看到,默认是加载了core-default.xml和core-site.xml配置文件的,注意配置文件路径需要在CLASSPATH中(即classpath中指定了目录路径下有上面文件才可以加载到,例如: -classpath /etc/hadoop/conf),源码如下:

public class Configuration implements Iterable>,
                                      Writable {
    ......
    static {
    // Add default resources
    addDefaultResource("core-default.xml");
    addDefaultResource("core-site.xml");
    ......
  }

注意此时是没有加载到hdfs-site.xml文件的

4. 在使用FileSystem fs = FileSystem.get(conf)时,为什么又加载到了hdfs-site.xml(hdfs-site.xml文件必须在CLASSPATH中,同上)文件呢?

可以查看DistributedFileSystem类的源码,看到HdfsConfiguration类加载了hdfs-default.xml和hdfs-site.xml文件:

public class DistributedFileSystem extends FileSystem
    implements KeyProviderTokenIssuer {
    ......
    static{
    HdfsConfiguration.init();
  }

public class HdfsConfiguration extends Configuration {
  static {
    addDeprecatedKeys();

    // adds the default resources
    Configuration.addDefaultResource("hdfs-default.xml");
    Configuration.addDefaultResource("hdfs-site.xml");
  }

你可能感兴趣的:(hadoop,hadoop,大数据,hdfs)