Linux IO调度子系统应用场景
2014-07-07 17:38
225 查看
hadoop作业分本地模式和分布式模式两种执行模式,JobClient初始化时会读取配置项mapred.job.tracker(默认为local),如果该配置项的值为local,则hadoop采本地模式执行作业,否则采用分布式模式执行。本地模式使用LocalJobRuner提交并执行作业。对LocalJobRunner实例调用submitJob( )方法会创建Job(LocalJobRunner的内部类)实例,该实例完成作业的执行。
从图中可以看到,LocalJobRunner的内部类Job就是一个线程,其实本地模式的MapReduce作业就由该线程完成。Job的内部类MapTaskRunnable实现了Runnable接口,代表了Map任务,每个分片都对应一个MapTaskRunnable实例,Job采用java并发包提供的ExecutorService线程池来执行MapTaskRunnable实例,线程池的大小为分片数量和mapreduce.local.map.tasks.maximum配置项值中较小者,至少为1。线程池创建好之后就将MapTaskRunnable实例都提交到其中去执行,然后线程池停止接受新任务等待线程执行完毕。线程执行完毕后会逐个检查MapTaskRunnable实例有没有异常出现,如果有则认为map执行失败,直接抛出异常终止执行,如果都没有异常则认为map都执行成功,接下来继续执行reduce。本地模式值允许0个或者1个reduce任务。ReduceTask代表一个reduce任务,它从map的输出文件中读取数据进行reduce操作,将结果写到指定的目录中。reduce任务执行完之后,会进行一些清理操作,删除map的中间输出,删除作业提交目录和其中的作业配置文件、删除作业的本地拷贝文件等。
本地执行模式:
源代码就不再贴了,请参考LocalJobRunner。
从图中可以看到,LocalJobRunner的内部类Job就是一个线程,其实本地模式的MapReduce作业就由该线程完成。Job的内部类MapTaskRunnable实现了Runnable接口,代表了Map任务,每个分片都对应一个MapTaskRunnable实例,Job采用java并发包提供的ExecutorService线程池来执行MapTaskRunnable实例,线程池的大小为分片数量和mapreduce.local.map.tasks.maximum配置项值中较小者,至少为1。线程池创建好之后就将MapTaskRunnable实例都提交到其中去执行,然后线程池停止接受新任务等待线程执行完毕。线程执行完毕后会逐个检查MapTaskRunnable实例有没有异常出现,如果有则认为map执行失败,直接抛出异常终止执行,如果都没有异常则认为map都执行成功,接下来继续执行reduce。本地模式值允许0个或者1个reduce任务。ReduceTask代表一个reduce任务,它从map的输出文件中读取数据进行reduce操作,将结果写到指定的目录中。reduce任务执行完之后,会进行一些清理操作,删除map的中间输出,删除作业提交目录和其中的作业配置文件、删除作业的本地拷贝文件等。
本地执行模式:
源代码就不再贴了,请参考LocalJobRunner。
相关文章推荐
- Linux IO调度层分析-3
- Linux input子系统 io控制字段
- 五种I/O 模式——阻塞(默认IO模式),非阻塞(常用语管道),I/O多路复用(IO多路复用的应用场景),信号I/O,异步I/O
- 在LINUX 2.6中,有四种关于IO的调度算法
- linux带缓存IO文件 复制应用
- Linux IO调度层分析-1
- Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep() .
- Linux IO调度器相关算法介绍
- 区分异步和多线程应用场景(IO操作包括获取网络数据用异步,大量耗时的计算用线程)
- Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
- 转:linux io调度深入分析
- Linux调度域负载均衡-设计,实现和应用
- 修改LINUX IO调度算法 提高数据库吞吐
- Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()
- 五种IO 模式——阻塞(默认IO模式),非阻塞(常用语管道),IO多路复用(IO多路复用的应用场景),信号IO,异步IO
- linux的IO子系统的认识
- glib学习笔记三(续)——GLib核心应用支持:在Linux下使用IO通道(IO Channels)
- Linux IO子系统和文件系统读写流程
- 五种I/O 模式——阻塞(默认IO模式),非阻塞(常用语管道),I/O多路复用(IO多路复用的应用场景),信号I/O,异步I/O
- Linux时间子系统之七:定时器的应用--msleep(),hrtimer_nanosleep()