hadoop各配置文件加载情况
之前依据名字想当然的把fs.default.name配置在hdfs-site.xml里,结果执行ls copy等命令都是本地的方式,后调试也未果,故想了下之前自己的操作,然后看了下代码发现都是配置惹的问题,故在此总结下各配置项的加载情况。在hadoop 0.20.2版本中存在如下几个配置文件
core-default.xml
core-site.xml
hdfs-default.xml
hdfs-site.xml
mapred-default.xml
mapred-site.xml
其中default中各个配置项可以参看我之前的blog里有说。下面总结下加载情况
在Configuration类中通过static加载方式加载了
core-default.xml
core-site.xml
也就是说所有用到Configuration的类都会加载这个配置项。
在以下几个类中会显示加载hdfs-*.xml
DataNode
NameNode
DFSck
DistributedFileSystem
这几个类加载这些文件是通过Configuration来完成的,也就是说默认会将core-*的xml也加载进来。
以下几个类中会显示加载mapred-*.xml
JobClient
JobConf
JobTracker
TaskTracker
同样他们的操作也是由Configuration来完成的,也就是说默认会将core-*的xml也加载进来
在hadoop命令中有以下类是执行命令的实体类
namenode CLASS=org.apache.hadoop.hdfs.server.namenode.NameNode
secondarynamenode CLASS=org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
datanode CLASS=org.apache.hadoop.hdfs.server.datanode.DataNode
fs CLASS=org.apache.hadoop.fs.FsShell
dfs CLASS=org.apache.hadoop.fs.FsShell
dfsadmin CLASS=org.apache.hadoop.hdfs.tools.DFSAdmin
mradmin CLASS=org.apache.hadoop.mapred.tools.MRAdmin
fsck CLASS=org.apache.hadoop.hdfs.tools.DFSck
balancer CLASS=org.apache.hadoop.hdfs.server.balancer.Balancer
jobtracker CLASS=org.apache.hadoop.mapred.JobTracker
tasktracker CLASS=org.apache.hadoop.mapred.TaskTracker
job CLASS=org.apache.hadoop.mapred.JobClient
queue CLASS=org.apache.hadoop.mapred.JobQueueClient
pipes CLASS=org.apache.hadoop.mapred.pipes.Submitter
version CLASS=org.apache.hadoop.util.VersionInfo
jar CLASS=org.apache.hadoop.util.RunJar
distcp CLASS=org.apache.hadoop.tools.DistCp
daemonlog CLASS=org.apache.hadoop.log.LogLevel
archive CLASS=org.apache.hadoop.tools.HadoopArchives
sampler CLASS=org.apache.hadoop.mapred.lib.InputSampler
也就是说从这些类中排除上面那些显示指定hdfs,mapred等配置项的类,那么这些剩余的类使用的配置都是从
core-default.xml
core-site.xml
获得,所以如果你有针对以上类中需要使用的特定配置而不是使用系统默认的配置,那么需要配置在core-site.xml中,例如fs.default.name
页:
[1]