hadoop体系中配置文件读取优先级问题

hadoop体系中配置文件读取优先级问题

一、hadoop体系下对配置项有以下四种配置方式:

​ 1、hadoop的默认配置文件。路径为/usr/local/hadoop-3.2.1/share/hadoop。该目录的2级树状图如下:(只截取了hdfs和common两个目录)

hadoop体系中配置文件读取优先级问题

​ 其中core-default.xml位于common/hadoop-common-3.2.1.jar包中,hdfs-default.xml文件位于hdfs/hadoop-hdfs-3.2.1.jar包中。如果没有对默认配置项进行修改,hadoop集群在启动的时候会默认读取该文件中的配置信息。

​ 2、hadoop安装包中自定义配置。该配置文件目录为:/usr/local/hadoop-3.2.1/etc/hadoop。该文件中有很多配置文件,我们在此处关心的分别是:core-site.xmldhfs-site.xml如果用户在安装hadoop的时候,对该配置文件进行配置,会优先读取该配置文件中的配置项。

​ 3、Java客户端的jar包中默认的配置。 当我们利用IDEA等软件,用Java语言连接hdfs文件系统的时候,需要导入如下jar包:hadoop-common-3.2.1.jarhadoop-hdfs-3.2.1.jar

​ 同样,core-default.xml位于hadoop-common-3.2.1.jar包中,hdfs-default.xml文件位于hadoop-hdfs-3.2.1.jar包中。如果我们对这两个包中的默认配置项不加以修改并进行相关操作,那么操作处理的结果任然是hadoop的默认配置项,我们在hadoop安装包中自定义的配置项不生效。

​ 4、在Java代码中添加相关配置。当我们利用Java代码对hdfs文件系统进行操作的时候,会有一个Configuration对象,如果对该对象中的配置项进行配置之后,那么不管其他地方怎么配置,最终以Java代码配置的内容为准。

二、上述优先级问题的图解

hadoop体系中配置文件读取优先级问题