Hadoop学习之MapReduce(四)
2014-05-07 17:15
218 查看
接下来是跟MapReduce目录结构有关的参数。首先看两个参数,分别为在core-default.xml中定义的hadoop.tmp.dir,其默认值为/tmp/hadoop-${user.name},另一个为定义在mapred-default.xml中的mapred.local.dir,该参数指定了保存MapReduce中间数据文件的目录,其默认值为${hadoop.tmp.dir}/mapred/local。在下面的学习中将会直接引用mapred.local.dir。TaskTracker拥有本地目录,目录${mapred.local.dir}/taskTracker/用于创建本地缓存和本地作业。可以定义多个本地目录(分布在多个硬盘上)并且每个文件名被半随机地分配到本地目录中。当作业启动时,TaskTracker创建与本地目录(该目录由配置参数指定)相关的本地作业目录。这样,TaskTracker目录结构就像下面描述的:
${mapred.local.dir}/taskTracker/distcache/:所有用户的作业的公有分布式缓存。该目录保存本地的公有分布式缓存,这样本地的公有分布式缓存就可以在所有用户的所有任务和作业之间共享。
${mapred.local.dir}/taskTracker/$user/distcache/ :特定用户的作业的私有分布式缓存目录。该目录保存本地化的私有分布式缓存,这样本地的私有分布式缓存在仅在特定用户的任务和作业之间共享,其他用户的作业不可以访问该目录。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/:本地化作业的目录。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/work/:特定作业的共享目录,任务可以使用该空间作为临时空间并且在彼此间共享文件。该目录通过配置参数 job.local.dir对用户可见,可以通过JobConf.getJobLocalDir()访问,也可以作为系统属性访问,这样用户可以通过调用System.getProperty("job.local.dir")访问该目录。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/jars/:Jar文件目录,作业jar文件和扩展的jar文件保存在该目录下。Job.jar作为应用程序的jar文件自动得分布在每台机器上,在作业的任务启动之前该jar文件扩展到jar目录中。Job.jar的位置可以通过Job.getJar()访问。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/job.xml:Job.xml文件,通用的作业配置管理文件,作业的本地化文件。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid:每次任务尝试的任务目录。每个任务目录又有下面的结构:
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid/job.xml:一个job.xml文件,用于任务本地化作业的配置管理。任务本地化意味着属性或者参数已经被指定为该特定任务所用。每个任务的本地化属性描述如下。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid/output:用于中间输出文件的目录。该目录包含由MapReduce框架产生的临时mapper和reducer数据,比如mapper的输出文件等。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid/work:任务的当前工作目录。在启用任务的jvm reuse时,该目录将会是jvm启动目录。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid/work/tmp :任务的临时目录(用户可以通过制定 mapred.child.tmp属性设置mapper和reducer任务的临时目录,默认为./tmp。如果该值不是绝对路径,将使用任务的工作目录,否则将会被直接指定。如果该目录不存在将会被创建。这样,子Java任务使用-Djava.io.tmpdir='theabsolute
path of the tmp dir'选项执行。管道和流使用环境变量设置,TMPDIR='the absolute path of the tmp dir')。如果mapred.child.tmp的值为./tmp,该目录已经创建了。
在上面提到了JVM重用,现在就来了解一下。通过执行作业的配置参数mapred.job.reuse.jvm.num.tasks启用任务的JVMs重用功能。如果该值为1(默认值),JVMs是不可以重用的(每个JVM运行一个任务),如果值为-1,一个JVM可以运行的任务数量是没有限制的(相同作业)。
下表中的参数在每个任务执行时在作业的配置管理中本地化:
需要注意的是,在执行一个流(Streaming)作业时,“mapred”参数需要进行转换,点(.)变为了下划线(_)。比如,mapred.job.id变为了mapred_job_id,mapred.jar变为了mapred_jar。使用带下划线的参数名取得流作业中mapper/reducer任务的值。
任务的标准输出(stdout)和错误输出(stderr)被TaskTracker读取并被记录到${HADOOP_LOG_DIR}/userlogs,${HADOOP_LOG_DIR}的值可以在${HADOOP_HOME}\conf\hadoop-env.sh中指定,默认为$HADOOP_HOME/logs。
DistributedCache可以用来分布mapper和reducer任务使用的jar文件和本地库文件。子jvm总是将它的当前工作目录增加到java.library.path和LD_LIBRARY_PATH(Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。该路径>在默认路径之前查找)中,因此缓存的库文件可以通过System.loadLibrary 或者System.load加载。
至此,已经学完了MapReduce框架中与任务的执行和环境相关的知识,下面将会学习作业的提交、监控已经输入输出等内容
${mapred.local.dir}/taskTracker/distcache/:所有用户的作业的公有分布式缓存。该目录保存本地的公有分布式缓存,这样本地的公有分布式缓存就可以在所有用户的所有任务和作业之间共享。
${mapred.local.dir}/taskTracker/$user/distcache/ :特定用户的作业的私有分布式缓存目录。该目录保存本地化的私有分布式缓存,这样本地的私有分布式缓存在仅在特定用户的任务和作业之间共享,其他用户的作业不可以访问该目录。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/:本地化作业的目录。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/work/:特定作业的共享目录,任务可以使用该空间作为临时空间并且在彼此间共享文件。该目录通过配置参数 job.local.dir对用户可见,可以通过JobConf.getJobLocalDir()访问,也可以作为系统属性访问,这样用户可以通过调用System.getProperty("job.local.dir")访问该目录。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/jars/:Jar文件目录,作业jar文件和扩展的jar文件保存在该目录下。Job.jar作为应用程序的jar文件自动得分布在每台机器上,在作业的任务启动之前该jar文件扩展到jar目录中。Job.jar的位置可以通过Job.getJar()访问。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/job.xml:Job.xml文件,通用的作业配置管理文件,作业的本地化文件。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid:每次任务尝试的任务目录。每个任务目录又有下面的结构:
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid/job.xml:一个job.xml文件,用于任务本地化作业的配置管理。任务本地化意味着属性或者参数已经被指定为该特定任务所用。每个任务的本地化属性描述如下。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid/output:用于中间输出文件的目录。该目录包含由MapReduce框架产生的临时mapper和reducer数据,比如mapper的输出文件等。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid/work:任务的当前工作目录。在启用任务的jvm reuse时,该目录将会是jvm启动目录。
${mapred.local.dir}/taskTracker/$user/jobcache/$jobid/$taskid/work/tmp :任务的临时目录(用户可以通过制定 mapred.child.tmp属性设置mapper和reducer任务的临时目录,默认为./tmp。如果该值不是绝对路径,将使用任务的工作目录,否则将会被直接指定。如果该目录不存在将会被创建。这样,子Java任务使用-Djava.io.tmpdir='theabsolute
path of the tmp dir'选项执行。管道和流使用环境变量设置,TMPDIR='the absolute path of the tmp dir')。如果mapred.child.tmp的值为./tmp,该目录已经创建了。
在上面提到了JVM重用,现在就来了解一下。通过执行作业的配置参数mapred.job.reuse.jvm.num.tasks启用任务的JVMs重用功能。如果该值为1(默认值),JVMs是不可以重用的(每个JVM运行一个任务),如果值为-1,一个JVM可以运行的任务数量是没有限制的(相同作业)。
下表中的参数在每个任务执行时在作业的配置管理中本地化:
参数名 | 类型 | 描述 |
mapred.job.id | String | 作业ID |
mapred.jar | String | 作业目录中job.jar的位置 |
job.local.dir | String | 作业指定的共享临时空间 |
mapred.tip.id | String | 任务ID |
mapred.task.id | String | 任务的尝试ID |
mapred.task.is.map | boolean | 是否是map任务 |
mapred.task.partition | int | 在作业内为任务分配的ID |
map.input.file | String | Mapper读取数据的文件名 |
map.input.start | long | InputSplit起始位置的偏移 |
map.input.length | long | InputSplit的字节数。 |
mapred.work.output.dir | String | 任务的临时输出目录 |
任务的标准输出(stdout)和错误输出(stderr)被TaskTracker读取并被记录到${HADOOP_LOG_DIR}/userlogs,${HADOOP_LOG_DIR}的值可以在${HADOOP_HOME}\conf\hadoop-env.sh中指定,默认为$HADOOP_HOME/logs。
DistributedCache可以用来分布mapper和reducer任务使用的jar文件和本地库文件。子jvm总是将它的当前工作目录增加到java.library.path和LD_LIBRARY_PATH(Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。该路径>在默认路径之前查找)中,因此缓存的库文件可以通过System.loadLibrary 或者System.load加载。
至此,已经学完了MapReduce框架中与任务的执行和环境相关的知识,下面将会学习作业的提交、监控已经输入输出等内容
相关文章推荐
- Hadoop学习笔记(一):MapReduce的输入格式
- hadoop 1.2.1 Eclipse mapreduce hello word 学习笔记(二)
- hadoop学习笔记之mapreduce中使用hbase
- hadoop编程入门学习笔记-3 开发MapReduce程序
- Hadoop MapReduce学习笔记 SQL查询
- Hadoop学习笔记-MapReduce工作原理
- Hadoop学习之MapReduce(二)
- Hadoop学习之MapReduce框架详解
- hadoop 学习笔记 二 ----MapReduce
- Hadoop MapReduce 学习笔记(二) 序言和准备2
- Hadoop学习——向MapReduce提交计算任务的基本流程
- Hadoop2.6.0学习笔记(二)MapReduce通过Eclipse运行
- Hadoop2.6.0学习笔记(七)MapReduce操作MySQL数据库
- Hadoop学习笔记(5) MapReduce工作机制
- Hadoop学习全程记录——在Eclipse中运行第一个MapReduce程序
- Hadoop学习笔记(一):MapReduce工作机制
- hadoop 学习笔记:mapreduce框架详解:
- 从零开始学习Hadoop--第2章 第一个MapReduce程序
- Hadoop学习笔记(一):MapReduce的输入格式
- Hadoop学习笔记(二):MapReduce的特性-计数器、排序