⼤大数据之
分布式⽂文件系统
Why, what and how
好⾖豆⺴⽹网
赵卫国
@mlsx
2013-9-14
13年9⽉月16⽇日 星期⼀一
13年9⽉月16⽇日 星期⼀一
Google
> 100 PB
> 1T indexed URLs
> 3 million servers
> 7.2B PV/day
13年9⽉月16⽇日 星期⼀一
13年9⽉月16⽇日 星期⼀一
Facebook
> 1 billion users
> 300PB; +>500TB/day
>35% of world’s photographs
13年9⽉月16⽇日 星期⼀一
13年9⽉月16⽇日 星期⼀一
YouTube
> 1000PB
+> 72 hours/minute
> 37 million hours/year
> 4 billion views/day
13年9⽉月16⽇日 星期⼀一
13年9⽉月16⽇日 星期⼀一
Twitter
> 124 B tweets/year
> 390M/day
~4500/sec
13年9⽉月16⽇日 星期⼀一
13年9⽉月16⽇日 星期⼀一
World Population
>7,057,065,162
13年9⽉月16⽇日 星期⼀一
⼤大数据是
http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1
13年9⽉月16⽇日 星期⼀一
⼤大数据是
http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1
13年9⽉月16⽇日 星期⼀一
⼤大数据是
+
http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1
13年9⽉月16⽇日 星期⼀一
⼤大数据是
+ +
http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1
13年9⽉月16⽇日 星期⼀一
⼤大数据是
+ +
http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1
CTO of CIA
13年9⽉月16⽇日 星期⼀一
⼤大数据的价值
http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation
13年9⽉月16⽇日 星期⼀一
⼤大数据的价值
美国医疗服务
• 每年价值3000亿美元
• ⼤大约0.7%的年⽣生产率增⻓长
http://www.mckinsey.com/insights/business_technology/big_data_the_next_fro...
⼤大数据的价值
美国医疗服务
• 每年价值3000亿美元
• ⼤大约0.7%的年⽣生产率增⻓长
欧洲公共部门管理
• 每年价值2500亿欧元
• ⼤大约0.5%的年⽣生产率增⻓长
http://www.mckinsey.com/insights...
⼤大数据的价值
美国医疗服务
• 每年价值3000亿美元
• ⼤大约0.7%的年⽣生产率增⻓长
欧洲公共部门管理
• 每年价值2500亿欧元
• ⼤大约0.5%的年⽣生产率增⻓长
制造业
• 产品开发、组装成本降
低达50%
• 运⾏行资本降低...
⼤大数据的价值
美国医疗服务
• 每年价值3000亿美元
• ⼤大约0.7%的年⽣生产率增⻓长
欧洲公共部门管理
• 每年价值2500亿欧元
• ⼤大约0.5%的年⽣生产率增⻓长
全球个人位置数据
• 服务提供商收⼊入1000亿美元或以上
• ...
⼤大数据的价值
美国医疗服务
• 每年价值3000亿美元
• ⼤大约0.7%的年⽣生产率增⻓长
欧洲公共部门管理
• 每年价值2500亿欧元
• ⼤大约0.5%的年⽣生产率增⻓长
全球个人位置数据
• 服务提供商收⼊入1000亿美元或以上
• ...
⼤大数据的价值
美国医疗服务
• 每年价值3000亿美元
• ⼤大约0.7%的年⽣生产率增⻓长
欧洲公共部门管理
• 每年价值2500亿欧元
• ⼤大约0.5%的年⽣生产率增⻓长
全球个人位置数据
• 服务提供商收⼊入1000亿美元或以上
• ...
⼤大数据的特征
13年9⽉月16⽇日 星期⼀一
⼤大数据的特征
“所涉及的数据量规模巨⼤大到⽆无法通过⺫⽬目前主流软件⼯工具,在合理时间内达到获取、管理、处理、
并整理成为帮助企业经营决策更积极⺫⽬目的的信息的程度”
- 中⽂文维基百科
13年9⽉月16⽇日 星期⼀一
⼤大数据的特征
“所涉及的数据量规模巨⼤大到⽆无法通过⺫⽬目前主流软件⼯工具,在合理时间内达到获取、管理、处理、
并整理成为帮助企业经营决策更积极⺫⽬目的的信息的程度”
- 中⽂文维基百科
13年9⽉月16⽇日 星期⼀一
⼤大数据来源
13年9⽉月16⽇日 星期⼀一
⼤大数据来源
•互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、
电⼦子商务
13年9⽉月16⽇日 星期⼀一
⼤大数据来源
•互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、
电⼦子商务
•物联⺴⽹网、移动设备、终端、个⼈人位置、传
感器采集的数据
13年9⽉月16⽇日 星期⼀一
⼤大数据来源
•互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、
电⼦子商务
•物联⺴⽹网、移动设备、终端、个⼈人位置、传
感器采集的数据
•通信和互联⺴⽹网运⾏行商
13年9⽉月16⽇日 星期⼀一
⼤大数据来源
•互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、
电⼦子商务
•物联⺴⽹网、移动设备、终端、个⼈人位置、传
感器采集的数据
•通信和互联⺴⽹网运⾏行商
•天⽂文、⽓气象、医疗数据
13年9⽉月16⽇日 星期⼀一
⼤大数据带来的挑战
http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg
13年9⽉月16⽇日 星期⼀一
⼤大数据带来的挑战
• 数据采集
• 数据存储
• 数据搜索
• 数据共享
• 数据传输
• 数据分析
• 数据可视化
http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg
13年9⽉...
⼤大数据带来的挑战
http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg
数据如何存储
13年9⽉月16⽇日 星期⼀一
传统存储
13年9⽉月16⽇日 星期⼀一
传统存储
• 问题
13年9⽉月16⽇日 星期⼀一
传统存储
• 问题
• 纵向扩展受阵列空间限制
13年9⽉月16⽇日 星期⼀一
传统存储
• 问题
• 纵向扩展受阵列空间限制
• 横向扩展受交换设备限制
13年9⽉月16⽇日 星期⼀一
传统存储
• 问题
• 纵向扩展受阵列空间限制
• 横向扩展受交换设备限制
• 节点受⽂文件系统限制
13年9⽉月16⽇日 星期⼀一
分布式存储
Interconnection Network
Node 1 Node 1 Node 1...
13年9⽉月16⽇日 星期⼀一
分布式存储
• 挑战
• 节点间通信
• 数据存储
• 数据空间平衡
• 容错
• ⽂文件系统⽀支持
Interconnection Network
Node 1 Node 1 Node 1...
13年9⽉月16⽇日 星期⼀一
分布式⽂文件系统 设计⺫⽬目标
http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems
13年9⽉月16⽇日 星期⼀一
分布式⽂文件系统 设计⺫⽬目标
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文
件系统来处理⽂文件定...
分布式⽂文件系统 设计⺫⽬目标
•访问透明
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文
件系统来...
分布式⽂文件系统 设计⺫⽬目标
•访问透明
•位置透明
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂...
分布式⽂文件系统 设计⺫⽬目标
•访问透明
•位置透明
•并发透明
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后...
分布式⽂文件系统 设计⺫⽬目标
•访问透明
•位置透明
•并发透明
•失效透明
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系...
分布式⽂文件系统 设计⺫⽬目标
•访问透明
•位置透明
•并发透明
•失效透明
•硬件透明
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分...
分布式⽂文件系统 设计⺫⽬目标
•访问透明
•位置透明
•并发透明
•失效透明
•硬件透明
•可扩展性
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样...
分布式⽂文件系统 设计⺫⽬目标
•访问透明
•位置透明
•并发透明
•失效透明
•硬件透明
•可扩展性
•复制透明
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使⽤用本地⽂文...
分布式⽂文件系统 设计⺫⽬目标
•访问透明
•位置透明
•并发透明
•失效透明
•硬件透明
•可扩展性
•复制透明
•迁移透明
“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,
客户端或客户端程序就像使...
⼀一些理论准备
http://tinyurl.com/nqdsayj
13年9⽉月16⽇日 星期⼀一
CAP理论(Brewer的猜想)
2000 Prof.Eric Brewer,PoDC Conference Keynote
2002 Seth Gilbert and Nancy Lynch ACM SIGACT News 33(2)
htt...
CAP理论(Brewer的猜想)
2000 Prof.Eric Brewer,PoDC Conference Keynote
2002 Seth Gilbert and Nancy Lynch ACM SIGACT News 33(2)
“ O...
CAP
13年9⽉月16⽇日 星期⼀一
• ⼀一致性(Consistency)
• 任何⼀一个读操作总能读取到之前完
成的写操作结果
CAP
13年9⽉月16⽇日 星期⼀一
• ⼀一致性(Consistency)
• 任何⼀一个读操作总能读取到之前完
成的写操作结果
• 可⽤用性(Availability)
• 每⼀一个操作总是能在确定的时间内
返回
CAP
13年9⽉月16⽇日 星期⼀一
• ⼀一致性(Consistency)
• 任何⼀一个读操作总能读取到之前完
成的写操作结果
• 可⽤用性(Availability)
• 每⼀一个操作总是能在确定的时间内
返回
• 分区可容忍性(Tolerance of network
Pa...
• ⼀一致性(Consistency)
• 任何⼀一个读操作总能读取到之前完
成的写操作结果
• 可⽤用性(Availability)
• 每⼀一个操作总是能在确定的时间内
返回
• 分区可容忍性(Tolerance of network
Pa...
分区容忍性-可⽤用性
http://codahale.com/you-cant-sacrifice-partition-tolerance/
http://pl.atyp.us/wordpress/?p=2521
13年9⽉月16⽇日 星期⼀一
分区容忍性-可⽤用性
“The network will be allowed to lose arbitrarily many messages sent
from one node to another” [...]
“For a dist...
分区容忍性-可⽤用性
“The network will be allowed to lose arbitrarily many messages sent
from one node to another” [...]
“For a dist...
分区容忍性-可⽤用性
“The network will be allowed to lose arbitrarily many messages sent
from one node to another” [...]
“For a dist...
分区容忍性-可⽤用性
“The network will be allowed to lose arbitrarily many messages sent
from one node to another” [...]
“For a dist...
⼀一致性
http://www.allthingsdistributed.com/2008/12/eventually_consistent.html
13年9⽉月16⽇日 星期⼀一
⼀一致性
• 强⼀一致性(类似ACID)
http://www.allthingsdistributed.com/2008/12/eventually_consistent.html
13年9⽉月16⽇日 星期⼀一
⼀一致性
• 强⼀一致性(类似ACID)
• 弱⼀一致性(⽆无保证)- 不⼀一致窗⼝口
http://www.allthingsdistributed.com/2008/12/eventually_consistent.html
13年9⽉月1...
⼀一致性
• 强⼀一致性(类似ACID)
• 弱⼀一致性(⽆无保证)- 不⼀一致窗⼝口
•最终⼀一致性(⽐比如DNS)
http://www.allthingsdistributed.com/2008/12/eventually_consist...
⼀一致性 NWR模型
13年9⽉月16⽇日 星期⼀一
⼀一致性 NWR模型
N = 数据副本的节点数
13年9⽉月16⽇日 星期⼀一
⼀一致性 NWR模型
N = 数据副本的节点数
W = 成功写操作的最少节点数
13年9⽉月16⽇日 星期⼀一
⼀一致性 NWR模型
N = 数据副本的节点数
W = 成功写操作的最少节点数
R = 成功读操作的最少节点数
13年9⽉月16⽇日 星期⼀一
⼀一致性 NWR模型
N = 数据副本的节点数
W = 成功写操作的最少节点数
R = 成功读操作的最少节点数
W + R > N
13年9⽉月16⽇日 星期⼀一
⼀一致性 NWR模型
N = 数据副本的节点数
W = 成功写操作的最少节点数
R = 成功读操作的最少节点数
W + R > N 强⼀一致性(通常 N=3,W=R=2)
13年9⽉月16⽇日 星期⼀一
⼀一致性 NWR模型
N = 数据副本的节点数
W = 成功写操作的最少节点数
R = 成功读操作的最少节点数
W + R > N 强⼀一致性(通常 N=3,W=R=2)
W + R ≤ N
13年9⽉月16⽇日 星期⼀一
⼀一致性 NWR模型
N = 数据副本的节点数
W = 成功写操作的最少节点数
R = 成功读操作的最少节点数
W + R > N 强⼀一致性(通常 N=3,W=R=2)
W + R ≤ N 弱⼀一致性
13年9⽉月16⽇日 星期⼀一
⼀一致性 NWR模型
N = 数据副本的节点数
W = 成功写操作的最少节点数
R = 成功读操作的最少节点数
W + R > N 强⼀一致性(通常 N=3,W=R=2)
W=N,R=1 最佳读
W=1,R=N 最佳写
W + R ≤ N 弱⼀...
基于模的哈希
N1 N2 N3 N4
13年9⽉月16⽇日 星期⼀一
基于模的哈希
?
N1 N2 N3 N4
13年9⽉月16⽇日 星期⼀一
基于模的哈希
?
partition	
  =	
  key	
  %	
  n_servers
N1 N2 N3 N4
13年9⽉月16⽇日 星期⼀一
基于模的哈希
partition	
  =	
  key	
  %	
  n_servers
N1 N2 N3 N4
13年9⽉月16⽇日 星期⼀一
基于模的哈希
partition	
  =	
  key	
  %	
  n_servers
N1 N2 N3 N4
13年9⽉月16⽇日 星期⼀一
基于模的哈希
partition	
  =	
  key	
  %	
  n_servers
N1 N2 N3 N4
13年9⽉月16⽇日 星期⼀一
基于模的哈希
partition	
  =	
  key	
  %	
  n_servers
N1 N2 N3 N4
partition	
  =	
  key	
  %	
  (n_servers	
  -­‐	
  1)
13年9⽉月16⽇...
基于模的哈希
partition	
  =	
  key	
  %	
  n_servers
N1 N2 N3 N4
partition	
  =	
  key	
  %	
  (n_servers	
  -­‐	
  1)
当n_server...
⼀一致哈希
http://en.wikipedia.org/wiki/Consistent_hashing
13年9⽉月16⽇日 星期⼀一
Ring
(Key space)
02160
⼀一致哈希
http://en.wikipedia.org/wiki/Consistent_hashing
13年9⽉月16⽇日 星期⼀一
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
Ring
(Key space)
02160
⼀一致哈希
创建⼀一个针对数据以及节点的
hash函数
idx = hash(key)
协调器: 延顺指针⽅方向的第⼀一个有
效节点
http://en.wikipedia.org/wiki/Con...
⼀一致哈希:复制
Ring
(Key space)
A
B
CD
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
13年9⽉月16⽇日 星期⼀一
⼀一致哈希:复制
Ring
(Key space)
A
B
CD
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
13年9⽉月16⽇日 星期⼀一
⼀一致哈希:复制
Ring
(Key space)
A
B
CD
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
数据延顺指针⽅方向分布到N -1
有效节点上
13年9⽉月...
⼀一致哈希:复制
Ring
(Key space)
A
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
KeyAB 分布到节点
B,C,D上
数据延顺指针⽅方向分布到N -...
⼀一致哈希:复制
Ring
(Key space)
A
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
KeyAB 分布到节点
B,C,D上
数据延顺指针⽅方向分布到N -...
⼀一致哈希:节点改变
A
B
CD
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
当有节点加⼊入或者离开⺴⽹网络
时,数据关系以及副本需要更
新。
⺴⽹网络内所有副本数据...
⼀一致哈希:节点改变
A
CD
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
当有节点加⼊入或者离开⺴⽹网络
时,数据关系以及副本需要更
新。
⺴⽹网络内所有副本数据保持...
⼀一致哈希:节点改变
A
CD
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
拷⻉贝节点E,F之间的
所有数据
当有节点加⼊入或者离开⺴⽹网络
时,数据关系以及副本需要更...
⼀一致哈希:节点改变
A
CD
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
拷⻉贝节点E,F之间的
所有数据
拷⻉贝节点F,A
之间的所有数据
当有节点加⼊入或者离开⺴...
⼀一致哈希:节点改变
A
CD
E
F
http://horicky.blogspot.com/2009/11/nosql-patterns.html
拷⻉贝节点E,F之间的
所有数据
拷⻉贝节点F,A
之间的所有数据
拷⻉贝节点A,B之
间的...
⼀一致哈希:数据倾斜
Ring
(Key space)
A
B
http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg
13年9⽉月16⽇日 星期⼀一
⼀一致哈希:数据倾斜
Ring
(Key space)
A
B
http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg
13年9⽉月16⽇日 星期⼀一
⼀一致哈希:数据倾斜
Ring
(Key space)
A
B
http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg
元芳,此事
你怎么看?
⼤大⼈人,我
看还得赶紧想别...
⼀一致哈希:虚拟节点
Ring
(Key space)
A
B
C
D
EF
G
H
I
02160
每个物理节点⽣生成随机
tokens,然后根据token值分区
Node 1: tokens A, E, G
Node 2: tokens C...
分布式⽂文件系统
13年9⽉月16⽇日 星期⼀一
分布式⽂文件系统
•Google Filesystem
13年9⽉月16⽇日 星期⼀一
分布式⽂文件系统
•Google Filesystem
•Taobao Filesystem
13年9⽉月16⽇日 星期⼀一
分布式⽂文件系统
•Google Filesystem
•Taobao Filesystem
•Hadoop Distributed Filesystem
13年9⽉月16⽇日 星期⼀一
分布式⽂文件系统
•Google Filesystem
•Taobao Filesystem
•Hadoop Distributed Filesystem
•Mogile Filesystem
13年9⽉月16⽇日 星期⼀一
分布式⽂文件系统
•Google Filesystem
•Taobao Filesystem
•Hadoop Distributed Filesystem
•Mogile Filesystem
•Moose Filesystem
13年9⽉月1...
Google File system
13年9⽉月16⽇日 星期⼀一
Why
13年9⽉月16⽇日 星期⼀一
Why
•Google需要⼀一个分布式⽂文件系统
•在廉价和不可靠的机器上存储巨量数据
13年9⽉月16⽇日 星期⼀一
Why
•Google需要⼀一个分布式⽂文件系统
•在廉价和不可靠的机器上存储巨量数据
•为什么不使⽤用已经存在的⽂文件系统?
•Google有和其他任何⼈人都不相同的问题
•GFS 专为Google应⽤用和负载设计
•Google应⽤用专为G...
GFS 设计思路
13年9⽉月16⽇日 星期⼀一
GFS 设计思路
• ⺫⽬目标
• 性能、可伸缩性、可靠性、可⽤用性
13年9⽉月16⽇日 星期⼀一
GFS 设计思路
• ⺫⽬目标
• 性能、可伸缩性、可靠性、可⽤用性
• 应⽤用特定场景
• 组件故障是常态⽽而不是异常
• 处理的⽂文件都是巨型的
• ⼤大部分⽂文件的变化都是追加⽽而不是覆盖,随机写⼏几
乎不存在。
13年9⽉月16⽇日 星...
前提设定
13年9⽉月16⽇日 星期⼀一
前提设定
• 组件失败是常态
13年9⽉月16⽇日 星期⼀一
前提设定
• 组件失败是常态
• 存储的绝⼤大部分都是⼤大⽂文件
• ⽂文件数在百万级别
• 每个⽂文件都在100M以上,⼀一般都是GB级别
13年9⽉月16⽇日 星期⼀一
前提设定
• 组件失败是常态
• 存储的绝⼤大部分都是⼤大⽂文件
• ⽂文件数在百万级别
• 每个⽂文件都在100M以上,⼀一般都是GB级别
• ⽂文件只写⼀一次,绝⼤大部分是追加
13年9⽉月16⽇日 星期⼀一
前提设定
• 组件失败是常态
• 存储的绝⼤大部分都是⼤大⽂文件
• ⽂文件数在百万级别
• 每个⽂文件都在100M以上,⼀一般都是GB级别
• ⽂文件只写⼀一次,绝⼤大部分是追加
• ⼤大量的流式读
13年9⽉月16⽇日 星期⼀一
前提设定
• 组件失败是常态
• 存储的绝⼤大部分都是⼤大⽂文件
• ⽂文件数在百万级别
• 每个⽂文件都在100M以上,⼀一般都是GB级别
• ⽂文件只写⼀一次,绝⼤大部分是追加
• ⼤大量的流式读
• 低延迟,⾼高吞吐
13年9⽉月16⽇日...
GFS 架构
http://research.google.com/archive/gfs-sosp2003.pdf
13年9⽉月16⽇日 星期⼀一
GFS 架构
http://research.google.com/archive/gfs-sosp2003.pdf
单⼀一,维护所有元
数据,负责主导⼀一些影
响整个系统的活动
13年9⽉月16⽇日 星期⼀一
GFS 架构
http://research.google.com/archive/gfs-sosp2003.pdf
单⼀一,维护所有元
数据,负责主导⼀一些影
响整个系统的活动
多节点,将chunk存储为
Linux⽂文件
13年9⽉月16⽇...
GFS 架构
http://research.google.com/archive/gfs-sosp2003.pdf
单⼀一,维护所有元
数据,负责主导⼀一些影
响整个系统的活动
多节点,将chunk存储为
Linux⽂文件
专⽤用客户端,类似...
GFS: Master
13年9⽉月16⽇日 星期⼀一
GFS: Master
• 存储元数据
13年9⽉月16⽇日 星期⼀一
GFS: Master
• 存储元数据
• 命名空间管理、锁定
13年9⽉月16⽇日 星期⼀一
GFS: Master
• 存储元数据
• 命名空间管理、锁定
• 和chunkservers的周期通信
• 发出指令,状态收集,集群健康追踪
13年9⽉月16⽇日 星期⼀一
GFS: Master
• 存储元数据
• 命名空间管理、锁定
• 和chunkservers的周期通信
• 发出指令,状态收集,集群健康追踪
• Chunk创建、重复制、重平衡
• 在空间和访问速度之间平衡
• 传播副本到不同机架,以防⽌止关...
GFS: Master
• 存储元数据
• 命名空间管理、锁定
• 和chunkservers的周期通信
• 发出指令,状态收集,集群健康追踪
• Chunk创建、重复制、重平衡
• 在空间和访问速度之间平衡
• 传播副本到不同机架,以防⽌止关...
GFS: Master
• 存储元数据
• 命名空间管理、锁定
• 和chunkservers的周期通信
• 发出指令,状态收集,集群健康追踪
• Chunk创建、重复制、重平衡
• 在空间和访问速度之间平衡
• 传播副本到不同机架,以防⽌止关...
GFS:Chunkserver
13年9⽉月16⽇日 星期⼀一
GFS:Chunkserver
• 把64MB⼀一个的chunk当做普通Linux⽂文件存储到
本地磁盘,每个chunk都有版本号以及校验和
(checksum)
13年9⽉月16⽇日 星期⼀一
GFS:Chunkserver
• 把64MB⼀一个的chunk当做普通Linux⽂文件存储到
本地磁盘,每个chunk都有版本号以及校验和
(checksum)
• 按照chunk句柄和字节范围读写chunk数据
13年9⽉月16⽇日 星期⼀一
GFS:Chunkserver
• 把64MB⼀一个的chunk当做普通Linux⽂文件存储到
本地磁盘,每个chunk都有版本号以及校验和
(checksum)
• 按照chunk句柄和字节范围读写chunk数据
• 复制可配置的chunk数...
GFS:Chunkserver
• 把64MB⼀一个的chunk当做普通Linux⽂文件存储到
本地磁盘,每个chunk都有版本号以及校验和
(checksum)
• 按照chunk句柄和字节范围读写chunk数据
• 复制可配置的chunk数...
GFS: Client
13年9⽉月16⽇日 星期⼀一
GFS: Client
•使⽤用GFS的客户端API,类似传统⽂文件系统
API
13年9⽉月16⽇日 星期⼀一
GFS: Client
•使⽤用GFS的客户端API,类似传统⽂文件系统
API
•发出控制请求给master server
13年9⽉月16⽇日 星期⼀一
GFS: Client
•使⽤用GFS的客户端API,类似传统⽂文件系统
API
•发出控制请求给master server
•发送数据请求到chunk servers
13年9⽉月16⽇日 星期⼀一
GFS: Client
•使⽤用GFS的客户端API,类似传统⽂文件系统
API
•发出控制请求给master server
•发送数据请求到chunk servers
•缓存元数据(时效性)
13年9⽉月16⽇日 星期⼀一
GFS: Client
•使⽤用GFS的客户端API,类似传统⽂文件系统
API
•发出控制请求给master server
•发送数据请求到chunk servers
•缓存元数据(时效性)
•不缓存⽂文件数据
13年9⽉月16⽇日 星期⼀一
GFS: metadata
13年9⽉月16⽇日 星期⼀一
GFS: metadata
• 全局metadata保存在master
• ⽂文件和chunk命名空间
• ⽂文件到chunk的映射
• 每个chunk的副本位置
13年9⽉月16⽇日 星期⼀一
GFS: metadata
• 全局metadata保存在master
• ⽂文件和chunk命名空间
• ⽂文件到chunk的映射
• 每个chunk的副本位置
• 保存在内存中(≈64Bytes /chunk)
• 快速
• 更容易访问
1...
GFS: metadata
• 全局metadata保存在master
• ⽂文件和chunk命名空间
• ⽂文件到chunk的映射
• 每个chunk的副本位置
• 保存在内存中(≈64Bytes /chunk)
• 快速
• 更容易访问
•...
Client Read
13年9⽉月16⽇日 星期⼀一
Client Read
• Client发送给Master:
• read(file name,chunk index)
13年9⽉月16⽇日 星期⼀一
Client Read
• Client发送给Master:
• read(file name,chunk index)
• Master回应:
• chunk ID,chunk version number,locations of repl...
Client Read
• Client发送给Master:
• read(file name,chunk index)
• Master回应:
• chunk ID,chunk version number,locations of repl...
Client Read
• Client发送给Master:
• read(file name,chunk index)
• Master回应:
• chunk ID,chunk version number,locations of repl...
Client Write
图例:
控制流
数据流
13年9⽉月16⽇日 星期⼀一
Client Write
Client
图例:
控制流
数据流
13年9⽉月16⽇日 星期⼀一
Client Write
Client Master
step 1
图例:
控制流
数据流
13年9⽉月16⽇日 星期⼀一
Client Write
Client Master
step 1
2
图例:
控制流
数据流
13年9⽉月16⽇日 星期⼀一
Client Write
Client Master
Secondary
Replica A
Primary
Replica
Secondary
Replica B
step 1
2
3
图例:
控制流
数据流
13年9⽉月16⽇日 星期⼀一
Client Write
Client Master
Secondary
Replica A
Primary
Replica
Secondary
Replica B
step 1
2
3
4
图例:
控制流
数据流
13年9⽉月16⽇日 星期⼀一
Client Write
Client Master
Secondary
Replica A
Primary
Replica
Secondary
Replica B
step 1
2
3
4
5
图例:
控制流
数据流
13年9⽉月16⽇日 星...
Client Write
Client Master
Secondary
Replica A
Primary
Replica
Secondary
Replica B
step 1
2
3
4
5
6
6
图例:
控制流
数据流
13年9⽉月16...
Client Write
Client Master
Secondary
Replica A
Primary
Replica
Secondary
Replica B
step 1
2
3
4
5
6
6
7
图例:
控制流
数据流
13年9⽉月...
Client Record Append
13年9⽉月16⽇日 星期⼀一
Client Record Append
• Client提供追加的数据
13年9⽉月16⽇日 星期⼀一
Client Record Append
• Client提供追加的数据
• GFS原⼦子⽅方式追加到⽂文件
• GFS选择偏移,⼀一般是⽂文件末尾
• ⽀支持并⾏行写
13年9⽉月16⽇日 星期⼀一
Client Record Append
• Client提供追加的数据
• GFS原⼦子⽅方式追加到⽂文件
• GFS选择偏移,⼀一般是⽂文件末尾
• ⽀支持并⾏行写
• Google应⽤用程序重度使⽤用
• 多⽣生产者-单消费者队列
13年...
GFS 松散⼀一致性模型
Write Record Append
Serial success defined defined
interspersed with
inconsistentConcurrent successes consist...
GFS 松散⼀一致性模型
• “Consistent” = 所有的副本有相同的值
Write Record Append
Serial success defined defined
interspersed with
inconsistent...
GFS 松散⼀一致性模型
• “Consistent” = 所有的副本有相同的值
• “Defined” = “Consistent” +可以看到完整变更的数据
Write Record Append
Serial success define...
容灾
13年9⽉月16⽇日 星期⼀一
容灾
• HA
• 快速恢复
• master和chunkserver在⼏几秒内重启完毕
• chunk 复制
• 默认3份,不同命名空间可以复制不同版本
• shadow master
13年9⽉月16⽇日 星期⼀一
容灾
• HA
• 快速恢复
• master和chunkserver在⼏几秒内重启完毕
• chunk 复制
• 默认3份,不同命名空间可以复制不同版本
• shadow master
• 数据完整性
• 针对chunk,每64KB块做⼀一个...
GFS 实例
集群 A B
chunkserver数 342 227
有效磁盘空间
已⽤用磁盘空间
72 TB
55 TB
180 TB
155 TB
⽂文件数
⽆无效⽂文件数
chunk数
735 k
22 k
992 k
737 k
232...
Taobao Filesystem
13年9⽉月16⽇日 星期⼀一
Taobao Filesystem
13年9⽉月16⽇日 星期⼀一
Taobao Filesystem
•2007年6⽉月创建
13年9⽉月16⽇日 星期⼀一
Taobao Filesystem
•2007年6⽉月创建
•⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网
服务
13年9⽉月16⽇日 星期⼀一
Taobao Filesystem
•2007年6⽉月创建
•⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网
服务
•为海量⾮非结构化数据优化
13年9⽉月16⽇日 星期⼀一
Taobao Filesystem
•2007年6⽉月创建
•⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网
服务
•为海量⾮非结构化数据优化
•⽀支持海量⼩小⽂文件存储
13年9⽉月16⽇日 星期⼀一
TFS-动机
13年9⽉月16⽇日 星期⼀一
TFS-动机
• 系统需求
• 淘宝的影响越来越⼤大,数据的安全越来越重要
• 数据存储量每年2倍的速度增⻓长
13年9⽉月16⽇日 星期⼀一
TFS-动机
• 系统需求
• 淘宝的影响越来越⼤大,数据的安全越来越重要
• 数据存储量每年2倍的速度增⻓长
• 商⽤用存储产品
• 对⼩小⽂文件的存储⽆无法优化
• ⽂文件数量⼤大,NAS⽆无法⽀支持
• 连接的服务器越来越多,⺴⽹网络连接...
TFS - 架构
http://code.taobao.org/p/tfs/wiki/intro/
13年9⽉月16⽇日 星期⼀一
TFS - 特性
13年9⽉月16⽇日 星期⼀一
TFS - 特性
• 集群由⼀一对NameServer和多台DataServer构成
13年9⽉月16⽇日 星期⼀一
TFS - 特性
• 集群由⼀一对NameServer和多台DataServer构成
• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB
⼀一个block)
13年9⽉月16⽇日 星期⼀一
TFS - 特性
• 集群由⼀一对NameServer和多台DataServer构成
• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB
⼀一个block)
• block有多个副本
13年9⽉月16⽇日 星期⼀一
TFS - 特性
• 集群由⼀一对NameServer和多台DataServer构成
• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB
⼀一个block)
• block有多个副本
• DataServer上⽤用Linux⽂文件系统存...
TFS - 特性
• 集群由⼀一对NameServer和多台DataServer构成
• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB
⼀一个block)
• block有多个副本
• DataServer上⽤用Linux⽂文件系统存...
TFS - 特性
• 集群由⼀一对NameServer和多台DataServer构成
• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB
⼀一个block)
• block有多个副本
• DataServer上⽤用Linux⽂文件系统存...
TFS - ⽂文件名结构
13年9⽉月16⽇日 星期⼀一
TFS - ⽂文件名结构
• ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节
13年9⽉月16⽇日 星期⼀一
TFS - ⽂文件名结构
• ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节
• ⽂文件 = T+[1-9]+encode(<block_id> + <file_id>) + hash(.<suffix>)
13年9⽉月16⽇日...
TFS - ⽂文件名结构
• ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节
• ⽂文件 = T+[1-9]+encode(<block_id> + <file_id>) + hash(.<suffix>)
• ⽂文件名由客户端...
Nameserver职责
13年9⽉月16⽇日 星期⼀一
Nameserver职责
•管理维护Block和DataServer的相关信息
13年9⽉月16⽇日 星期⼀一
Nameserver职责
•管理维护Block和DataServer的相关信息
•负责Block的创建、删除、复制、均衡、
整理
13年9⽉月16⽇日 星期⼀一
Nameserver职责
•管理维护Block和DataServer的相关信息
•负责Block的创建、删除、复制、均衡、
整理
•不负责实际数据的读写
13年9⽉月16⽇日 星期⼀一
DataServer 职责
13年9⽉月16⽇日 星期⼀一
DataServer 职责
•负责实际数据的存储和读写
13年9⽉月16⽇日 星期⼀一
TFS - 元数据
13年9⽉月16⽇日 星期⼀一
TFS - Read
13年9⽉月16⽇日 星期⼀一
TFS - Write
13年9⽉月16⽇日 星期⼀一
TFS - 容灾
13年9⽉月16⽇日 星期⼀一
TFS - 容灾
• 集群容灾
• TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。
主集群把所有操作重放到辅集群
13年9⽉月16⽇日 星期⼀一
TFS - 容灾
• 集群容灾
• TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。
主集群把所有操作重放到辅集群
• NameServer容灾
• HA架构,使⽤用vip,主从同步
13年9⽉月16⽇日 星期⼀一
TFS - 容灾
• 集群容灾
• TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。
主集群把所有操作重放到辅集群
• NameServer容灾
• HA架构,使⽤用vip,主从同步
• DataServer容灾
• Block多副本,跨⺴...
Hadoop Distributed Filesystem
http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf
13年9⽉月16⽇日 星期⼀一
Hadoop Distributed Filesystem
13年9⽉月16⽇日 星期⼀一
Hadoop Distributed Filesystem
•灵感来⾃自Goole Filesystem
13年9⽉月16⽇日 星期⼀一
Hadoop Distributed Filesystem
•灵感来⾃自Goole Filesystem
•⾼高容灾特性
13年9⽉月16⽇日 星期⼀一
Hadoop Distributed Filesystem
•灵感来⾃自Goole Filesystem
•⾼高容灾特性
•设计为可部署在廉价硬件上
13年9⽉月16⽇日 星期⼀一
Hadoop Distributed Filesystem
•灵感来⾃自Goole Filesystem
•⾼高容灾特性
•设计为可部署在廉价硬件上
•为Apache Hadoop的⼦子项⺫⽬目
13年9⽉月16⽇日 星期⼀一
HDFS - 架构
!
13年9⽉月16⽇日 星期⼀一
HDFS - NameNode
13年9⽉月16⽇日 星期⼀一
HDFS - NameNode
•⼀一个集群中只有⼀一个,简化设计
13年9⽉月16⽇日 星期⼀一
HDFS - NameNode
•⼀一个集群中只有⼀一个,简化设计
•负责管理⽂文件系统的名字空间并协调客户
对⽂文件的访问
13年9⽉月16⽇日 星期⼀一
HDFS - NameNode
•⼀一个集群中只有⼀一个,简化设计
•负责管理⽂文件系统的名字空间并协调客户
对⽂文件的访问
•执⾏行⽂文件系统的名字空间操作
(create,open,rename)
13年9⽉月16⽇日 星期⼀一
HDFS - NameNode
•⼀一个集群中只有⼀一个,简化设计
•负责管理⽂文件系统的名字空间并协调客户
对⽂文件的访问
•执⾏行⽂文件系统的名字空间操作
(create,open,rename)
•管理数据块到数据节点的映射
13年9⽉月...
HDFS - DataNode(s)
13年9⽉月16⽇日 星期⼀一
HDFS - DataNode(s)
•⼀一个服务节点上部署⼀一个DataNode
13年9⽉月16⽇日 星期⼀一
HDFS - DataNode(s)
•⼀一个服务节点上部署⼀一个DataNode
•负责该物理节点上的存储管理
13年9⽉月16⽇日 星期⼀一
HDFS - DataNode(s)
•⼀一个服务节点上部署⼀一个DataNode
•负责该物理节点上的存储管理
•负责提供客户的读写请求
13年9⽉月16⽇日 星期⼀一
HDFS - DataNode(s)
•⼀一个服务节点上部署⼀一个DataNode
•负责该物理节点上的存储管理
•负责提供客户的读写请求
•根据NameNode的指令执⾏行数据块的创
建、删除、复制⼯工作。
13年9⽉月16⽇日 星期⼀一
HDFS - 数据副本
13年9⽉月16⽇日 星期⼀一
HDFS - 数据副本
• ⽂文件块通过复制保证容错
13年9⽉月16⽇日 星期⼀一
HDFS - 数据副本
• ⽂文件块通过复制保证容错
• ⽂文件块⼤大⼩小及副本数量可
配置
13年9⽉月16⽇日 星期⼀一
HDFS - 数据副本
• ⽂文件块通过复制保证容错
• ⽂文件块⼤大⼩小及副本数量可
配置
• 平衡副本位置对读写、⺴⽹网
络传输的影响
13年9⽉月16⽇日 星期⼀一
HDFS -健壮性
13年9⽉月16⽇日 星期⼀一
HDFS -健壮性
•DataNode磁盘故障,⼼心跳和重复制
13年9⽉月16⽇日 星期⼀一
HDFS -健壮性
•DataNode磁盘故障,⼼心跳和重复制
•机群的重平衡
13年9⽉月16⽇日 星期⼀一
HDFS -健壮性
•DataNode磁盘故障,⼼心跳和重复制
•机群的重平衡
•数据完整性
13年9⽉月16⽇日 星期⼀一
HDFS -健壮性
•DataNode磁盘故障,⼼心跳和重复制
•机群的重平衡
•数据完整性
•元数据磁盘失效
13年9⽉月16⽇日 星期⼀一
HDFS -健壮性
•DataNode磁盘故障,⼼心跳和重复制
•机群的重平衡
•数据完整性
•元数据磁盘失效
•快照(将来⽀支持)
13年9⽉月16⽇日 星期⼀一
Mogile Filesystem
13年9⽉月16⽇日 星期⼀一
MogileFS 架构
Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored)
Tracker's
database
(MySQL)
13年9⽉月16⽇日 星期⼀一
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored)
Tracker's
database
(MySQL)
13年9⽉月...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败 Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored)
Tracker's
database
(MySQ...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored)
Tracker's
dat...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
Client(API)
Trackers
(mogilefsd)
Storage nodes
(...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
Client(API)
Trackers
(mogilefsd...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
Client(API)
Trackers...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
• 不能追加写、随机写
Client(A...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
• 不能追加写、随机写
• Tracke...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
• 不能追加写、随机写
• Tracke...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
• 不能追加写、随机写
• Tracke...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored)
Tracker's
database
(MySQL)
13年9⽉月...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败 Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored)
Tracker's
database
(MySQ...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored)
Tracker's
dat...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
Client(API)
Trackers
(mogilefsd)
Storage nodes
(mogstored...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
Client(API)
Trackers
(mogilefsd)
Storage nodes
(...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
Client(API)
Trackers
(mogilefsd...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
Client(API)
Trackers...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
• 不能追加写、随机写
Client(A...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
• 不能追加写、随机写
• Tracke...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
• 不能追加写、随机写
• Tracke...
MogileFS 架构
• 应⽤用层:⽆无需特殊核⼼心组件
• ⽆无单点失败
• ⾃自动⽂文件复制
• 传输中⽴立,⽆无特殊协议
• 简单命名空间
• Shared-Nothing
• non-RAID
• 不能追加写、随机写
• Tracke...
MogileFS ⾼高可⽤用
http://www.slideshare.net/PhilippeJulio/mogilefs-architecture
0 0'
Database
Metadata
Active
Cluster
Node
Pa...
MogileFS Internal
MogileFS
Domain(key的名字空间)
Class(最⼩小复制单元)
http://www.php-oa.com/2010/09/26/perl-mogilefs-3.html
13年9⽉月16⽇...
MogileFS Internal
• Domain
• ⼀一个MogileFS可以有多个
Domain,
• ⽤用来存放不同⽂文件(⼤大
⼩小、类型)
• 同⼀一个Domain内,可以必
须唯⼀一
• 不同Domain内,key可以
相同
M...
MogileFS Internal
• Domain
• ⼀一个MogileFS可以有多个
Domain,
• ⽤用来存放不同⽂文件(⼤大
⼩小、类型)
• 同⼀一个Domain内,可以必
须唯⼀一
• 不同Domain内,key可以
相同
•...
MogileFS Internal
• Domain
• ⼀一个MogileFS可以有多个
Domain,
• ⽤用来存放不同⽂文件(⼤大
⼩小、类型)
• 同⼀一个Domain内,可以必
须唯⼀一
• 不同Domain内,key可以
相同
•...
MogileFS 数据流
13年9⽉月16⽇日 星期⼀一
MogileFS 数据流
• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的
机器). 做⼀一个 “create_open” 请求
13年9⽉月16⽇日 星期⼀一
MogileFS 数据流
• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的
机器). 做⼀一个 “create_open” 请求
• tracker 做⼀一些负载均衡(load balancing)...
MogileFS 数据流
• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的
机器). 做⼀一个 “create_open” 请求
• tracker 做⼀一些负载均衡(load balancing)...
MogileFS 数据流
• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的
机器). 做⼀一个 “create_open” 请求
• tracker 做⼀一些负载均衡(load balancing)...
MogileFS 数据流
• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的
机器). 做⼀一个 “create_open” 请求
• tracker 做⼀一些负载均衡(load balancing)...
MogileFS 数据流
• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的
机器). 做⼀一个 “create_open” 请求
• tracker 做⼀一些负载均衡(load balancing)...
MogileFS 数据流
• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的
机器). 做⼀一个 “create_open” 请求
• tracker 做⼀一些负载均衡(load balancing)...
MogileFS 数据流
• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的
机器). 做⼀一个 “create_open” 请求
• tracker 做⼀一些负载均衡(load balancing)...
Moose Filesystem
13年9⽉月16⽇日 星期⼀一
MooseFS 特性
• MooseFS可以充当类Unix的⽂文件系统
• 层次结构(⺫⽬目录树)
• 存储POSIX⽂文件属性(权限、最后访问时间,修改时间等)
• ⽀支持特殊⽂文件(块设备、字符设备、管道以及套接字)
• 符号链接、硬链接
...
MooseFS 组件
http://www.moosefs.org/
13年9⽉月16⽇日 星期⼀一
MooseFS 组件
• Manager Server (master server)
• 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包
括⼤大⼩小、属性、⽂文件位置)
http://www.moosefs.org/
13年9⽉月...
MooseFS 组件
• Manager Server (master server)
• 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包
括⼤大⼩小、属性、⽂文件位置)
• Data servers (chunk server)
...
MooseFS 组件
• Manager Server (master server)
• 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包
括⼤大⼩小、属性、⽂文件位置)
• Data servers (chunk server)
...
MooseFS 组件
• Manager Server (master server)
• 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包
括⼤大⼩小、属性、⽂文件位置)
• Data servers (chunk server)
...
MooseFS 读⽂文件
13年9⽉月16⽇日 星期⼀一
MooseFS 写⽂文件
13年9⽉月16⽇日 星期⼀一
参考资料 (1/2)
1. http://www.google.com.hk
2. http://hadoop.apache.org
3. http://www.slideshare.net/quipo/nosql-databases-why-...
参考资料 (2/2)
13年9⽉月16⽇日 星期⼀一
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
13年9⽉月16⽇日 星期⼀一
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
15.http://www.importnew.com/3491.html
13年9⽉月16⽇日 星期⼀一
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
15.http://www.importnew.com/3491.html
16.http://hadoop.apache.org/docs...
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
15.http://www.importnew.com/3491.html
16.http://hadoop.apache.org/docs...
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
15.http://www.importnew.com/3491.html
16.http://hadoop.apache.org/docs...
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
15.http://www.importnew.com/3491.html
16.http://hadoop.apache.org/docs...
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
15.http://www.importnew.com/3491.html
16.http://hadoop.apache.org/docs...
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
15.http://www.importnew.com/3491.html
16.http://hadoop.apache.org/docs...
参考资料 (2/2)
14.http://www.nosqlnotes.net/archives/71
15.http://www.importnew.com/3491.html
16.http://hadoop.apache.org/docs...
⼤大数据之
分布式⽂文件系统
Why, what and how
好⾖豆⺴⽹网
赵卫国
@mlsx
2013-9-14
13年9⽉月16⽇日 星期⼀一
Upcoming SlideShare
Loading in …5
×

Distributed filesystem

1,067 views

Published on

this slides introduce the concept of distributed filesystem ,the CAP theory,consistent hashing algorithm。
then go deep into internal of google filesystem.
at last,slides introduces taobao filesystem,mogile filesystem and moose filesystem.

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,067
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Distributed filesystem

  1. 1. ⼤大数据之 分布式⽂文件系统 Why, what and how 好⾖豆⺴⽹网 赵卫国 @mlsx 2013-9-14 13年9⽉月16⽇日 星期⼀一
  2. 2. 13年9⽉月16⽇日 星期⼀一
  3. 3. Google > 100 PB > 1T indexed URLs > 3 million servers > 7.2B PV/day 13年9⽉月16⽇日 星期⼀一
  4. 4. 13年9⽉月16⽇日 星期⼀一
  5. 5. Facebook > 1 billion users > 300PB; +>500TB/day >35% of world’s photographs 13年9⽉月16⽇日 星期⼀一
  6. 6. 13年9⽉月16⽇日 星期⼀一
  7. 7. YouTube > 1000PB +> 72 hours/minute > 37 million hours/year > 4 billion views/day 13年9⽉月16⽇日 星期⼀一
  8. 8. 13年9⽉月16⽇日 星期⼀一
  9. 9. Twitter > 124 B tweets/year > 390M/day ~4500/sec 13年9⽉月16⽇日 星期⼀一
  10. 10. 13年9⽉月16⽇日 星期⼀一
  11. 11. World Population >7,057,065,162 13年9⽉月16⽇日 星期⼀一
  12. 12. ⼤大数据是 http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1 13年9⽉月16⽇日 星期⼀一
  13. 13. ⼤大数据是 http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1 13年9⽉月16⽇日 星期⼀一
  14. 14. ⼤大数据是 + http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1 13年9⽉月16⽇日 星期⼀一
  15. 15. ⼤大数据是 + + http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1 13年9⽉月16⽇日 星期⼀一
  16. 16. ⼤大数据是 + + http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1 CTO of CIA 13年9⽉月16⽇日 星期⼀一
  17. 17. ⼤大数据的价值 http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation 13年9⽉月16⽇日 星期⼀一
  18. 18. ⼤大数据的价值 美国医疗服务 • 每年价值3000亿美元 • ⼤大约0.7%的年⽣生产率增⻓长 http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation 13年9⽉月16⽇日 星期⼀一
  19. 19. ⼤大数据的价值 美国医疗服务 • 每年价值3000亿美元 • ⼤大约0.7%的年⽣生产率增⻓长 欧洲公共部门管理 • 每年价值2500亿欧元 • ⼤大约0.5%的年⽣生产率增⻓长 http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation 13年9⽉月16⽇日 星期⼀一
  20. 20. ⼤大数据的价值 美国医疗服务 • 每年价值3000亿美元 • ⼤大约0.7%的年⽣生产率增⻓长 欧洲公共部门管理 • 每年价值2500亿欧元 • ⼤大约0.5%的年⽣生产率增⻓长 制造业 • 产品开发、组装成本降 低达50% • 运⾏行资本降低达7% http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation 13年9⽉月16⽇日 星期⼀一
  21. 21. ⼤大数据的价值 美国医疗服务 • 每年价值3000亿美元 • ⼤大约0.7%的年⽣生产率增⻓长 欧洲公共部门管理 • 每年价值2500亿欧元 • ⼤大约0.5%的年⽣生产率增⻓长 全球个人位置数据 • 服务提供商收⼊入1000亿美元或以上 • 最终⽤用户价值达7000亿美元 制造业 • 产品开发、组装成本降 低达50% • 运⾏行资本降低达7% http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation 13年9⽉月16⽇日 星期⼀一
  22. 22. ⼤大数据的价值 美国医疗服务 • 每年价值3000亿美元 • ⼤大约0.7%的年⽣生产率增⻓长 欧洲公共部门管理 • 每年价值2500亿欧元 • ⼤大约0.5%的年⽣生产率增⻓长 全球个人位置数据 • 服务提供商收⼊入1000亿美元或以上 • 最终⽤用户价值达7000亿美元 美国零售业 • 可能的净利润增⻓长⽔水平为60%或以上 • 0.5~1.0%的年⽣生产率增⻓长 制造业 • 产品开发、组装成本降 低达50% • 运⾏行资本降低达7% http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation 13年9⽉月16⽇日 星期⼀一
  23. 23. ⼤大数据的价值 美国医疗服务 • 每年价值3000亿美元 • ⼤大约0.7%的年⽣生产率增⻓长 欧洲公共部门管理 • 每年价值2500亿欧元 • ⼤大约0.5%的年⽣生产率增⻓长 全球个人位置数据 • 服务提供商收⼊入1000亿美元或以上 • 最终⽤用户价值达7000亿美元 美国零售业 • 可能的净利润增⻓长⽔水平为60%或以上 • 0.5~1.0%的年⽣生产率增⻓长 制造业 • 产品开发、组装成本降 低达50% • 运⾏行资本降低达7% “大数据在政府公共服务、医疗服务、零售业、制造业、以及设计个人位置服务等领域都将带来可 观的价值” -- 麦肯锡全球研究院 http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation 13年9⽉月16⽇日 星期⼀一
  24. 24. ⼤大数据的特征 13年9⽉月16⽇日 星期⼀一
  25. 25. ⼤大数据的特征 “所涉及的数据量规模巨⼤大到⽆无法通过⺫⽬目前主流软件⼯工具,在合理时间内达到获取、管理、处理、 并整理成为帮助企业经营决策更积极⺫⽬目的的信息的程度” - 中⽂文维基百科 13年9⽉月16⽇日 星期⼀一
  26. 26. ⼤大数据的特征 “所涉及的数据量规模巨⼤大到⽆无法通过⺫⽬目前主流软件⼯工具,在合理时间内达到获取、管理、处理、 并整理成为帮助企业经营决策更积极⺫⽬目的的信息的程度” - 中⽂文维基百科 13年9⽉月16⽇日 星期⼀一
  27. 27. ⼤大数据来源 13年9⽉月16⽇日 星期⼀一
  28. 28. ⼤大数据来源 •互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、 电⼦子商务 13年9⽉月16⽇日 星期⼀一
  29. 29. ⼤大数据来源 •互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、 电⼦子商务 •物联⺴⽹网、移动设备、终端、个⼈人位置、传 感器采集的数据 13年9⽉月16⽇日 星期⼀一
  30. 30. ⼤大数据来源 •互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、 电⼦子商务 •物联⺴⽹网、移动设备、终端、个⼈人位置、传 感器采集的数据 •通信和互联⺴⽹网运⾏行商 13年9⽉月16⽇日 星期⼀一
  31. 31. ⼤大数据来源 •互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、 电⼦子商务 •物联⺴⽹网、移动设备、终端、个⼈人位置、传 感器采集的数据 •通信和互联⺴⽹网运⾏行商 •天⽂文、⽓气象、医疗数据 13年9⽉月16⽇日 星期⼀一
  32. 32. ⼤大数据带来的挑战 http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg 13年9⽉月16⽇日 星期⼀一
  33. 33. ⼤大数据带来的挑战 • 数据采集 • 数据存储 • 数据搜索 • 数据共享 • 数据传输 • 数据分析 • 数据可视化 http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg 13年9⽉月16⽇日 星期⼀一
  34. 34. ⼤大数据带来的挑战 http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg 数据如何存储 13年9⽉月16⽇日 星期⼀一
  35. 35. 传统存储 13年9⽉月16⽇日 星期⼀一
  36. 36. 传统存储 • 问题 13年9⽉月16⽇日 星期⼀一
  37. 37. 传统存储 • 问题 • 纵向扩展受阵列空间限制 13年9⽉月16⽇日 星期⼀一
  38. 38. 传统存储 • 问题 • 纵向扩展受阵列空间限制 • 横向扩展受交换设备限制 13年9⽉月16⽇日 星期⼀一
  39. 39. 传统存储 • 问题 • 纵向扩展受阵列空间限制 • 横向扩展受交换设备限制 • 节点受⽂文件系统限制 13年9⽉月16⽇日 星期⼀一
  40. 40. 分布式存储 Interconnection Network Node 1 Node 1 Node 1... 13年9⽉月16⽇日 星期⼀一
  41. 41. 分布式存储 • 挑战 • 节点间通信 • 数据存储 • 数据空间平衡 • 容错 • ⽂文件系统⽀支持 Interconnection Network Node 1 Node 1 Node 1... 13年9⽉月16⽇日 星期⼀一
  42. 42. 分布式⽂文件系统 设计⺫⽬目标 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  43. 43. 分布式⽂文件系统 设计⺫⽬目标 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  44. 44. 分布式⽂文件系统 设计⺫⽬目标 •访问透明 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  45. 45. 分布式⽂文件系统 设计⺫⽬目标 •访问透明 •位置透明 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  46. 46. 分布式⽂文件系统 设计⺫⽬目标 •访问透明 •位置透明 •并发透明 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  47. 47. 分布式⽂文件系统 设计⺫⽬目标 •访问透明 •位置透明 •并发透明 •失效透明 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  48. 48. 分布式⽂文件系统 设计⺫⽬目标 •访问透明 •位置透明 •并发透明 •失效透明 •硬件透明 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  49. 49. 分布式⽂文件系统 设计⺫⽬目标 •访问透明 •位置透明 •并发透明 •失效透明 •硬件透明 •可扩展性 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  50. 50. 分布式⽂文件系统 设计⺫⽬目标 •访问透明 •位置透明 •并发透明 •失效透明 •硬件透明 •可扩展性 •复制透明 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  51. 51. 分布式⽂文件系统 设计⺫⽬目标 •访问透明 •位置透明 •并发透明 •失效透明 •硬件透明 •可扩展性 •复制透明 •迁移透明 “分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的, 客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文 件系统来处理⽂文件定位、数据传输以及更多的功能:” - 中⽂文维基百科 http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems 13年9⽉月16⽇日 星期⼀一
  52. 52. ⼀一些理论准备 http://tinyurl.com/nqdsayj 13年9⽉月16⽇日 星期⼀一
  53. 53. CAP理论(Brewer的猜想) 2000 Prof.Eric Brewer,PoDC Conference Keynote 2002 Seth Gilbert and Nancy Lynch ACM SIGACT News 33(2) http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf 13年9⽉月16⽇日 星期⼀一
  54. 54. CAP理论(Brewer的猜想) 2000 Prof.Eric Brewer,PoDC Conference Keynote 2002 Seth Gilbert and Nancy Lynch ACM SIGACT News 33(2) “ Of three properties of shared-data systems - data Consistency,system Availability and tolerance to network Partitions - only two can be achieved at any given moment in time.” http://www.cs.berkeley.edu/~brewer/cs262b-2004/PODC-keynote.pdf http://lpd.epfl.ch/sgilbert/pubs/BrewersConjecture-SigAct.pdf 13年9⽉月16⽇日 星期⼀一
  55. 55. CAP 13年9⽉月16⽇日 星期⼀一
  56. 56. • ⼀一致性(Consistency) • 任何⼀一个读操作总能读取到之前完 成的写操作结果 CAP 13年9⽉月16⽇日 星期⼀一
  57. 57. • ⼀一致性(Consistency) • 任何⼀一个读操作总能读取到之前完 成的写操作结果 • 可⽤用性(Availability) • 每⼀一个操作总是能在确定的时间内 返回 CAP 13年9⽉月16⽇日 星期⼀一
  58. 58. • ⼀一致性(Consistency) • 任何⼀一个读操作总能读取到之前完 成的写操作结果 • 可⽤用性(Availability) • 每⼀一个操作总是能在确定的时间内 返回 • 分区可容忍性(Tolerance of network Partition) • 在出现⺴⽹网络分区的情况下,仍然能 够满⾜足⼀一致性和可⽤用性 CAP 13年9⽉月16⽇日 星期⼀一
  59. 59. • ⼀一致性(Consistency) • 任何⼀一个读操作总能读取到之前完 成的写操作结果 • 可⽤用性(Availability) • 每⼀一个操作总是能在确定的时间内 返回 • 分区可容忍性(Tolerance of network Partition) • 在出现⺴⽹网络分区的情况下,仍然能 够满⾜足⼀一致性和可⽤用性 CAP pick two C A P 13年9⽉月16⽇日 星期⼀一
  60. 60. 分区容忍性-可⽤用性 http://codahale.com/you-cant-sacrifice-partition-tolerance/ http://pl.atyp.us/wordpress/?p=2521 13年9⽉月16⽇日 星期⼀一
  61. 61. 分区容忍性-可⽤用性 “The network will be allowed to lose arbitrarily many messages sent from one node to another” [...] “For a distributed system to be continuously availability,every request received by non-failing node in the system must result in a response” - Gillbert and Lynch,SIGACT 2002 http://codahale.com/you-cant-sacrifice-partition-tolerance/ http://pl.atyp.us/wordpress/?p=2521 13年9⽉月16⽇日 星期⼀一
  62. 62. 分区容忍性-可⽤用性 “The network will be allowed to lose arbitrarily many messages sent from one node to another” [...] “For a distributed system to be continuously availability,every request received by non-failing node in the system must result in a response” - Gillbert and Lynch,SIGACT 2002 http://codahale.com/you-cant-sacrifice-partition-tolerance/ http://pl.atyp.us/wordpress/?p=2521 13年9⽉月16⽇日 星期⼀一
  63. 63. 分区容忍性-可⽤用性 “The network will be allowed to lose arbitrarily many messages sent from one node to another” [...] “For a distributed system to be continuously availability,every request received by non-failing node in the system must result in a response” - Gillbert and Lynch,SIGACT 2002 http://codahale.com/you-cant-sacrifice-partition-tolerance/ http://pl.atyp.us/wordpress/?p=2521 13年9⽉月16⽇日 星期⼀一
  64. 64. 分区容忍性-可⽤用性 “The network will be allowed to lose arbitrarily many messages sent from one node to another” [...] “For a distributed system to be continuously availability,every request received by non-failing node in the system must result in a response” - Gillbert and Lynch,SIGACT 2002 http://codahale.com/you-cant-sacrifice-partition-tolerance/ http://pl.atyp.us/wordpress/?p=2521 HIGH LATENCY ≈ NETWORK PARTITION http://dbmsmusings.blogspot.com/2010/04/problems-with-cap-and-yahoos-little.html 13年9⽉月16⽇日 星期⼀一
  65. 65. ⼀一致性 http://www.allthingsdistributed.com/2008/12/eventually_consistent.html 13年9⽉月16⽇日 星期⼀一
  66. 66. ⼀一致性 • 强⼀一致性(类似ACID) http://www.allthingsdistributed.com/2008/12/eventually_consistent.html 13年9⽉月16⽇日 星期⼀一
  67. 67. ⼀一致性 • 强⼀一致性(类似ACID) • 弱⼀一致性(⽆无保证)- 不⼀一致窗⼝口 http://www.allthingsdistributed.com/2008/12/eventually_consistent.html 13年9⽉月16⽇日 星期⼀一
  68. 68. ⼀一致性 • 强⼀一致性(类似ACID) • 弱⼀一致性(⽆无保证)- 不⼀一致窗⼝口 •最终⼀一致性(⽐比如DNS) http://www.allthingsdistributed.com/2008/12/eventually_consistent.html 13年9⽉月16⽇日 星期⼀一
  69. 69. ⼀一致性 NWR模型 13年9⽉月16⽇日 星期⼀一
  70. 70. ⼀一致性 NWR模型 N = 数据副本的节点数 13年9⽉月16⽇日 星期⼀一
  71. 71. ⼀一致性 NWR模型 N = 数据副本的节点数 W = 成功写操作的最少节点数 13年9⽉月16⽇日 星期⼀一
  72. 72. ⼀一致性 NWR模型 N = 数据副本的节点数 W = 成功写操作的最少节点数 R = 成功读操作的最少节点数 13年9⽉月16⽇日 星期⼀一
  73. 73. ⼀一致性 NWR模型 N = 数据副本的节点数 W = 成功写操作的最少节点数 R = 成功读操作的最少节点数 W + R > N 13年9⽉月16⽇日 星期⼀一
  74. 74. ⼀一致性 NWR模型 N = 数据副本的节点数 W = 成功写操作的最少节点数 R = 成功读操作的最少节点数 W + R > N 强⼀一致性(通常 N=3,W=R=2) 13年9⽉月16⽇日 星期⼀一
  75. 75. ⼀一致性 NWR模型 N = 数据副本的节点数 W = 成功写操作的最少节点数 R = 成功读操作的最少节点数 W + R > N 强⼀一致性(通常 N=3,W=R=2) W + R ≤ N 13年9⽉月16⽇日 星期⼀一
  76. 76. ⼀一致性 NWR模型 N = 数据副本的节点数 W = 成功写操作的最少节点数 R = 成功读操作的最少节点数 W + R > N 强⼀一致性(通常 N=3,W=R=2) W + R ≤ N 弱⼀一致性 13年9⽉月16⽇日 星期⼀一
  77. 77. ⼀一致性 NWR模型 N = 数据副本的节点数 W = 成功写操作的最少节点数 R = 成功读操作的最少节点数 W + R > N 强⼀一致性(通常 N=3,W=R=2) W=N,R=1 最佳读 W=1,R=N 最佳写 W + R ≤ N 弱⼀一致性 13年9⽉月16⽇日 星期⼀一
  78. 78. 基于模的哈希 N1 N2 N3 N4 13年9⽉月16⽇日 星期⼀一
  79. 79. 基于模的哈希 ? N1 N2 N3 N4 13年9⽉月16⽇日 星期⼀一
  80. 80. 基于模的哈希 ? partition  =  key  %  n_servers N1 N2 N3 N4 13年9⽉月16⽇日 星期⼀一
  81. 81. 基于模的哈希 partition  =  key  %  n_servers N1 N2 N3 N4 13年9⽉月16⽇日 星期⼀一
  82. 82. 基于模的哈希 partition  =  key  %  n_servers N1 N2 N3 N4 13年9⽉月16⽇日 星期⼀一
  83. 83. 基于模的哈希 partition  =  key  %  n_servers N1 N2 N3 N4 13年9⽉月16⽇日 星期⼀一
  84. 84. 基于模的哈希 partition  =  key  %  n_servers N1 N2 N3 N4 partition  =  key  %  (n_servers  -­‐  1) 13年9⽉月16⽇日 星期⼀一
  85. 85. 基于模的哈希 partition  =  key  %  n_servers N1 N2 N3 N4 partition  =  key  %  (n_servers  -­‐  1) 当n_servers改变时,重新计算所有的资源 (i.e 节点改变时,资源需要全部重新分布) 13年9⽉月16⽇日 星期⼀一
  86. 86. ⼀一致哈希 http://en.wikipedia.org/wiki/Consistent_hashing 13年9⽉月16⽇日 星期⼀一
  87. 87. Ring (Key space) 02160 ⼀一致哈希 http://en.wikipedia.org/wiki/Consistent_hashing 13年9⽉月16⽇日 星期⼀一
  88. 88. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing 13年9⽉月16⽇日 星期⼀一
  89. 89. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F B CD 13年9⽉月16⽇日 星期⼀一
  90. 90. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F B CD 13年9⽉月16⽇日 星期⼀一
  91. 91. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F B CD 13年9⽉月16⽇日 星期⼀一
  92. 92. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F B CD 节点B hold住节点A ⾄至节点B之间的数据 13年9⽉月16⽇日 星期⼀一
  93. 93. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F B CD 13年9⽉月16⽇日 星期⼀一
  94. 94. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F CD 13年9⽉月16⽇日 星期⼀一
  95. 95. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F CD 13年9⽉月16⽇日 星期⼀一
  96. 96. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F CD 节点C此时hold住 节点A到C之间的数据 13年9⽉月16⽇日 星期⼀一
  97. 97. Ring (Key space) 02160 ⼀一致哈希 创建⼀一个针对数据以及节点的 hash函数 idx = hash(key) 协调器: 延顺指针⽅方向的第⼀一个有 效节点 http://en.wikipedia.org/wiki/Consistent_hashing A E F CD 仅影响A B节点之间的数据 节点C此时hold住 节点A到C之间的数据 13年9⽉月16⽇日 星期⼀一
  98. 98. ⼀一致哈希:复制 Ring (Key space) A B CD E F http://horicky.blogspot.com/2009/11/nosql-patterns.html 13年9⽉月16⽇日 星期⼀一
  99. 99. ⼀一致哈希:复制 Ring (Key space) A B CD E F http://horicky.blogspot.com/2009/11/nosql-patterns.html 13年9⽉月16⽇日 星期⼀一
  100. 100. ⼀一致哈希:复制 Ring (Key space) A B CD E F http://horicky.blogspot.com/2009/11/nosql-patterns.html 数据延顺指针⽅方向分布到N -1 有效节点上 13年9⽉月16⽇日 星期⼀一
  101. 101. ⼀一致哈希:复制 Ring (Key space) A E F http://horicky.blogspot.com/2009/11/nosql-patterns.html KeyAB 分布到节点 B,C,D上 数据延顺指针⽅方向分布到N -1 有效节点上 B CD 13年9⽉月16⽇日 星期⼀一
  102. 102. ⼀一致哈希:复制 Ring (Key space) A E F http://horicky.blogspot.com/2009/11/nosql-patterns.html KeyAB 分布到节点 B,C,D上 数据延顺指针⽅方向分布到N -1 有效节点上 B CD 节点hold住 KeyFA , KeyAB , KeyBC 13年9⽉月16⽇日 星期⼀一
  103. 103. ⼀一致哈希:节点改变 A B CD E F http://horicky.blogspot.com/2009/11/nosql-patterns.html 当有节点加⼊入或者离开⺴⽹网络 时,数据关系以及副本需要更 新。 ⺴⽹网络内所有副本数据保持⼀一 致。 13年9⽉月16⽇日 星期⼀一
  104. 104. ⼀一致哈希:节点改变 A CD E F http://horicky.blogspot.com/2009/11/nosql-patterns.html 当有节点加⼊入或者离开⺴⽹网络 时,数据关系以及副本需要更 新。 ⺴⽹网络内所有副本数据保持⼀一 致。 13年9⽉月16⽇日 星期⼀一
  105. 105. ⼀一致哈希:节点改变 A CD E F http://horicky.blogspot.com/2009/11/nosql-patterns.html 拷⻉贝节点E,F之间的 所有数据 当有节点加⼊入或者离开⺴⽹网络 时,数据关系以及副本需要更 新。 ⺴⽹网络内所有副本数据保持⼀一 致。 13年9⽉月16⽇日 星期⼀一
  106. 106. ⼀一致哈希:节点改变 A CD E F http://horicky.blogspot.com/2009/11/nosql-patterns.html 拷⻉贝节点E,F之间的 所有数据 拷⻉贝节点F,A 之间的所有数据 当有节点加⼊入或者离开⺴⽹网络 时,数据关系以及副本需要更 新。 ⺴⽹网络内所有副本数据保持⼀一 致。 13年9⽉月16⽇日 星期⼀一
  107. 107. ⼀一致哈希:节点改变 A CD E F http://horicky.blogspot.com/2009/11/nosql-patterns.html 拷⻉贝节点E,F之间的 所有数据 拷⻉贝节点F,A 之间的所有数据 拷⻉贝节点A,B之 间的所有数据 当有节点加⼊入或者离开⺴⽹网络 时,数据关系以及副本需要更 新。 ⺴⽹网络内所有副本数据保持⼀一 致。 13年9⽉月16⽇日 星期⼀一
  108. 108. ⼀一致哈希:数据倾斜 Ring (Key space) A B http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg 13年9⽉月16⽇日 星期⼀一
  109. 109. ⼀一致哈希:数据倾斜 Ring (Key space) A B http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg 13年9⽉月16⽇日 星期⼀一
  110. 110. ⼀一致哈希:数据倾斜 Ring (Key space) A B http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg 元芳,此事 你怎么看? ⼤大⼈人,我 看还得赶紧想别 的办法 13年9⽉月16⽇日 星期⼀一
  111. 111. ⼀一致哈希:虚拟节点 Ring (Key space) A B C D EF G H I 02160 每个物理节点⽣生成随机 tokens,然后根据token值分区 Node 1: tokens A, E, G Node 2: tokens C, F, H Node 3: tokens B, D, I 13年9⽉月16⽇日 星期⼀一
  112. 112. 分布式⽂文件系统 13年9⽉月16⽇日 星期⼀一
  113. 113. 分布式⽂文件系统 •Google Filesystem 13年9⽉月16⽇日 星期⼀一
  114. 114. 分布式⽂文件系统 •Google Filesystem •Taobao Filesystem 13年9⽉月16⽇日 星期⼀一
  115. 115. 分布式⽂文件系统 •Google Filesystem •Taobao Filesystem •Hadoop Distributed Filesystem 13年9⽉月16⽇日 星期⼀一
  116. 116. 分布式⽂文件系统 •Google Filesystem •Taobao Filesystem •Hadoop Distributed Filesystem •Mogile Filesystem 13年9⽉月16⽇日 星期⼀一
  117. 117. 分布式⽂文件系统 •Google Filesystem •Taobao Filesystem •Hadoop Distributed Filesystem •Mogile Filesystem •Moose Filesystem 13年9⽉月16⽇日 星期⼀一
  118. 118. Google File system 13年9⽉月16⽇日 星期⼀一
  119. 119. Why 13年9⽉月16⽇日 星期⼀一
  120. 120. Why •Google需要⼀一个分布式⽂文件系统 •在廉价和不可靠的机器上存储巨量数据 13年9⽉月16⽇日 星期⼀一
  121. 121. Why •Google需要⼀一个分布式⽂文件系统 •在廉价和不可靠的机器上存储巨量数据 •为什么不使⽤用已经存在的⽂文件系统? •Google有和其他任何⼈人都不相同的问题 •GFS 专为Google应⽤用和负载设计 •Google应⽤用专为GFS设计 13年9⽉月16⽇日 星期⼀一
  122. 122. GFS 设计思路 13年9⽉月16⽇日 星期⼀一
  123. 123. GFS 设计思路 • ⺫⽬目标 • 性能、可伸缩性、可靠性、可⽤用性 13年9⽉月16⽇日 星期⼀一
  124. 124. GFS 设计思路 • ⺫⽬目标 • 性能、可伸缩性、可靠性、可⽤用性 • 应⽤用特定场景 • 组件故障是常态⽽而不是异常 • 处理的⽂文件都是巨型的 • ⼤大部分⽂文件的变化都是追加⽽而不是覆盖,随机写⼏几 乎不存在。 13年9⽉月16⽇日 星期⼀一
  125. 125. 前提设定 13年9⽉月16⽇日 星期⼀一
  126. 126. 前提设定 • 组件失败是常态 13年9⽉月16⽇日 星期⼀一
  127. 127. 前提设定 • 组件失败是常态 • 存储的绝⼤大部分都是⼤大⽂文件 • ⽂文件数在百万级别 • 每个⽂文件都在100M以上,⼀一般都是GB级别 13年9⽉月16⽇日 星期⼀一
  128. 128. 前提设定 • 组件失败是常态 • 存储的绝⼤大部分都是⼤大⽂文件 • ⽂文件数在百万级别 • 每个⽂文件都在100M以上,⼀一般都是GB级别 • ⽂文件只写⼀一次,绝⼤大部分是追加 13年9⽉月16⽇日 星期⼀一
  129. 129. 前提设定 • 组件失败是常态 • 存储的绝⼤大部分都是⼤大⽂文件 • ⽂文件数在百万级别 • 每个⽂文件都在100M以上,⼀一般都是GB级别 • ⽂文件只写⼀一次,绝⼤大部分是追加 • ⼤大量的流式读 13年9⽉月16⽇日 星期⼀一
  130. 130. 前提设定 • 组件失败是常态 • 存储的绝⼤大部分都是⼤大⽂文件 • ⽂文件数在百万级别 • 每个⽂文件都在100M以上,⼀一般都是GB级别 • ⽂文件只写⼀一次,绝⼤大部分是追加 • ⼤大量的流式读 • 低延迟,⾼高吞吐 13年9⽉月16⽇日 星期⼀一
  131. 131. GFS 架构 http://research.google.com/archive/gfs-sosp2003.pdf 13年9⽉月16⽇日 星期⼀一
  132. 132. GFS 架构 http://research.google.com/archive/gfs-sosp2003.pdf 单⼀一,维护所有元 数据,负责主导⼀一些影 响整个系统的活动 13年9⽉月16⽇日 星期⼀一
  133. 133. GFS 架构 http://research.google.com/archive/gfs-sosp2003.pdf 单⼀一,维护所有元 数据,负责主导⼀一些影 响整个系统的活动 多节点,将chunk存储为 Linux⽂文件 13年9⽉月16⽇日 星期⼀一
  134. 134. GFS 架构 http://research.google.com/archive/gfs-sosp2003.pdf 单⼀一,维护所有元 数据,负责主导⼀一些影 响整个系统的活动 多节点,将chunk存储为 Linux⽂文件 专⽤用客户端,类似传统⽂文 件系统API,负责和Master以 及Chunkserver通信 13年9⽉月16⽇日 星期⼀一
  135. 135. GFS: Master 13年9⽉月16⽇日 星期⼀一
  136. 136. GFS: Master • 存储元数据 13年9⽉月16⽇日 星期⼀一
  137. 137. GFS: Master • 存储元数据 • 命名空间管理、锁定 13年9⽉月16⽇日 星期⼀一
  138. 138. GFS: Master • 存储元数据 • 命名空间管理、锁定 • 和chunkservers的周期通信 • 发出指令,状态收集,集群健康追踪 13年9⽉月16⽇日 星期⼀一
  139. 139. GFS: Master • 存储元数据 • 命名空间管理、锁定 • 和chunkservers的周期通信 • 发出指令,状态收集,集群健康追踪 • Chunk创建、重复制、重平衡 • 在空间和访问速度之间平衡 • 传播副本到不同机架,以防⽌止关联失败 • 如果副本冗余度低于阀值,重复制 • 重新平衡数据来消除存储和请求负载 13年9⽉月16⽇日 星期⼀一
  140. 140. GFS: Master • 存储元数据 • 命名空间管理、锁定 • 和chunkservers的周期通信 • 发出指令,状态收集,集群健康追踪 • Chunk创建、重复制、重平衡 • 在空间和访问速度之间平衡 • 传播副本到不同机架,以防⽌止关联失败 • 如果副本冗余度低于阀值,重复制 • 重新平衡数据来消除存储和请求负载 • 垃圾回收 • 简化,相⽐比传统⽂文件删除更可靠 • master记录删除,然后重命名⽂文件为隐藏⽂文件(dot file) • 惰性垃圾回收隐藏⽂文件 13年9⽉月16⽇日 星期⼀一
  141. 141. GFS: Master • 存储元数据 • 命名空间管理、锁定 • 和chunkservers的周期通信 • 发出指令,状态收集,集群健康追踪 • Chunk创建、重复制、重平衡 • 在空间和访问速度之间平衡 • 传播副本到不同机架,以防⽌止关联失败 • 如果副本冗余度低于阀值,重复制 • 重新平衡数据来消除存储和请求负载 • 垃圾回收 • 简化,相⽐比传统⽂文件删除更可靠 • master记录删除,然后重命名⽂文件为隐藏⽂文件(dot file) • 惰性垃圾回收隐藏⽂文件 • 腐化副本删除 • 使⽤用版本号来删除腐化副本 13年9⽉月16⽇日 星期⼀一
  142. 142. GFS:Chunkserver 13年9⽉月16⽇日 星期⼀一
  143. 143. GFS:Chunkserver • 把64MB⼀一个的chunk当做普通Linux⽂文件存储到 本地磁盘,每个chunk都有版本号以及校验和 (checksum) 13年9⽉月16⽇日 星期⼀一
  144. 144. GFS:Chunkserver • 把64MB⼀一个的chunk当做普通Linux⽂文件存储到 本地磁盘,每个chunk都有版本号以及校验和 (checksum) • 按照chunk句柄和字节范围读写chunk数据 13年9⽉月16⽇日 星期⼀一
  145. 145. GFS:Chunkserver • 把64MB⼀一个的chunk当做普通Linux⽂文件存储到 本地磁盘,每个chunk都有版本号以及校验和 (checksum) • 按照chunk句柄和字节范围读写chunk数据 • 复制可配置的chunk数量到其他chunkserver(缺 省:3) 13年9⽉月16⽇日 星期⼀一
  146. 146. GFS:Chunkserver • 把64MB⼀一个的chunk当做普通Linux⽂文件存储到 本地磁盘,每个chunk都有版本号以及校验和 (checksum) • 按照chunk句柄和字节范围读写chunk数据 • 复制可配置的chunk数量到其他chunkserver(缺 省:3) • 不缓存⽂文件数据 13年9⽉月16⽇日 星期⼀一
  147. 147. GFS: Client 13年9⽉月16⽇日 星期⼀一
  148. 148. GFS: Client •使⽤用GFS的客户端API,类似传统⽂文件系统 API 13年9⽉月16⽇日 星期⼀一
  149. 149. GFS: Client •使⽤用GFS的客户端API,类似传统⽂文件系统 API •发出控制请求给master server 13年9⽉月16⽇日 星期⼀一
  150. 150. GFS: Client •使⽤用GFS的客户端API,类似传统⽂文件系统 API •发出控制请求给master server •发送数据请求到chunk servers 13年9⽉月16⽇日 星期⼀一
  151. 151. GFS: Client •使⽤用GFS的客户端API,类似传统⽂文件系统 API •发出控制请求给master server •发送数据请求到chunk servers •缓存元数据(时效性) 13年9⽉月16⽇日 星期⼀一
  152. 152. GFS: Client •使⽤用GFS的客户端API,类似传统⽂文件系统 API •发出控制请求给master server •发送数据请求到chunk servers •缓存元数据(时效性) •不缓存⽂文件数据 13年9⽉月16⽇日 星期⼀一
  153. 153. GFS: metadata 13年9⽉月16⽇日 星期⼀一
  154. 154. GFS: metadata • 全局metadata保存在master • ⽂文件和chunk命名空间 • ⽂文件到chunk的映射 • 每个chunk的副本位置 13年9⽉月16⽇日 星期⼀一
  155. 155. GFS: metadata • 全局metadata保存在master • ⽂文件和chunk命名空间 • ⽂文件到chunk的映射 • 每个chunk的副本位置 • 保存在内存中(≈64Bytes /chunk) • 快速 • 更容易访问 13年9⽉月16⽇日 星期⼀一
  156. 156. GFS: metadata • 全局metadata保存在master • ⽂文件和chunk命名空间 • ⽂文件到chunk的映射 • 每个chunk的副本位置 • 保存在内存中(≈64Bytes /chunk) • 快速 • 更容易访问 • 通过操作⽇日志持久化来保存关键元数据更新 • 在本地磁盘实现持久化 • ⽇日志跨节点复制 • 利⽤用checkpoint实现快速恢复 13年9⽉月16⽇日 星期⼀一
  157. 157. Client Read 13年9⽉月16⽇日 星期⼀一
  158. 158. Client Read • Client发送给Master: • read(file name,chunk index) 13年9⽉月16⽇日 星期⼀一
  159. 159. Client Read • Client发送给Master: • read(file name,chunk index) • Master回应: • chunk ID,chunk version number,locations of replicas 13年9⽉月16⽇日 星期⼀一
  160. 160. Client Read • Client发送给Master: • read(file name,chunk index) • Master回应: • chunk ID,chunk version number,locations of replicas • Client给“最近”的chunk server发出请求 • read(chunk ID,byte range) 13年9⽉月16⽇日 星期⼀一
  161. 161. Client Read • Client发送给Master: • read(file name,chunk index) • Master回应: • chunk ID,chunk version number,locations of replicas • Client给“最近”的chunk server发出请求 • read(chunk ID,byte range) • Chunk server⽤用数据回应给客户端 13年9⽉月16⽇日 星期⼀一
  162. 162. Client Write 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  163. 163. Client Write Client 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  164. 164. Client Write Client Master step 1 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  165. 165. Client Write Client Master step 1 2 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  166. 166. Client Write Client Master Secondary Replica A Primary Replica Secondary Replica B step 1 2 3 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  167. 167. Client Write Client Master Secondary Replica A Primary Replica Secondary Replica B step 1 2 3 4 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  168. 168. Client Write Client Master Secondary Replica A Primary Replica Secondary Replica B step 1 2 3 4 5 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  169. 169. Client Write Client Master Secondary Replica A Primary Replica Secondary Replica B step 1 2 3 4 5 6 6 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  170. 170. Client Write Client Master Secondary Replica A Primary Replica Secondary Replica B step 1 2 3 4 5 6 6 7 图例: 控制流 数据流 13年9⽉月16⽇日 星期⼀一
  171. 171. Client Record Append 13年9⽉月16⽇日 星期⼀一
  172. 172. Client Record Append • Client提供追加的数据 13年9⽉月16⽇日 星期⼀一
  173. 173. Client Record Append • Client提供追加的数据 • GFS原⼦子⽅方式追加到⽂文件 • GFS选择偏移,⼀一般是⽂文件末尾 • ⽀支持并⾏行写 13年9⽉月16⽇日 星期⼀一
  174. 174. Client Record Append • Client提供追加的数据 • GFS原⼦子⽅方式追加到⽂文件 • GFS选择偏移,⼀一般是⽂文件末尾 • ⽀支持并⾏行写 • Google应⽤用程序重度使⽤用 • 多⽣生产者-单消费者队列 13年9⽉月16⽇日 星期⼀一
  175. 175. GFS 松散⼀一致性模型 Write Record Append Serial success defined defined interspersed with inconsistentConcurrent successes consistent but undefined defined interspersed with inconsistent Failure inconsistentinconsistent 13年9⽉月16⽇日 星期⼀一
  176. 176. GFS 松散⼀一致性模型 • “Consistent” = 所有的副本有相同的值 Write Record Append Serial success defined defined interspersed with inconsistentConcurrent successes consistent but undefined defined interspersed with inconsistent Failure inconsistentinconsistent 13年9⽉月16⽇日 星期⼀一
  177. 177. GFS 松散⼀一致性模型 • “Consistent” = 所有的副本有相同的值 • “Defined” = “Consistent” +可以看到完整变更的数据 Write Record Append Serial success defined defined interspersed with inconsistentConcurrent successes consistent but undefined defined interspersed with inconsistent Failure inconsistentinconsistent 13年9⽉月16⽇日 星期⼀一
  178. 178. 容灾 13年9⽉月16⽇日 星期⼀一
  179. 179. 容灾 • HA • 快速恢复 • master和chunkserver在⼏几秒内重启完毕 • chunk 复制 • 默认3份,不同命名空间可以复制不同版本 • shadow master 13年9⽉月16⽇日 星期⼀一
  180. 180. 容灾 • HA • 快速恢复 • master和chunkserver在⼏几秒内重启完毕 • chunk 复制 • 默认3份,不同命名空间可以复制不同版本 • shadow master • 数据完整性 • 针对chunk,每64KB块做⼀一个checksum 13年9⽉月16⽇日 星期⼀一
  181. 181. GFS 实例 集群 A B chunkserver数 342 227 有效磁盘空间 已⽤用磁盘空间 72 TB 55 TB 180 TB 155 TB ⽂文件数 ⽆无效⽂文件数 chunk数 735 k 22 k 992 k 737 k 232 k 1550 k chunkserver上的元数据⼤大⼩小 master上的元数据⼤大⼩小 13 GB 48 MB 21 GB 60 MB http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google/gfs-sosp2003.pdf 13年9⽉月16⽇日 星期⼀一
  182. 182. Taobao Filesystem 13年9⽉月16⽇日 星期⼀一
  183. 183. Taobao Filesystem 13年9⽉月16⽇日 星期⼀一
  184. 184. Taobao Filesystem •2007年6⽉月创建 13年9⽉月16⽇日 星期⼀一
  185. 185. Taobao Filesystem •2007年6⽉月创建 •⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网 服务 13年9⽉月16⽇日 星期⼀一
  186. 186. Taobao Filesystem •2007年6⽉月创建 •⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网 服务 •为海量⾮非结构化数据优化 13年9⽉月16⽇日 星期⼀一
  187. 187. Taobao Filesystem •2007年6⽉月创建 •⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网 服务 •为海量⾮非结构化数据优化 •⽀支持海量⼩小⽂文件存储 13年9⽉月16⽇日 星期⼀一
  188. 188. TFS-动机 13年9⽉月16⽇日 星期⼀一
  189. 189. TFS-动机 • 系统需求 • 淘宝的影响越来越⼤大,数据的安全越来越重要 • 数据存储量每年2倍的速度增⻓长 13年9⽉月16⽇日 星期⼀一
  190. 190. TFS-动机 • 系统需求 • 淘宝的影响越来越⼤大,数据的安全越来越重要 • 数据存储量每年2倍的速度增⻓长 • 商⽤用存储产品 • 对⼩小⽂文件的存储⽆无法优化 • ⽂文件数量⼤大,NAS⽆无法⽀支持 • 连接的服务器越来越多,⺴⽹网络连接达到NAS设备极限 • 扩展成本⾼高,10T的存储容量需要上百万⼈人民币 • 单点,容灾和安全性⽆无法得到很好的保证 13年9⽉月16⽇日 星期⼀一
  191. 191. TFS - 架构 http://code.taobao.org/p/tfs/wiki/intro/ 13年9⽉月16⽇日 星期⼀一
  192. 192. TFS - 特性 13年9⽉月16⽇日 星期⼀一
  193. 193. TFS - 特性 • 集群由⼀一对NameServer和多台DataServer构成 13年9⽉月16⽇日 星期⼀一
  194. 194. TFS - 特性 • 集群由⼀一对NameServer和多台DataServer构成 • 以block⽂文件的形式存储数据⽂文件(⼀一般64MB ⼀一个block) 13年9⽉月16⽇日 星期⼀一
  195. 195. TFS - 特性 • 集群由⼀一对NameServer和多台DataServer构成 • 以block⽂文件的形式存储数据⽂文件(⼀一般64MB ⼀一个block) • block有多个副本 13年9⽉月16⽇日 星期⼀一
  196. 196. TFS - 特性 • 集群由⼀一对NameServer和多台DataServer构成 • 以block⽂文件的形式存储数据⽂文件(⼀一般64MB ⼀一个block) • block有多个副本 • DataServer上⽤用Linux⽂文件系统存储数据⽂文件 13年9⽉月16⽇日 星期⼀一
  197. 197. TFS - 特性 • 集群由⼀一对NameServer和多台DataServer构成 • 以block⽂文件的形式存储数据⽂文件(⼀一般64MB ⼀一个block) • block有多个副本 • DataServer上⽤用Linux⽂文件系统存储数据⽂文件 • non-RAID,每个进程管理⼀一块磁盘 13年9⽉月16⽇日 星期⼀一
  198. 198. TFS - 特性 • 集群由⼀一对NameServer和多台DataServer构成 • 以block⽂文件的形式存储数据⽂文件(⼀一般64MB ⼀一个block) • block有多个副本 • DataServer上⽤用Linux⽂文件系统存储数据⽂文件 • non-RAID,每个进程管理⼀一块磁盘 • ⽂文件名内置元数据信息,⽤用户⾃自⼰己保存TFS⽂文 件名与实际⽂文件的对照关系 13年9⽉月16⽇日 星期⼀一
  199. 199. TFS - ⽂文件名结构 13年9⽉月16⽇日 星期⼀一
  200. 200. TFS - ⽂文件名结构 • ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节 13年9⽉月16⽇日 星期⼀一
  201. 201. TFS - ⽂文件名结构 • ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节 • ⽂文件 = T+[1-9]+encode(<block_id> + <file_id>) + hash(.<suffix>) 13年9⽉月16⽇日 星期⼀一
  202. 202. TFS - ⽂文件名结构 • ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节 • ⽂文件 = T+[1-9]+encode(<block_id> + <file_id>) + hash(.<suffix>) • ⽂文件名由客户端程序进⾏行编码和解码 13年9⽉月16⽇日 星期⼀一
  203. 203. Nameserver职责 13年9⽉月16⽇日 星期⼀一
  204. 204. Nameserver职责 •管理维护Block和DataServer的相关信息 13年9⽉月16⽇日 星期⼀一
  205. 205. Nameserver职责 •管理维护Block和DataServer的相关信息 •负责Block的创建、删除、复制、均衡、 整理 13年9⽉月16⽇日 星期⼀一
  206. 206. Nameserver职责 •管理维护Block和DataServer的相关信息 •负责Block的创建、删除、复制、均衡、 整理 •不负责实际数据的读写 13年9⽉月16⽇日 星期⼀一
  207. 207. DataServer 职责 13年9⽉月16⽇日 星期⼀一
  208. 208. DataServer 职责 •负责实际数据的存储和读写 13年9⽉月16⽇日 星期⼀一
  209. 209. TFS - 元数据 13年9⽉月16⽇日 星期⼀一
  210. 210. TFS - Read 13年9⽉月16⽇日 星期⼀一
  211. 211. TFS - Write 13年9⽉月16⽇日 星期⼀一
  212. 212. TFS - 容灾 13年9⽉月16⽇日 星期⼀一
  213. 213. TFS - 容灾 • 集群容灾 • TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。 主集群把所有操作重放到辅集群 13年9⽉月16⽇日 星期⼀一
  214. 214. TFS - 容灾 • 集群容灾 • TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。 主集群把所有操作重放到辅集群 • NameServer容灾 • HA架构,使⽤用vip,主从同步 13年9⽉月16⽇日 星期⼀一
  215. 215. TFS - 容灾 • 集群容灾 • TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。 主集群把所有操作重放到辅集群 • NameServer容灾 • HA架构,使⽤用vip,主从同步 • DataServer容灾 • Block多副本,跨⺴⽹网段。 • 所有副本写⼊入成功,才返回成功 • 有腐化副本,TFS启动复制流程 • 每个⽂文件记录校验CRC 13年9⽉月16⽇日 星期⼀一
  216. 216. Hadoop Distributed Filesystem http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf 13年9⽉月16⽇日 星期⼀一
  217. 217. Hadoop Distributed Filesystem 13年9⽉月16⽇日 星期⼀一
  218. 218. Hadoop Distributed Filesystem •灵感来⾃自Goole Filesystem 13年9⽉月16⽇日 星期⼀一
  219. 219. Hadoop Distributed Filesystem •灵感来⾃自Goole Filesystem •⾼高容灾特性 13年9⽉月16⽇日 星期⼀一
  220. 220. Hadoop Distributed Filesystem •灵感来⾃自Goole Filesystem •⾼高容灾特性 •设计为可部署在廉价硬件上 13年9⽉月16⽇日 星期⼀一
  221. 221. Hadoop Distributed Filesystem •灵感来⾃自Goole Filesystem •⾼高容灾特性 •设计为可部署在廉价硬件上 •为Apache Hadoop的⼦子项⺫⽬目 13年9⽉月16⽇日 星期⼀一
  222. 222. HDFS - 架构 ! 13年9⽉月16⽇日 星期⼀一
  223. 223. HDFS - NameNode 13年9⽉月16⽇日 星期⼀一
  224. 224. HDFS - NameNode •⼀一个集群中只有⼀一个,简化设计 13年9⽉月16⽇日 星期⼀一
  225. 225. HDFS - NameNode •⼀一个集群中只有⼀一个,简化设计 •负责管理⽂文件系统的名字空间并协调客户 对⽂文件的访问 13年9⽉月16⽇日 星期⼀一
  226. 226. HDFS - NameNode •⼀一个集群中只有⼀一个,简化设计 •负责管理⽂文件系统的名字空间并协调客户 对⽂文件的访问 •执⾏行⽂文件系统的名字空间操作 (create,open,rename) 13年9⽉月16⽇日 星期⼀一
  227. 227. HDFS - NameNode •⼀一个集群中只有⼀一个,简化设计 •负责管理⽂文件系统的名字空间并协调客户 对⽂文件的访问 •执⾏行⽂文件系统的名字空间操作 (create,open,rename) •管理数据块到数据节点的映射 13年9⽉月16⽇日 星期⼀一
  228. 228. HDFS - DataNode(s) 13年9⽉月16⽇日 星期⼀一
  229. 229. HDFS - DataNode(s) •⼀一个服务节点上部署⼀一个DataNode 13年9⽉月16⽇日 星期⼀一
  230. 230. HDFS - DataNode(s) •⼀一个服务节点上部署⼀一个DataNode •负责该物理节点上的存储管理 13年9⽉月16⽇日 星期⼀一
  231. 231. HDFS - DataNode(s) •⼀一个服务节点上部署⼀一个DataNode •负责该物理节点上的存储管理 •负责提供客户的读写请求 13年9⽉月16⽇日 星期⼀一
  232. 232. HDFS - DataNode(s) •⼀一个服务节点上部署⼀一个DataNode •负责该物理节点上的存储管理 •负责提供客户的读写请求 •根据NameNode的指令执⾏行数据块的创 建、删除、复制⼯工作。 13年9⽉月16⽇日 星期⼀一
  233. 233. HDFS - 数据副本 13年9⽉月16⽇日 星期⼀一
  234. 234. HDFS - 数据副本 • ⽂文件块通过复制保证容错 13年9⽉月16⽇日 星期⼀一
  235. 235. HDFS - 数据副本 • ⽂文件块通过复制保证容错 • ⽂文件块⼤大⼩小及副本数量可 配置 13年9⽉月16⽇日 星期⼀一
  236. 236. HDFS - 数据副本 • ⽂文件块通过复制保证容错 • ⽂文件块⼤大⼩小及副本数量可 配置 • 平衡副本位置对读写、⺴⽹网 络传输的影响 13年9⽉月16⽇日 星期⼀一
  237. 237. HDFS -健壮性 13年9⽉月16⽇日 星期⼀一
  238. 238. HDFS -健壮性 •DataNode磁盘故障,⼼心跳和重复制 13年9⽉月16⽇日 星期⼀一
  239. 239. HDFS -健壮性 •DataNode磁盘故障,⼼心跳和重复制 •机群的重平衡 13年9⽉月16⽇日 星期⼀一
  240. 240. HDFS -健壮性 •DataNode磁盘故障,⼼心跳和重复制 •机群的重平衡 •数据完整性 13年9⽉月16⽇日 星期⼀一
  241. 241. HDFS -健壮性 •DataNode磁盘故障,⼼心跳和重复制 •机群的重平衡 •数据完整性 •元数据磁盘失效 13年9⽉月16⽇日 星期⼀一
  242. 242. HDFS -健壮性 •DataNode磁盘故障,⼼心跳和重复制 •机群的重平衡 •数据完整性 •元数据磁盘失效 •快照(将来⽀支持) 13年9⽉月16⽇日 星期⼀一
  243. 243. Mogile Filesystem 13年9⽉月16⽇日 星期⼀一
  244. 244. MogileFS 架构 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  245. 245. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  246. 246. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  247. 247. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  248. 248. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  249. 249. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  250. 250. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  251. 251. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  252. 252. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID • 不能追加写、随机写 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  253. 253. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID • 不能追加写、随机写 • Tracker Client传输(mogilefsd),管理 数据复制、删除、查询、修复以及 监控 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  254. 254. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID • 不能追加写、随机写 • Tracker Client传输(mogilefsd),管理 数据复制、删除、查询、修复以及 监控 • 数据通过HTTP/WebDAV服务上传到 Storage node(mogstored) Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  255. 255. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID • 不能追加写、随机写 • Tracker Client传输(mogilefsd),管理 数据复制、删除、查询、修复以及 监控 • 数据通过HTTP/WebDAV服务上传到 Storage node(mogstored) • MySQL 存储MogileFS 元数据(命名 空间、位置) Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  256. 256. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  257. 257. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  258. 258. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  259. 259. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  260. 260. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  261. 261. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  262. 262. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  263. 263. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID • 不能追加写、随机写 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  264. 264. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID • 不能追加写、随机写 • Tracker Client传输(mogilefsd),管理 数据复制、删除、查询、修复以及 监控 Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  265. 265. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID • 不能追加写、随机写 • Tracker Client传输(mogilefsd),管理 数据复制、删除、查询、修复以及 监控 • 数据通过HTTP/WebDAV服务上传到 Storage node(mogstored) Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  266. 266. MogileFS 架构 • 应⽤用层:⽆无需特殊核⼼心组件 • ⽆无单点失败 • ⾃自动⽂文件复制 • 传输中⽴立,⽆无特殊协议 • 简单命名空间 • Shared-Nothing • non-RAID • 不能追加写、随机写 • Tracker Client传输(mogilefsd),管理 数据复制、删除、查询、修复以及 监控 • 数据通过HTTP/WebDAV服务上传到 Storage node(mogstored) • MySQL 存储MogileFS 元数据(命名 空间、位置) Client(API) Trackers (mogilefsd) Storage nodes (mogstored) Tracker's database (MySQL) 13年9⽉月16⽇日 星期⼀一
  267. 267. MogileFS ⾼高可⽤用 http://www.slideshare.net/PhilippeJulio/mogilefs-architecture 0 0' Database Metadata Active Cluster Node Passive Cluster Node 1 2 3 4 5 6 7 Tracker Tracker Tracker Storage Storage Storage Storage 4 Storage Nodes 2 Trackers nodes for HA Cluster and more than 2 for Load Balancing 13年9⽉月16⽇日 星期⼀一
  268. 268. MogileFS Internal MogileFS Domain(key的名字空间) Class(最⼩小复制单元) http://www.php-oa.com/2010/09/26/perl-mogilefs-3.html 13年9⽉月16⽇日 星期⼀一
  269. 269. MogileFS Internal • Domain • ⼀一个MogileFS可以有多个 Domain, • ⽤用来存放不同⽂文件(⼤大 ⼩小、类型) • 同⼀一个Domain内,可以必 须唯⼀一 • 不同Domain内,key可以 相同 MogileFS Domain(key的名字空间) Class(最⼩小复制单元) http://www.php-oa.com/2010/09/26/perl-mogilefs-3.html 13年9⽉月16⽇日 星期⼀一
  270. 270. MogileFS Internal • Domain • ⼀一个MogileFS可以有多个 Domain, • ⽤用来存放不同⽂文件(⼤大 ⼩小、类型) • 同⼀一个Domain内,可以必 须唯⼀一 • 不同Domain内,key可以 相同 • Class • ⽂文件属性管理 • 定义⽂文件存储在不同设备 上的份数 MogileFS Domain(key的名字空间) Class(最⼩小复制单元) http://www.php-oa.com/2010/09/26/perl-mogilefs-3.html 13年9⽉月16⽇日 星期⼀一
  271. 271. MogileFS Internal • Domain • ⼀一个MogileFS可以有多个 Domain, • ⽤用来存放不同⽂文件(⼤大 ⼩小、类型) • 同⼀一个Domain内,可以必 须唯⼀一 • 不同Domain内,key可以 相同 • Class • ⽂文件属性管理 • 定义⽂文件存储在不同设备 上的份数 • Domain + Fid 定位⽂文件 MogileFS Domain(key的名字空间) Class(最⼩小复制单元) http://www.php-oa.com/2010/09/26/perl-mogilefs-3.html 13年9⽉月16⽇日 星期⼀一
  272. 272. MogileFS 数据流 13年9⽉月16⽇日 星期⼀一
  273. 273. MogileFS 数据流 • 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的 机器). 做⼀一个 “create_open” 请求 13年9⽉月16⽇日 星期⼀一
  274. 274. MogileFS 数据流 • 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的 机器). 做⼀一个 “create_open” 请求 • tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给 应⽤用程序⼀一些可能⽤用的位置 13年9⽉月16⽇日 星期⼀一
  275. 275. MogileFS 数据流 • 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的 机器). 做⼀一个 “create_open” 请求 • tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给 应⽤用程序⼀一些可能⽤用的位置 • 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另 外⼀一个位置去) 13年9⽉月16⽇日 星期⼀一
  276. 276. MogileFS 数据流 • 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的 机器). 做⼀一个 “create_open” 请求 • tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给 应⽤用程序⼀一些可能⽤用的位置 • 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另 外⼀一个位置去) • 应⽤用程序通过”create_close” 告诉tracker⽂文件写到哪⾥里去了 13年9⽉月16⽇日 星期⼀一
  277. 277. MogileFS 数据流 • 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的 机器). 做⼀一个 “create_open” 请求 • tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给 应⽤用程序⼀一些可能⽤用的位置 • 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另 外⼀一个位置去) • 应⽤用程序通过”create_close” 告诉tracker⽂文件写到哪⾥里去了 • tracker 将该名称和域命的名空间关联 (通过数据库来做的) 13年9⽉月16⽇日 星期⼀一
  278. 278. MogileFS 数据流 • 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的 机器). 做⼀一个 “create_open” 请求 • tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给 应⽤用程序⼀一些可能⽤用的位置 • 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另 外⼀一个位置去) • 应⽤用程序通过”create_close” 告诉tracker⽂文件写到哪⾥里去了 • tracker 将该名称和域命的名空间关联 (通过数据库来做的) • tracker, 在后台, 开始复制⽂文件,知道他满⾜足该⽂文件类别设定的复制规则 13年9⽉月16⽇日 星期⼀一
  279. 279. MogileFS 数据流 • 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的 机器). 做⼀一个 “create_open” 请求 • tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给 应⽤用程序⼀一些可能⽤用的位置 • 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另 外⼀一个位置去) • 应⽤用程序通过”create_close” 告诉tracker⽂文件写到哪⾥里去了 • tracker 将该名称和域命的名空间关联 (通过数据库来做的) • tracker, 在后台, 开始复制⽂文件,知道他满⾜足该⽂文件类别设定的复制规则 • 然后,应⽤用程序通过 “get_paths” 请求 domain+key (key == “filename”) ⽂文件, tracker基于每⼀一位置的I/O繁忙情况回复(在内部经过 database/ memcache/etc 等的⼀一些抉择处理), 该⽂文件可⽤用的完整 URLs地址列表. 13年9⽉月16⽇日 星期⼀一
  280. 280. MogileFS 数据流 • 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的 机器). 做⼀一个 “create_open” 请求 • tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给 应⽤用程序⼀一些可能⽤用的位置 • 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另 外⼀一个位置去) • 应⽤用程序通过”create_close” 告诉tracker⽂文件写到哪⾥里去了 • tracker 将该名称和域命的名空间关联 (通过数据库来做的) • tracker, 在后台, 开始复制⽂文件,知道他满⾜足该⽂文件类别设定的复制规则 • 然后,应⽤用程序通过 “get_paths” 请求 domain+key (key == “filename”) ⽂文件, tracker基于每⼀一位置的I/O繁忙情况回复(在内部经过 database/ memcache/etc 等的⼀一些抉择处理), 该⽂文件可⽤用的完整 URLs地址列表. • 应⽤用程序然后按顺序尝试这些URL地址 13年9⽉月16⽇日 星期⼀一
  281. 281. Moose Filesystem 13年9⽉月16⽇日 星期⼀一
  282. 282. MooseFS 特性 • MooseFS可以充当类Unix的⽂文件系统 • 层次结构(⺫⽬目录树) • 存储POSIX⽂文件属性(权限、最后访问时间,修改时间等) • ⽀支持特殊⽂文件(块设备、字符设备、管道以及套接字) • 符号链接、硬链接 • ⽂文件访问可受限于IP地址和(或)密码 • 分布式特性 • ⾼高可靠性(数据多副本) • 通过增加节点或者磁盘动态扩容 • 惰性⽂文件删除(⽂文件系统级别的垃圾桶) • 提供⼀一致的⽂文件快照,即使⽂文件正在访问或者写⼊入 http://www.moosefs.org/ 13年9⽉月16⽇日 星期⼀一
  283. 283. MooseFS 组件 http://www.moosefs.org/ 13年9⽉月16⽇日 星期⼀一
  284. 284. MooseFS 组件 • Manager Server (master server) • 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包 括⼤大⼩小、属性、⽂文件位置) http://www.moosefs.org/ 13年9⽉月16⽇日 星期⼀一
  285. 285. MooseFS 组件 • Manager Server (master server) • 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包 括⼤大⼩小、属性、⽂文件位置) • Data servers (chunk server) • 任意数量的普通服务器,⽤用于存储⽂文件,并在他们之间进⾏行⽂文 件同步(多副本⽤用途) http://www.moosefs.org/ 13年9⽉月16⽇日 星期⼀一
  286. 286. MooseFS 组件 • Manager Server (master server) • 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包 括⼤大⼩小、属性、⽂文件位置) • Data servers (chunk server) • 任意数量的普通服务器,⽤用于存储⽂文件,并在他们之间进⾏行⽂文 件同步(多副本⽤用途) • Metadata backup server(s) (metalogger server) • 周期性的从master server下载元数据信息以及changelogs。⽤用 于将来master server故障后,恢复 http://www.moosefs.org/ 13年9⽉月16⽇日 星期⼀一
  287. 287. MooseFS 组件 • Manager Server (master server) • 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包 括⼤大⼩小、属性、⽂文件位置) • Data servers (chunk server) • 任意数量的普通服务器,⽤用于存储⽂文件,并在他们之间进⾏行⽂文 件同步(多副本⽤用途) • Metadata backup server(s) (metalogger server) • 周期性的从master server下载元数据信息以及changelogs。⽤用 于将来master server故障后,恢复 • client (mount) • 使⽤用mfsmount⼯工具挂载MooseFS • mfsmount基于FUSE机制实现,所以client是可以跨平台的 http://www.moosefs.org/ 13年9⽉月16⽇日 星期⼀一
  288. 288. MooseFS 读⽂文件 13年9⽉月16⽇日 星期⼀一
  289. 289. MooseFS 写⽂文件 13年9⽉月16⽇日 星期⼀一
  290. 290. 参考资料 (1/2) 1. http://www.google.com.hk 2. http://hadoop.apache.org 3. http://www.slideshare.net/quipo/nosql-databases-why-what-and-when 4. http://static.googleusercontent.com/external_content/untrusted_dlcp/gfs-sosp2003.pdf 5. http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf 6. http://en.wikipedia.org/wiki/Google_File_System 7. http://www.ibm.com/systems/software/gpfs 8. http://www.amazon.com/Understanding-Big-Data-Enterprise-ebook/dp/ B0069QEHOE 9. http://en.wikipedia.org/wiki/Big_data 10.http://blog.csdn.net/NevePioneer/article/details/3540607 11.http://www.oracle.com/technetwork/server-storage/engineered-systems/exadata/ exadata-technical-whitepaper-134575.pdf 12.http://public.dhe.ibm.com/software/cn/downloads/ IMW14584CNZH_IBM_Netezza_Data_Appliance_Architecture.pdf 13.http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1 13年9⽉月16⽇日 星期⼀一
  291. 291. 参考资料 (2/2) 13年9⽉月16⽇日 星期⼀一
  292. 292. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 13年9⽉月16⽇日 星期⼀一
  293. 293. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 15.http://www.importnew.com/3491.html 13年9⽉月16⽇日 星期⼀一
  294. 294. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 15.http://www.importnew.com/3491.html 16.http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf 13年9⽉月16⽇日 星期⼀一
  295. 295. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 15.http://www.importnew.com/3491.html 16.http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf 17.http://datasearch.ruc.edu.cn/course/advancedDataManagement/ slides/Lec03.ppt 13年9⽉月16⽇日 星期⼀一
  296. 296. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 15.http://www.importnew.com/3491.html 16.http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf 17.http://datasearch.ruc.edu.cn/course/advancedDataManagement/ slides/Lec03.ppt 18.http://www.nosqlnotes.net/wp-content/uploads/ Distributed_System_Engineering_Practice.pdf 13年9⽉月16⽇日 星期⼀一
  297. 297. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 15.http://www.importnew.com/3491.html 16.http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf 17.http://datasearch.ruc.edu.cn/course/advancedDataManagement/ slides/Lec03.ppt 18.http://www.nosqlnotes.net/wp-content/uploads/ Distributed_System_Engineering_Practice.pdf 19.http://www.ece.ubc.ca/~matei/EECE417/googleFS.ppt 13年9⽉月16⽇日 星期⼀一
  298. 298. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 15.http://www.importnew.com/3491.html 16.http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf 17.http://datasearch.ruc.edu.cn/course/advancedDataManagement/ slides/Lec03.ppt 18.http://www.nosqlnotes.net/wp-content/uploads/ Distributed_System_Engineering_Practice.pdf 19.http://www.ece.ubc.ca/~matei/EECE417/googleFS.ppt 20.https://code.google.com/p/mogilefs/ 13年9⽉月16⽇日 星期⼀一
  299. 299. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 15.http://www.importnew.com/3491.html 16.http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf 17.http://datasearch.ruc.edu.cn/course/advancedDataManagement/ slides/Lec03.ppt 18.http://www.nosqlnotes.net/wp-content/uploads/ Distributed_System_Engineering_Practice.pdf 19.http://www.ece.ubc.ca/~matei/EECE417/googleFS.ppt 20.https://code.google.com/p/mogilefs/ 21.http://www.moosefs.org/ 13年9⽉月16⽇日 星期⼀一
  300. 300. 参考资料 (2/2) 14.http://www.nosqlnotes.net/archives/71 15.http://www.importnew.com/3491.html 16.http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf 17.http://datasearch.ruc.edu.cn/course/advancedDataManagement/ slides/Lec03.ppt 18.http://www.nosqlnotes.net/wp-content/uploads/ Distributed_System_Engineering_Practice.pdf 19.http://www.ece.ubc.ca/~matei/EECE417/googleFS.ppt 20.https://code.google.com/p/mogilefs/ 21.http://www.moosefs.org/ 22.http://s3.amazonaws.com/ppt-download/ 12110083hdfspresentedbyvijaypratapsingh-130820030700-phpapp02.odp 13年9⽉月16⽇日 星期⼀一
  301. 301. ⼤大数据之 分布式⽂文件系统 Why, what and how 好⾖豆⺴⽹网 赵卫国 @mlsx 2013-9-14 13年9⽉月16⽇日 星期⼀一

×