在安装Hadoop时,需要对conf目录下的三个文件进行配置,分别为core-site.xml、hdfs-site.xml和mapred-site.xml。
以下分别是各文件的配置代码:
(1)core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
(2)hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop_dir/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:// /home/hadoop/hadoop_dir/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
(3)mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>mapreduce.cluster.local.dir</name>
<value>/home/hadoop/hadoop_dir/mapred/local</value>
</property>
<property>
<name>mapreduce.jobtracker.system.dir</name>
<value>/home/hadoop/hadoop_dir/mapred/system</value>
</property>
</configuration>
这些配置文件都是XML文件,单个配置元素包含有多个属性说明,属性说明包含名称和值元素,可能会有注释。
下面解释这上述配置变量的含义:
(1)hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中。
(2)fs.default.name 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。HDFS和MapReduce组件都需要它,这就是它出现在core-site.xml文件中而不是hdfs-site.xml文件中的原因。
(3)dfs.namenode.name.dir 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。
(4)dfs.datanode.data.dir 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这 个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆盖。
(5)dfs.replication 它决定着系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)。在单机和单机伪分布模式下,将此值修改为1。
(6)mapred.job.tracker JobTracker的主机(或者IP)和端口。
(7)mapreduce.jobtracker.system.dir MapReduce在HDFS上存储文件的位置。
(8)mapreduce.cluster.local.dir MapReduce的缓存数据存储在文件系统中的位置。
注:我们可以随意修改要使用的端口号,但9000和9001是Hadoop的常用默认端口。