Hadoop1.0在HDFS和MapReduce在高可用方面、扩展性方面存在问题
HDFS存在的问题
1.NameNode单点故障,难以应用于在线场景
2.NameNode压力过大,且内存受限,影响系统扩展性。
MapReduce存在的问题
1.JobTracker单点故障
2.JobTracker访问压力大,影响系统扩展性
3.难以支持除MapReduce之外的框架,如Spark、Storm等
Hadoop2.0解决的问题
HDFS问题
解决单点故障:通过主备NameNode解决,如果主NameNode发生故障,则切换到备NameNode
HDFS HA:1.主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换 2.所有的DataNode同时想两个NameNode汇报数据块信息
切换方式:1.手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合 2.Zookeeper自动切换(ZookeeperFailoverController(ZKFC):监控NameNode健康状态,并向Zookeeper注册NameNode; NameNode挂掉后ZKFC为NameNode竞争锁,获得ZKFC竞争锁的NameNode变为主NameNode)
解决内存受限问题:水平扩展,支持多个NameNode,每个NameNode分管一部分目录,所有的NameNode共享所有DataNode存储资源
MapReduce问题
Yean Hadoop2.0新引入的资源管理系统,将JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现。
ResourceManager:负责整个集群的资源管理和调度
ApplicationMaster:负责应用程序的相关的事物,比如任务调度、任务监控和容错等
1.Yarn的引入使的多个计算框架可以运行在一个集群中,每一个应用程序对应一个ApplicationMaster
2.将MapReduce的作业直接运行在Yarn上,而不是运行在有JobTracker和TaskTRacker构建的MapReduce1.0系统上。
MapReduce2的基本功能模块:
Yarn:负责资源管理和调度
MRApplicationMaster:负责任务切分、任务调度、任务监控和容错(每一个应用程序对应一个MRAppMaster)
Map Task/ReduceTask :任务引擎,与MapReduce1.0一致