淘宝TFS的nameserver的hadoop设计
更新时间:2024-06-24 13:06:01 阅读量: 综合文库 文档下载
- 淘宝tfs 性能推荐度:
- 相关推荐
Nameserver HA 容灾方案
结构
Nameserver 的容灾采用ha结构,即两台机器互为热备,同时运行时,一台为主,一台为备,主绑定到对外vip,提供服务;当主机器宕机后,迅速将vip绑定当备机,备机切换为主,提供服务。
结构中有两个NameServer, 在同一时刻,只有一个为主,一个为备。主NameServer是对外提供服务的机器,并接管了对外服务的ip地址;备NameServer维护元数据状态,一旦主NameServer停止服务,会马上将自身切换为主,绑定对外ip地址,继续提供服务。
职责
NameServer(master) : 1. 提供对外服务
2. 管理所有DataServers, blocks的复制,迁移,紧缩以及nameserver的其他功能。 3. 增量同步元数据变更信息给NameServer备机。
NameServer(slave):
1. 维护DataServers心跳信息
2. 接受主NameServer同步的元数据
DataServer:
1. 接受外部请求
2. 同时给主备Nameserver汇报心跳
HeartAgent
监控NameServer的服务情况,发现主Ns挂掉以后,将备切换为主。
问题
为什么采用一主一备的结构
客户端只配置了一个vip地址,ha通过绑定这个地址到主ns提供服务。同一时间,只能有一个ns提供服务。
Ns需要保证一个block同时只能有一个client在更新,需要生成唯一的lease。
扩展
目前这种主备结构并不是最优方案,理想的nameserver容灾应该采用nameserver集群来解决,可以考虑实现一个chubby 集群,或是类似与cassandra的去中心化结构。
流程
启动过程
StartRead fsimageCan be Master?NoMaster exist?YesNotify MasterYesMaster exist?NoYesFatal ErrorAccept ds heartbeat NoMark self as MasterNotify MasterReady to SyncAccept ds heartbeat Handle Sync MetaData LoopHandle request Loop
作为主的启动流程:
1. Ns起来以后,首先检查自己是否能成为一个Master, 按上一节的说法,主要是检查vip
是否绑定在本机(.)
2. 如果发现可以做Master, 则要检查另外一台机器是否认为自己是Master, 3. 如果对方认为自己是,这个肯定是出问题了,必须马上告警并退出。
4. 如果对方是Slave, 那么将自己标记为Master, 并开始接受心跳和汇报blocks的信息。 5. Ok以后开始接受外部请求,并接受备NS过来的同步元数据请求
作为备的启动流程:
1. 如果发现自己不是Master,则要检查另外一台机器是否是Master, 2. 如果对方认为自己不是,这个肯定是出问题了,必须马上告警。
3. 如果对方不是,那么将自己标记为备机,向Master发送登记消息,告诉Master自己准
4. 5. 6. 7. 8.
备启动了。这个时候需要Master记录下当前的时间,作为同步开始的时间。 同时从Master拉回来当前的活动机器列表 开始接受ds heartbeat和blocks汇报信息
当一段时间以后,可以和从Master拉回来的机器列表做比较,如果发现心跳汇报的差不多了,告知Master启动完毕,准备好接收同步metaData了。 Master将slave启动期间新增的增量元数据信息同步给slave
Slave 进入等待循环,开始接收master过来的元数据同步信息和心跳。但是不接收其他任何消息。
切换过程
Ha agent发现主Ns不工作了,将vip漂移到备ns, 并通知备ns准备切换
备ns将自己标记为主,并接收外部请求
等待备机的同步请求。
切换的过程中,会发生一点数据损失,因为主忘备同步数据是有时差的,当主挂掉以后,还没来得及同步的那部分元数据,备机里面没有,那么这部分元数据就找不到,这部分元数据分为两种:
更改block 信息: 这种问题不大,写ds的时候会发现错误,导致一次或几次写错误,然后ds会更新ns的版本号。
新加的block: 这种在备ns里面找不到,而且是永远找不到,除非相关的ds重启重新汇报。 这会产生问题:
一是读不到这些block里面的文件,二是这些block可能被覆盖;
避免被覆盖的方法是,在备切换为主的过程中,新加blocks从当前最大的blocks序号中跳过一些,以免冲掉这些可能已经存在的blocks.等待原来的主起来以后,把那些没有同步过来的重新同步一遍。
问题
一台NameServer启动以后怎么决定自己是主?
对于目前的结构来讲,需要发现对外的ip地址是绑定在本机的,并且没有另外的主。
对于ha结构来讲,这个地址漂移的过程有多快?
从发现主不可用,把ip地址漂移到辅机,并且等待备NS发现以后,切换自身为主。 这个切换过程就是整个TFS失去响应的时间,应该控制在10s以内。
数据同步
Block元数据同步
Block元数据本身有几种变更信息,新加block, 更新block, 删除block; 这三种信息都需要从主ns同步到备ns, 同步的方式采用定时和定量同步,也就是一段时间内或者是更新记录达到一定条数以后同步一次。
异常1:
这种同步方式的问题是主ns一旦挂掉,会有一部分元数据没有同步,造成的后果切换过程中有描述。
Block&ds关系元数据同步
在主ns进行复制,迁移,整理(只有主ns会做这个工作), 都会导致关系数据发生变化,主ns会将这部分数据实时同步到备ns,
复制,迁移,整理的过程是这样的:
1. 发送命令给ds
2. Ds进行相应的操作(复制,移动,或是整理) 3. Ds发送完成消息给主Ns
4. 主Ns更新关系元数据,并回复确认消息给Ds
在第4步主Ns更新关系元数据以后,需要实时发送同步消息给备Ns。
异常1:
备Ns没有起来,这个时候无需同步给备NS,因为备Ns起来以后有一个重新接收汇报的过程
异常2:
备Ns在启动过程当中,也就是备Ns在接收汇报消息的过程当中,这个时候不能接收同步消息。只有备Ns在接收汇报消息完毕以后,准备好接收同步信息,才能接收这个同步信息。 异常3:
在同步的过程中,主Ns挂了。在一个复制或是移动计划过程中,最多可能有Ds Count * taskNumPerDs(这个参数可配置,一般为3) 个操作进行,这个过程需要一段时间,如果这个过程中主Ns挂掉,那么第3步操作中,Ds就得不到响应,这个时候需要消息发给备Ns,重试一段时间(因为备Ns在切换为主了才能接收这个消息),如果重试一直不成功,需要将复制的数据删除掉,等待重新复制或是移动。
备Ns没有起来,这个时候无需同步给备NS,因为备Ns起来以后有一个重新接收汇报的过程
异常2:
备Ns在启动过程当中,也就是备Ns在接收汇报消息的过程当中,这个时候不能接收同步消息。只有备Ns在接收汇报消息完毕以后,准备好接收同步信息,才能接收这个同步信息。 异常3:
在同步的过程中,主Ns挂了。在一个复制或是移动计划过程中,最多可能有Ds Count * taskNumPerDs(这个参数可配置,一般为3) 个操作进行,这个过程需要一段时间,如果这个过程中主Ns挂掉,那么第3步操作中,Ds就得不到响应,这个时候需要消息发给备Ns,重试一段时间(因为备Ns在切换为主了才能接收这个消息),如果重试一直不成功,需要将复制的数据删除掉,等待重新复制或是移动。
正在阅读:
淘宝TFS的nameserver的hadoop设计06-24
为了祖国的美好明天作文03-12
2009年国家公务员考试行政职业能力测验试题和答案详解04-27
生物药剂学和药物动力学计算题09-20
全新版大学英语阅读教程第一册答案04-19
建筑工程各工种三级安全教育内容06-05
表扬信02-12
第09章 刚体的平面运动(胡)01-15
实验1以太网链路层帧格式分析12-15
《艳阳天》读后感10篇12-12
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 淘宝
- nameserver
- hadoop
- 设计
- TFS
- 学校、托幼机构重点传染病防控知识手册
- 51单片机与PC机通信
- 民间借贷(欠款)纠纷人民调解协议书范本
- -1995年全国初中数学竞赛试题及答案
- 2017-2018化学必修一最困难考点
- 第四章 生产者行为理论习题
- 个人征信试题库
- 1、监理导则施工监理
- 浙江省部分重点中学2012届高三下学期2月联考 理科综合 - 图文
- 4.9连锁 家电 开店 企划工作
- 初级网络管理员2016年下半年上午真题
- UNIX新手常用命令
- 实习说明书OK - 图文
- 七年级下册unit3导学案
- 公司治理与内部审计关系研究
- 安徽事业单位招聘考试:公共基础知识每日一练(2014.9.22)
- 电子商务师认证10.19练习答案
- 利用科学探究提高课堂的有效性
- 径行裁判论文:我国民事诉讼径行裁判制度研究
- 2014-2015年九年级物理中考模拟试题