hadoop初学



Hadoop 学习笔记(一) 缓存

最近在学习Hadoop分布式系统,在这里与你们分享一下:

什么是Hadoop分布式系统? 服务器

从命名名称上看,首先能够认为他是一个工具,可能有人认为是废话,可是这个理念对我来讲很重要,由于他是我认真学习下去的一个重要的理由,既然是工具我相信就能把他掌握。
他是一个 分布式系统 基础架构,由Apache基金会开发,他的产生由Google公司的三篇著名的论文而来,也是Google提出云计算概念的由来,你们有时间能够阅读一下这三篇经典的论文。他是一种用户在没必要要分析底层的状况下,利用集群实现的一种处理高并发数据的计算和存储的框架。他实现的功能就是让用户没必要使用昂贵的服务器,利用平时的小型主机就能够完成海量数据的查询与存储的基础框架。
Hadoop 分布式有哪些优势
高可靠性
Hadoop 分布式具备很好的容错机制,假设一台机器出现故障他维护的副本机器会直接替换掉出现故障的机器,以保证系统的正常运行。
高扩展性
Hadoop 能够利用计算机簇集成进行计算,能够很轻松的扩展到数千的计算机节点。
高效性
Hadoop 充分利用其分布式集群的特色,将海量数据分块处理,并细分给每一台小型计算机进行计算,保证了他的高效率并行计算。
Hadoop 采用JAVA语言开发,因此跨平台性很是好,等等还有不少优势,在这里就不和你们一一介绍了。
Hadoop 核心之—— MapReduce


     MapReduce工做原理(如图) 架构

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

相关文章
相关标签/搜索