表5-3 类 org.apache.hadoop.mapreduce.Job 的常用接口
nds Mapper> cls) 核心接口,指定MapReduce作业的Mapper类,默认 为空。也可以在“mapred-site.xml”中配置
“mapreduce.job.map.class”项。
setReducerClass(Class<ext
ends Reducer> cls) 核心接口,指定MapReduce作业的Reducer类,默认 为空。也可以在“mapred-site.xml”中配置
“mapreduce.job.reduce.class”项。
setCombinerClass(Class<ex
tends Reducer> cls) 指定MapReduce作业的Combiner类,默认为空。也 可以在“mapred-site.xml”中配置
setJarByClass(Class< > cls) 核心接口,指定执行类所在的jar包本地位置。java通 过class文件找到执行jar包,该jar包被上传到HDFS。
setJar(String jar) 指定执行类所在的jar包本地位置。直接设置执行jar包 所在位置,该jar包被上传到HDFS。与
setJarByClass(Class< > cls)选择使用一个。也可以在
“mapred-site.xml”中配置“mapreduce.job.jar”
> theClass) 核心接口,指定MapReduce作业的输出key的类型,
也可以在“mapred-site.xml”中配置
“mapreduce.job.output.key.class”项。
setOutputValueClass(Class
< > theClass) 核心接口,指定MapReduce作业的输出value的类 型,也可以在“mapred-site.xml”中配置
“mapreduce.job.output.value.class”项。
功能 说明 setPartitionerClass(Class<e xtends Partitioner>
theClass)
指定MapReduce作业的Partitioner类。也可以在
“mapred-site.xml”中配置
“mapred.partitioner.class”项。该方法用来分配 map的输出结果到哪个reduce类,默认使用
HashPartitioner,均匀分配map的每条键值对记录。
例如在hbase应用中,不同的键值对应的region不 同,这就需要设定特殊的partitioner类分配map的输 出结果。
setSortComparatorClass(Cl ass<extends
RawComparator> cls)
指定MapReduce作业的map任务的输出结果压缩类,
默认不使用压缩。也可以在“mapred-site.xml”中配 置“mapreduce.map.output.compress”和
“mapreduce.map.output.compress.codec”项。当 map的输出数据大,减少网络压力,使用压缩传输中 间数据。
setPriority(JobPriority
priority) 指定MapReduce作业的优先级,共有5个优先级别,
VERY_HIGH,HIGH,NORMAL,LOW,VERY_LOW,默认 级别为NORMAL。也可以在“mapred-site.xml”中 配置“mapreduce.job.priority”项。
表5-4 类 org.apache.hadoop.mapred.JobConf 的常用接口
方法 说明
setNumMapTasks(int n) 核心接口,指定MapReduce作业的map 个数。也可以在“mapred-site.xml”中 配置“mapreduce.job.maps”项。
说明指定的InputFormat类用来控制map任务个 数,注意该类是否支持客户端设定map个 数。
setNumReduceTasks(int n) 核心接口,指定MapReduce作业的 reduce个数。默认只启动1个。也可以在
“mapred-site.xml”中配置
“mapreduce.job.reduces”项。reduce 个数由用户控制,通常场景reduce个数 是map个数的1/4。
setQueueName(String queueName) 指定MapReduce作业的提交队列。默认 使用default队列。也可以在“mapred-site.xml”中配置
“mapreduce.job.queuename”项。
5.6 FAQ
5.6.1 提交 MapReduce 任务时客户端长时间无响应
问题
向YARN服务器提交MapReduce任务后,客户端长时间无响应。
回答
对于上述出现的问题,ResourceManager在其WebUI上提供了MapReduce作业关键步 骤的诊断信息,对于一个已经提交到YARN上的MapReduce任务,用户可以通过该诊 断信息获取当前作业的状态以及处于该状态的原因。
具体操作:在公有云管理控制台,选择“基本信息 > Yarn监控信息”进入Web界面,
单击提交的MapReduce任务,在打开的页面中查看诊断信息,根据诊断信息再采取相 应的措施。
或者也可以通过查看MapReduce日志了解应用运行情况,并根据日志信息调整应用程 序。