当前位置: > Linux集群 > Hadoop >

hadoop-集群管理(4)——关键属性

时间:2014-12-30 23:14来源:linux.it.net.cn 作者:IT

hadoop中的配置属性非常多,这里只讨论关键属性,它们分散在3个文件中:core-site.xml、hdfs-site.xml、mapred-site.xml。

1. core-site.xml

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://Route:9000</value>
    <final>true</final>
  </property>
</configuration>

运行HDFS需要指定一台机器为namenode,通过参数 fs.default.name 来设置。它还指定了文件系统为HDFS。

2. hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.name.dir</name>
    <value>/home/tianyc/hadoop-1.0.4/dir_namenode/dir1,/home/tianyc/hadoop-1.0.4/dir_namenode/dir2</value>
  </property>
  <property>
    <name>dfs.data.dir</name>
    <value>/home/tianyc/hadoop-1.0.4/dir_datanode/dir1,/home/tianyc/hadoop-1.0.4/dir_datanode/dir2</value>
  </property>
  <property>
    <name>dfs.checkpoint.dir</name>
    <value>/home/tianyc/hadoop-1.0.4/dir_secondarynamenode/dir1,/home/tianyc/hadoop-1.0.4/dir_secondarynamenode/dir2</value>
  </property>
</configuration>

  • dfs.replication:确定数据块被复制的份数。
  • dfs.name.dir:指定一系列目录来供namenode存储永久性的文件系统元数据(编辑日志和文件系统映像),这些元数据文件会同时备份在所有指定的目录中,形成冗余。建议指定一个本地磁盘目录,指定一个远程磁盘目录(例如NFS挂载磁盘),这样本地磁盘故障或namenode节点宕机后,都可以恢复并重构新的namenode。注意secondrynamenode只是定期保存namenode的检查点,并不提供namenode的最新备份。
  • dfs.data.dir:指定datanode存储数据的一系列目录。注意这里不是为了冗余,而是循环地在各个目录中写数据。因此,为了提高性能,最好分别为各个本地磁盘指定一个存储目录,使得数据块跨磁盘分布。这样,针对不同数据块的读操作可以并发执行,从而提升读性能。另一个显著提升的操作是在mount这些磁盘时,使用noatime选项,使得不刷新所读文件的最新访问时间。
  • dfs.checkpoint.dir:指定一系列目录来存储secondarynamenode的检查点映像文件。与namenode相同,这里的一系列目录也是为了冗余。

注意:如果不设置这些属性,HDFS的存储目录默认存放在hadoop的临时目录中(由core-site.xml文件中的 Hadoop.tmp.dir属性指定)。而如果清除了系统的临时目录,数据就会丢失。Hadoop.tmp.dir 属性的参考设置如下:

[tianyc@Route bin]$ cat ../conf/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>fs.default.name</name>
    <value>hdfs://Route:9000</value>
  </property>
  <property>
    <name>Hadoop.tmp.dir</name>
    <value>/tmp/hadoop-tianyc</value>
  </property>
</configuration>

 3. mapred-site.xml

<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>Route:9001</value>
    <final>true</final>
  </property>
  <property>
    <name>mapred.local.dir</name>
    <value>/home/tianyc/hadoop-1.0.4/dir_local/dir1,/home/tianyc/hadoop-1.0.4/dir_local/dir2</value>
  </property>
  <property>
    <name>mapred.system.dir</name>
    <value>/tmp/hadoop-tianyc/dir_system</value>
  </property>
  <property>
    <name>mapred.tasktracker.map.tasks.maximum</name>
    <value>2</value>
  </property>
  <property>
    <name>mapred.tasktracker.reduce.tasks.maximum</name>
    <value>2</value>
  </property>
  <property>
    <name>mapred.child.java.opts</name>
    <value>-Xmx200m</value>
  </property>
</configuration>

  • mapred.job.tracker:指定jobtracker节点。这里不是URL格式,而是“主机:端口”格式。
  • mapred.local.dir:临时本地文件的一系列目录,存储mapreduce作业执行过程中产生的中间数据和工作文件。由于这里也存储map任务的输出数据,数据量可能非常大,因此必须保证这里的容量足够大。这些目录最好分散到各个本地磁盘以提升I/O,通常会使用与datanode相同的磁盘和分区(但不同目录)。
  • mapred.system.dir:指定一个目录,来存储运行mapreduce任务的各个tasktracker的共享文件(例如作业JAR文件)。
  • mapred.tasktracker.map.tasks.maximum:最大map任务数。
  • mapred.tasktracker.reduce.tasks.maximum:最大reduce任务数。
  • mapred.child.java.opts:tasktracker中子JVM的有效内存大小。
(责任编辑:IT)
------分隔线----------------------------