Hadoop 学习笔记(一) 缓存
最近在学习Hadoop分布式系统,在这里与你们分享一下:什么是Hadoop分布式系统? 服务器
从命名名称上看,首先能够认为他是一个工具,可能有人认为是废话,可是这个理念对我来讲很重要,由于他是我认真学习下去的一个重要的理由,既然是工具我相信就能把他掌握。MapReduce工做原理(如图) 架构
MapReduce的工做原理大体分为以下4个阶段:
客户端:提交MapReduce做业。
Jobtracker:协调做业程序。Jobtracker是一个Java程序,他的主类是JobTracker.
Tasktracker:运行做业分配后的任务,他也是一个Java应用程序,他的主类是TaskTracker.
分布式文件系统:通常为HDFS,用来实现实体间的共享做业文件。
做业提交
JobClient的RunJob()方法用于建立JobClient实例,并调用submitJob()方法的便捷方式,调用runJob()方法对做业进行轮询,若是发现做业有变化,他自动将做业提交到控制台。若是提交成功他会把做业计数提交到控制台,若是失败的话他会将错误记录提交到控制台。
做业初始化
当JobTracker经过调用其submitJob()获得做业后,会放进内部的做业队列当中,交由做业调度器(job scheduler)进行调度,并对其进行初始化。初始化包括,建立一个正在运行的业务对象,任务和记录,这样就方便程序跟踪任务的运行状态和进程。
做业的分配
tasktarcker运行一个简单的循环,按期发送‘心跳’给JobTracker,他会告诉JobTracker,tasktracker是否还活着,同时也充当二者之间沟通的桥梁。
任务执行
tasktracker已经被分配了一个任务,下一步就是运行了,首先,他会经过共享文件系统把做业Jar文件复制到tasktracker所在的文件系统,从而实现做业的JAR文件的本地化,tasktracker,将应用程序,从分布式缓存复制到本地磁盘中并进行解压,而后建立任务实例,并运行。
进度和状态
MapReduce做业是常时间批量做业,运行时间从几秒到几小时甚至更长,这么长的时间用户确定须要掌握做业的进展状况,一个做业和他的每一个任务都有一个状态,包括做业或任务的状态如:运行状态,成功状态,失败状态,map和reduce的进度,做业计数器的值,状态消息,或描述等等。这些状态都是随着做业时间的改变而不断变化。
做业完成
当JobTracker收到做业最后一个任务已经完成的通知后,便把做业状态改成成功,而后JobClient查询状态时,便知道执行的任务已经执行成功了。因而JobClient端会打印给客户消息告知客户,而后从runJob()方法返回。
并发