hadoop基本知识3

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

猜你喜欢

转载自501565246-qq-com.iteye.com/blog/2043976
今日推荐