MapReduce常用接口
MapReduce中常见的类如下。
- org.apache.hadoop.mapreduce.Job:用户提交MR作业的接口,用于设置作业参数、提交作业、控制作业执行以及查询作业状态。
- org.apache.hadoop.mapred.JobConf:MapReduce作业的配置类,是用户向Hadoop提交作业的主要配置接口。
类org.apache.hadoop.mapreduce.Job的常用接口
功能 |
说明 |
---|---|
Job(Configuration conf, String jobName),Job(Configuration conf) |
新建一个MapReduce客户端,用于配置作业属性,提交作业。 |
setMapperClass(Class<extends Mapper> cls) |
核心接口,指定MapReduce作业的Mapper类,默认为空。也可以在“mapred-site.xml”中配置“mapreduce.job.map.class”项。 |
setReducerClass(Class<extends Reducer> cls) |
核心接口,指定MapReduce作业的Reducer类,默认为空。也可以在“mapred-site.xml”中配置“mapreduce.job.reduce.class”项。 |
setCombinerClass(Class<extends Reducer> cls) |
指定MapReduce作业的Combiner类,默认为空。也可以在“mapred-site.xml”中配置“mapreduce.job.combine.class”项。需要保证reduce的输入输出key,value类型相同才可以使用,谨慎使用。 |
setInputFormatClass(Class<extends InputFormat> cls) |
核心接口,指定MapReduce作业的InputFormat类,默认为TextInputFormat。也可以在“mapred-site.xml”中配置“mapreduce.job.inputformat.class”项。该设置用来指定处理不同格式的数据时需要的InputFormat类,用来读取数据,切分数据块。 |
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”项。 |
setOutputFormatClass(Class<extends OutputFormat> theClass) |
核心接口,指定MapReduce作业的OutputFormat类,默认为TextOutputFormat。也可以在“mapred-site.xml”中配置“mapred.output.format.class”项,指定输出结果的数据格式。例如默认的TextOutputFormat把每条key,value记录写为文本行。通常场景不配置特定的OutputFormat。 |
setOutputKeyClass(Class< > 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<extends Partitioner> theClass) |
指定MapReduce作业的Partitioner类。也可以在“mapred-site.xml”中配置“mapred.partitioner.class”项。该方法用来分配map的输出结果到哪个reduce类,默认使用HashPartitioner,均匀分配map的每条键值对记录。例如在hbase应用中,不同的键值对应的region不同,这就需要设定特殊的partitioner类分配map的输出结果。 |
setSortComparatorClass(Class<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”项。 |
类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”项。 |