1.设置Map/Reduce任务允许使用的最大虚拟内存大小
mapred.task.maxvmem是MapReduce的一个配置参数,用于指定每个Map/Reduce任务允许使用的最大虚拟内存大小(以字节为单位)。如果一个任务使用的虚拟内存超过了此参数指定的值,则任务会被认为是失败的,并且MapReduce集群会尝试重新分配任务。
默认情况下,此参数的值为MapReduce任务的堆内存大小的两倍。可以通过在mapred-site.xml配置文件中设置来修改此参数的值。 将此参数设置得比默认值小,可以用于限制任务的内存使用,从而减少集群中总的内存使用量。但是,如果任务的内存使用量超过了指定的值,可能会导致任务失败和重新分配,从而影响任务的执行效率。
需要注意的是,此参数只对使用Java虚拟机的任务有效,对于其他类型的MapReduce任务(如Shell任务)则无效。
mapred.task.maxvmem = 1024
2.指定包含MapReduce作业的JAR文件
mapreduce.job.jar是MapReduce的一个配置参数,用于指定包含MapReduce作业的JAR文件。通过此参数,可以将所有依赖项打包到一个JAR文件中,以便在集群中分发和执行作业。
设置此参数后,MapReduce集群会将JAR文件中的Mapper、Reducer和其他相关类加载到内存中,并在执行作业时使用这些类。这样可以减少作业的依赖项在集群中的分发和加载时间,提高作业的执行效率。
需要注意的是,如果作业依赖于其他文件或资源,这些文件或资源也应该包含在JAR文件中,以便在集群中正确加载和使用。另外,如果作业需要访问集群中的其他服务或资源,可能需要在JAR文件中提供相关的配置信息。
<property>
<name>mapreduce.job.jar</name>
<value>/path/to/job.jar</value>
</property>
3.指定集群中节点级别的临时文件存储目录
mapreduce.cluster.local.dir是MapReduce的一个配置参数,用于指定集群中节点级别的临时文件存储目录。MapReduce任务在执行过程中会生成和使用一些临时文件,这些临时文件需要存储在一个或多个指定的目录中。
可以通过在mapred-site.xml配置文件中设置来指定mapreduce.cluster.local.dir的值。该值可以是一个目录,也可以是多个目录,多个目录之间使用逗号分隔。例如:
<property>
<name>mapreduce.cluster.local.dir</name>
<value>/tmp1,/tmp2,/tmp3</value>
</property>
其中,/tmp1、/tmp2和/tmp3是集群中节点上的临时文件存储目录。
需要注意的是,指定的临时文件存储目录需要具备足够的空间来存储MapReduce任务生成的临时文件,并且需要具备适当的权限,以便MapReduce可以读写这些文件。另外,如果指定的目录不存在,MapReduce会尝试创建该目录。如果目录无法创建或访问,MapReduce任务将无法正常执行。
4.指定作业的拥有者
mapreduce.job.user.name是MapReduce的一个配置参数,用于指定作业的拥有者。在MapReduce集群中,每个用户都会在集群上运行自己的作业,每个用户的UID是唯一的。通过设置mapreduce.job.user.name参数,可以指定作业的拥有者,以便在任务日志和临时文件中使用正确的用户名。
默认情况下,MapReduce会使用提交作业的用户的用户名作为作业的拥有者。可以通过在mapred-site.xml配置文件中设置来指定mapreduce.job.user.name的值。例如:
<property>
<name>mapreduce.job.user.name</name>
<value>username</value>
</property>
其中,username是作业的拥有者用户名。
需要注意的是,作业的拥有者只能是集群中存在的用户。如果指定的用户名不存在,作业将无法正常启动。另外,作业的拥有者对作业的运行没有影响,只是用于标识作业的归属。作业的运行权限和临时文件的权限是由MapReduce集群的管理员配置和管理的。
5.指定是否保留失败任务的临时文件
mapreduce.task.files.preserve.failedtasks是MapReduce的一个配置参数,用于指定是否保留失败任务的临时文件。

最低0.47元/天 解锁文章
3538

被折叠的 条评论
为什么被折叠?



