Hadoop学习笔记(四)

                            Hadoop中的作业(Job)

  1. Hadoop中的作业起始操作,JobClient.runJob(conf)方式进行作业开始,JVM里新建一个进程进行作业处理,作业里面包含任务,调用tasktracker进行任务调度,可以设定准许任务失败的任务数或者失败任务数的百分比都可以设定。

  2. 作业优先级的功能,可以通过设置mapred.job.priority属性或者JobClient的setJobPriority()方法来设置优先级。Hadoop中默认的是原始的基于队列的FIFO(先进先出)的调度器。虽然有优先级但是开始当排在前面的作业先运行。还有其他多用户调度器:Fair Scheduler(公平调度器)和Capacity Scheduler.

  3. MapReduce确保每个Reducer的输入都按键排序。系统执行排序的过程----将map输出作为输入传给Reducer----称为shuffle.shuffle是Mapreduce的‘心脏’,是奇迹发生的地方。

  4. 每个map任务都有个环形内存缓冲区,用于存储任务的输出。默认情况下,缓冲区的大小为100MB,可以调整io.sort.spill.percent默认为0.80或80%。缓冲达到阀值或填满就开始写入磁盘,如果在此期间缓冲区被填满,map会阻赛直到写磁盘完成。

  5. combiner的意义在于使map输出更紧凑,使得写到磁盘和传给Reducer的数据更少

  6. Reduce段处理,map任务只要有一个任务完成,Reduce任务就开始复制map的输出,这就是reduce的复制阶段。复制这个任务默认值有5个线程来做,可以通过mapred.reduce.parallel.copies属性来改变。

你可能感兴趣的:(Hadoop作业)