您的位置:首页 > 运维架构

从hadoop发展角度彻底明白hadoop1.x与hadoop2.x的区别

2016-12-25 21:41 274 查看
问题导读
1.hadoop1.x改造如果是两个jobtraker,你认为解决了什么问题?
2.hadoop1.x改造如果是两个jobtraker,你认为未解决了什么问题?
3.你如何看待hadoop2.x的yarn?

hadoop1.x与hadoop2.x的区别,在初学者看来,起始存在很多模糊的地方。如果看这篇文章,当然需要对hadoop有个基本的认识。

推荐参考:
零基础学习hadoop到上手工作线路指导(初级篇)    http://www.aboutyun.com/forum.php?mod=viewthread&tid=6780

我们知道hadoop是用来处理大数据的。hadoop1.x被不少公司使用,但是使用过程中存在不少问题。

hadoop1.x存在哪些问题



由于现在大家都接触的是hadoop2.x。对于hadoop1.x了解还是比较少的。
很多人问,如果没有1.x的基础,能否学习hadoop2.x。答案是可以的。但是如果了解hadoop1.x有助于我们理解hadoop2.x。我们来看看hadoop1.x存在哪些问题。

hadoop有jobtracker,trasktracker.对于jobtracker,trasktracker刚接触其实还是比较抽象的。可能多次遇到过。但是对于它的认识和理解还是比较模糊。
我们这里打个比喻:在一个组织结构中,既有管理者,又有执行者。而jobtracker,trasktracker则是管理者,执行者是map task和reduce task。

trasktracker像是一个中层管理者,既监控执行者--map task和reduce task,如果map任务或reduce任务有更新,会通过心跳(一般间隔是3秒)告诉TraskTracker,TraskTracker再通过心跳(一般至少5s,因为代价比较大)告诉JobTracker。

JobTracker是最高层管理者,它接受trasktracker的心跳,负责资源管理和job的调度。

上面如果你思维谨密,就能看出,如果一旦最高层管理JobTracker挂掉,那么整个集群就瘫痪了。为什么那?
1.不能提交job。
2.不能分配资源
3.job无法调度
这就有点像一个国家的leader挂掉了,那么谁会来负责国家的运转。如果你了解运行机制,其实也是有方案的。而这个方案就是我们所熟悉的高可用方案。而如果JobTracker挂掉了,显然hadoop集群就挂掉了。所以显然hadoop1.x是存在缺陷的。

既然存在缺陷,那么我们该如何来弥补。如果还是在原先的框架上修改,弄两个jobtracker是否可以。这肯定是一种方案。但是hadoop也是有野心的。作为大数据最初的开拓者,spark,storm都非常的活跃。
所以我们列出了,hadoop需改造的下面需求:
1.hadoop存在单点故障
2.hadoop能否统一spark,storm

从上面我们看到hadoop自身存在问题,需要改造,同时又想统一spark和storm。所以hadoop急切需要改造升级。

这里想到了很多种解决方案。

方案1:两个jobtraker

hadoop自身来讲,既然存在单点故障,所以那么我们可以创建两个jobtraker,这是否可以。答案是可以的。因为一旦一个挂掉。我们启用另外一个jobtraker,这也是合适的。但是还存在另外一个问题,就是该如何统一spark和storm。如果spark和storm运行的话,两个jobtraker是否可以。答案是不行的,因为jobtraker其实还是没有脱离他本身的框架,只能运行hadoop的map和reduce。spark的DAG和storm的拓扑,还是不能运行的。那如果你说我们在jobtraker中加入不就行了。可是这是相当麻烦的,jobtraker肯定会累死的,他的任务太多。显然需要分离的职务。

方案2:Yarn
两个jobtraker是不行了,那么就从jobtraker职能分离并且解决存在的问题
1.性能问题
2.单点故障
3.能运行mapreduce,spark,storm。

所以这时候就产生了Yarn。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: