本帖最后由 pig2 于 2016-9-12 16:27 编辑
问题导读
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。
|
|