赞
踩
两个重要的进程:jobtracker和tasktracker
yarn:Hadoop集群的资源管理系统,相当于集群操作系统
重构的思想:将Jobtracker两个主要功能分离成单独的组件,这两个功能是资源管理(RM)和任务调度与监控(AM)。
Client提交application任务,向RM申请资源,RM根据资源分布情况来分配一个NodeManager下的container作为AM,初始化任务所需的资源并向RM发出资源请求,RM分配指定NodeManager下的container资源计划,然后,AM根据RM分配的资源计划去指定的NodeManager来启动对应的container,任务运行时,对应的container通过心跳机制向AM汇报任务的运行情况,从而达到监控任务的目的。NodeManager监控该节点下的container的资源使用情况并向RM汇报(心跳机制)。AM在一定周期内会向RM汇报该任务的进度。
NameNode记录数据块block的元数据(目录),一般存放在内存以便集群能快速定位到数据具体位置。Namenode新增加的信息会同步到SecondNameNode(磁盘)
问题1:Hadoop1.0的NM在HDFS中只有一个,存在单点故障风险,一旦NN挂掉,整个集群无法使用
解决方案:NameNode的HA将通过在同一集群中运行两个NameNode(active和standby)来解决
原理:
两个NN(Active和standby),各自对应的FC所监控NN的状态,通过心跳机制发送给ZK(分布式锁),ZK会选择一个NN作为Active,而另一个NN处于Standby状态。当一个NN处于Active时,此NN对DN、JN集群拥有读写的权限,而另一个NN没有此权限。Active的NN会更新DataNode新增的数据信息,同步到JN集群(一般3个节点,保证容错性)。当此NN挂掉时,另一个NN会由ZK切换到Active状态,该NN处于standby状态。Active的NN会立刻将JN集群上新增的数据同步到NN,此时,Active的NN拥有读写的权限。
问题2:集群水平扩展导致NameNode内存不足问题:单个NameNode存放在有限的内存空间,因此集群水平扩展可能导致NN无法继续存储
解决方案:集群提供多个NN,每个NN有独立的namespace,对应的namespace有block pools,分别负责管理集群DataNode中的blocks。(NameNode联盟)
问题3:为什么zookeeper集群节点数量一般为奇数,通常取3个?
集群的脑裂通常是发生在节点之间通信不可达的情况下,集群会分裂成不同的小集群,小集群各自选出自己的master节点,导致原有的集群出现多个master节点的情况,这就是脑裂。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。