Hadoop初学者必读

Hadoop初学者必读

一、什么是Hadoop分布式系统?

从命名名称上看,首先可以认为他是一个工具,可能有人认为是废话,但是这个理念对我来说很重要,因为他是我认真学习下去的一个重要的理由,既然是工具我相信就能把他掌握。

他是一个分布式基础架构,由Apache基金会开发,他的产生由Google公司的三篇著名的论文而来,也是Google提出云计算概念的由来,大家有时间可以阅读一下这三篇经典的论文。他是一种用户在不必要分析底层的情况下,利用集群实现的一种处理高并发数据的计算和存储的框架。他实现的功能就是让用户不必使用昂贵的服务器,利用平时的小型主机就可以完成海量数据的查询与存储的基础框架。

二、Hadoop分布式有哪些优点?

1、高可靠性 :Hadoop 分布式具有很好的容错机制,假设一台机器出现故障他维护的副本机器会直接替换掉出现故障的机器,以保证系统的正常运行。

2、高扩展性 :Hadoop 可以利用计算机簇集成进行计算,可以很轻松的扩展到数千的计算机节点。

3、高效性 :Hadoop 充分利用其分布式集群的特点,将海量数据分块处理,并细分给每一台小型计算机进行计算,保证了他的高效率并行计算。

Hadoop 采用JAVA语言开发,所以跨平台性非常好,等等还有很多优点,在这里就不和大家一一介绍了。

三、Hadoop 核心之—— MapReduce

MapReduce的工作原理大致分为如下几个阶段:

客户端:提交MapReduce作业。

Jobtracker:协调作业程序。Jobtracker是一个Java程序,他的主类是JobTracker.

Tasktracker:运行作业分配后的任务,他也是一个Java应用程序,他的主类是TaskTracker.

分布式文件系统:一般为HDFS,用来实现实体间的共享作业文件。

1、作业提交

JobClient的RunJob()方法用于创建JobClient实例,并调用submitJob()方法的便捷方式,调用runJob()方法对作业进行轮询,如果发现作业有变化,他自动将作业提交到控制台。如果提交成功他会把作业计数提交到控制台,如果失败的话他会将错误记录提交到控制台。

2、作业初始化

当JobTracker通过调用其submitJob()得到作业后,会放进内部的作业队列当中,交由作业调度器(job scheduler)进行调度,并对其进行初始化。初始化包括,创建一个正在运行的业务对象,任务和记录,这样就方便程序跟踪任务的运行状态和进程。

3、作业的分配

tasktarcker运行一个简单的循环,定期发送‘心跳’给JobTracker,他会告诉JobTracker,tasktracker是否还活着,同时也充当两者之间沟通的桥梁。

任务执行

tasktracker已经被分配了一个任务,下一步就是运行了,首先,他会通过共享文件系统把作业Jar文件复制到tasktracker所在的文件系统,从而实现作业的JAR文件的本地化,tasktracker,将应用程序,从分布式缓存复制到本地磁盘中并进行解压,然后创建任务实例,并运行。

4、进度和状态

MapReduce作业是常时间批量作业,运行时间从几秒到几小时甚至更长,这么长的时间用户肯定需要掌握作业的进展情况,一个作业和他的每个任务都有一个状态,包括作业或任务的状态如:运行状态,成功状态,失败状态,map和reduce的进度,作业计数器的值,状态消息,或描述等等。这些状态都是随着作业时间的改变而不断变化。

5、作业完成

当JobTracker收到作业最后一个任务已经完成的通知后,便把作业状态改为成功,然后JobClient查询状态时,便知道执行的任务已经执行成功了。于是JobClient端会打印给客户消息告知客户,然后从runJob()方法返回。

 

转载于:https://my.oschina.net/sittc7/blog/330152

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值