整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

9.4.3 Hadoop守护进程的关键属性

hadoop 小红牛 12℃ 0评论

Hadoop的配置属性之多简直让人眼花缭乱。本节讨论对于真实的工作集群 来说非常关键的一些属性(或至少能够理解默认属性的含义),这些属性分散 在三个文件之中,包括 coresite.xmlhdfssite.xml  mapredsite.xml。范例9-1、9.29.3列举了这些文件的典型设置。这些属性大 多被标记为final,以避免被作业配置重写。要想进一步了解如何写配置文 件,可参见5.1节。

范例9-1.典型的core-site.xml配置文件


<?xml version="l.0"?>
<!-- core-site.xml -->
<configuration>
    <property>
        <name>fs.default.name</name〉
        <value>hdfs://namenode/〈/value>
        <final>true</final>
    </property>
</configuration>

范例9-2.典型的hdfs-site.xml配置文件


<?xml version="l.0"?>
<!-- hdfs-site.xml -->
<configuration>
    <property>
        <name>dfs.name.dir</name>
        <value>/diskl/hdfs/name,/remote/hdfs/name</value>
        <final>true</final>
    </property>
    <property>
        <name>dfs.data.dir</name>
        <value>/diskl/hdfs/data,/disk2/hdfs/data</value>
        <final>true</final>
    </property>
    </property>
        <name>fs.checkpoint.dir </name>
        <value>/diskl/hdfs/namesecondary,/disk2/hdfs/namesecondary</value>
        <final>true</final>
    </property>
</configuration>

范例9-3.典型的mapred-site.xml配置文件

<?xml version="l.0"?>
<!-- mapred-site.xml -->
<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>jobtracker:8021</value>
        <final>true</final>
    </property>
    <property>
        <name>mapred.local.dir</name>
        <value>/diskl/mapred/localJ/disk2/mapred/local</value>
        <final>true</final>
    </property>
    <property>
        <name>mapred.system.dir</name>
        <value>/tmp/hadoop/mapred/system</value>
        <final>true</final>
    </property>
    <property>
        <name>mapred.tasktracker.map.tasks.maximum</name>
        <value>7</value>
        <final>true</final>
    </property>
    <property>
        <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>7</value>
        <final>true</final>
    </property>
    <property>
         <name>mapred.child.java.opts</name>
         <value>-xmx400m</value>
         <!-- Not marked as final so jobs can include 〕VM debugging options -->
    </property>
</configuration>

1.HDFS

运行HDFS需要将一台机器指定为namenode。在本例中,属性 fs.default.name描述HDFS文件系统的ITRI,其主机是namenode的主机 名称或IP地址,端口是namenode监听RPC的端口。如果没有指定,那么默认端口是8020。

HDFS(或MapReduce)守护进程并不用•文件来确定主机名 称。由于makers文件只供控制脚本使用,如果不使用控制脚本,可忽略该文件。

属性fs.default.name也指定了默认文件系统,可以解析相对路径。相对
路径的长度更短,使用更便捷(不需要了解特定namenode的地址)。例如, 假设默认文件系统如范例9-1所示的那样,则相对URI
/a/b被解析为hdfs: //namenode/a/b。

当用户在运行HDFS时,鉴于fs.default.name指定了HDFS的namenode和默认文件系统,则HDFS必须是服务器配置的默认文件系统。值得注意的是,为了操作方便,也允许在客户端配置中将其他 文件系统指定为默认文件系统。

例如,假设系统使用HDFS和S3两种文件系统,则可以在客户端配 置中将任一文件系统指定为默认文件系统。这样的话,就能用相对 URI指向默认文件系统,用绝对URI指向其他文件系统。

此外,还有其他一些关于HDFS的配置选项,包括namenode和datanode存
储目录的属性。属性项dfs. name .dir指定一系列目录来供namenode存储
永久性的文件系统元数据(编辑日志和文件系统映像)。这些元数据文件会同 时备份在所有指定目录中。通常情况下,通过配置dfs.name.dir属性可

以将namenode元数据写到一两个本地磁盘和一个远程磁盘(例如NFS挂载的目录)之中。这样的话,即使本地磁盘发生故障,甚至整个namenode发
生故障,都可以恢复元数据文件并且重构新的namenode。(辅助namenode
只是定期保存namenode的检査点,不维护namenode的最新备份。)

属性df
s . data. dir指定datanode存储数据的目录。前面提到,
dfs.name.dir描述一系列目录,其目的是支持namenode进行冗余备份。
虽然dfs.data.dir也描述了一系列目录,但是其目的是使datanode循环
地在各个目录中写数据。因此,为了提高性能,最好分别为各个本地磁盘指定一个存储目录。这样一来,数据块跨磁盘分布,针对不同数据块的读操作可以并发执行,从而提升读取性能。

为了充分发挥性能,需要使用noatitne选项挂载磁盘。该选项意味着执行读操作时,所读文件的最近访问时间信息并不刷新,从而显著提升性能。

最后,还需要指定辅助namenode存储文件系统的检查点的目录。属性fs.checkpoint.dir指定一系列目录来保存检查点。与namenode类似, 检査点映像文件会分别存储在各个目录之中,以支持冗余备份。

表9-3总结了 HDFS的关键配置属性。

表9-3.HDFS守护进程的关键属性

属性名称

类型

默认值

说明

fs.default.name

URI

file:///

默认文件系统。URI定义主 机名称和namenode的RPC 服务器工作的端口号,默认 值是8020。本属性保存在 core-site.xml 中

dfs.name.dir

以逗号分隔的目录名称

 ${hadoop .tmp. dir} /dfs/name

namenode存储永久性的元数 据的目录列表。namenode在 列表上的各个目录中均存放 相同的元数据文件

dfs.data.dir

以逗号分隔的目录名称

 ${hadoop.tmp.dir}/dfs/data

datanode存放数据块的目录 列表。各个数据块分别存放 于某一个目录中

fs.checkpoint.dir

以逗号分隔的目录名称

${hadoop.tmp.dir}/ dfs/namesecondary

辅助namenode存放检査点 的目录列表。在所列的每个 目录中均存放一份检査点文 件的副本

在默认情况下,HDFS的存储目录放在Hadoop的临时目录之中(即hadoop.tmp.dir属性,默认值是/tmp/hadoop-${user.name})。

因此,正确设置这些属性的重要性在干,即使清除了系统的临时目录。数据也不会丢失。

2.MapReduce

用户需要指派一台机器为jobtracker以运行MapReduce。在小型集群中,可以把jobtracker和namenode设置于同一台机器上。设置mapred.
job .tracker 属性,指定jobtracker的主机名或IP地址,以及监听端口。该属性并非
URI格式,而是“主机:端口”格式。通常情况下,端口号被设为8021。

在执行MapReduce作业的过程中所产生的中间数据和工作文件被写到临时本地文件之中。由于这些数据包括map任务的输出数据,数据量可能非常大,因此必须保证本地临时存储空间(由mapred.
local .dir属性设置)的
容量足够大。mapred.local.dir属性使用一个逗号分隔的目录名称列表,最好将这些目录分散到所有本地磁盘,以提升磁盘I/O操作的效率。
通常情况下,会使用与datanode相同的磁盘和分区(但是不同的目录)存储
MapReduce的临时数据。如前所述,datanode的数据块存储目录由 dfs.data.dir属性项指定。

 

MapReduce使用分布式文件系统来和运行MapReduce任务的各个
tasktracker共享文件(例如作业JAR文件)。属性mapred. system.dir指定
这些文件的存储目录,可以是针对默认文件系统的相对路径(默认文件系 统由fs.default.name属性设定),一般为HDFS。

最后,设置
mapred.tasktracker.map.tasks.maximum 和
mapred.tasktracker.Reduce.tasks. maximum属性时必须考虑到tasktracker所在机器上还剩多
少可以使用的核,设置mapped.child, java .opts属性时必须考虑
tasktracker各子JVM允许使用的内存大小。详情参见9.4.2节对内存的讨论。

表9-4总结了 HDFS的关键配置属性。

属性名称

类型

默认值

说明

mapred.job. tracker

主机名和 端口

local

运行
jobtracker 的 RPC 服务器的主机名和端口。如果设为默认值local,则运行一个MapReduce作业
时,jobtracker以处理时模 式运行(换言之,用户无需启动jobtracker;如果试图 在该模式下启动jobtracker
还会引发错误)

mapred.local. dir

逗号分隔的目录名称

${hadoop.tmp.dir}/mapred/local

存储作业的中间数据的目 录列表。作业终止时,数据被清除

mapred.system.dir

URI

${hadoop.tmp.dir}/mapred/system

在作业运行期间存储共享文 件的目录,相对于 fs.default.name

mapred.task tracker. map.tasks.maximum

int

2

在任一时刻,允许在 tasktracker 上运行的 map 任务的最大数量

mapred.tasktracker. reduce.tasks.maximum

int

2

在任一时刻,允许在 tasktracker 上运行的 reduce任务的最大数量

mapred.child.java, opts

String

-Xmx200m

JVM选项,用于启动运行 map和reduce任务的 tasktracker子进程。该属 性可以针对每个作业进行 设置。例如,可以设置 JVM的属性,以支持调试

mapreduce.map. java.opts

String

-Xmx200m

JVM选项,针对运行map 任务的子进程(在1.x版本 中不出现)

mapreduce.reduce, java.opts

String

-Xmx200m

JVM选项,针对运行 reduce任备的羊进程(在 1.x版本中不出现)


转载请注明:全栈大数据 » 9.4.3 Hadoop守护进程的关键属性

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址