• 沒有找到結果。

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日志了解应用运行情况,并根据日志信息调整应用程 序。

5.7 开发规范

5.7.1 规则