|
Hadoop Job Scheduler
1、hadoop默认的调度器是基于队列的FIFO调度器
所有用户的作业都被提交到一个队列中,然后由jobTracker先按照作业的优先级高低,再按照作业提交
时间的先后顺序选择将被执行的作业。
优点:调度算法简单明了,JobTracker工作负担轻
缺点:忽略了不同作业的需求差异
2、还用俩个多用户调度器
--Fair Scheduler(公平调度器)
--Capacity Schedule(计算能力调度)
Fair Scheduler(公平调度器)
多个Pool,Job需要被提交到某个Pool中
每个pool可以设置最小task slot,称为miniShare
FS会保证Pool的公平
Pool内部支持Priority设置
支持资源抢占
mapreduce的数据类型与java的数据类型
java的基本类型 Writable
boolean --->BooleanWritable
byte ---->WyteWritable
int ---->IntWritable
float ---->FloatWritable
long ---->LongWritable
double ----> DoubleWritable
String ------>Text
Writable接口
1、对java中的int型进行封装那么就是hadoop中的IntWritable
在写程序的时候可以把IntWritable可以看成是int类型
它实现了WritableComparable接口。
WritableComparable又是Writable、java.lang.comparable接口的子接口。
2、Writable类对所有的java基本类型进行了封装:
如:boolean --->BooleanWritable,byte-->byteWritable
3、我们可以自定义Writable接口,来编写更复杂的结构的类。
核心:hadoop有自己一套的I/O机制,I/O类都必须实现Writable接口
自定义IO类
package com.hadoop.test;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.hadoop.io.Writable;
/**
* 自定义数据类型
* @author lenovo
*
*/
public class Kangfei implements Writable {
private int id;
private String name;
@Override
public void readFields(DataInput out) throws IOException {
int = out.readInt();
name = out.readUTF();
}
@Override
public void write(DataOutput in) throws IOException {
in.write(id);
in.writeUTF(name);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
mapreduce驱动默认的设置
InputForamt(输入) TextInputForamt
MapperClass IdentityMapper
MapRunnerClass MapRunner
MapOutputKeyClass LongWritable
MapOutputValueClass Text
PartitionerClass HashPartitioner
ReduceClass IdentityReduce
OutputKeyClass LongWritable
OutputValueClass Text
OutputFormatClass TextOutputFormat |
|
|
|
|
|
|