distributed filesystem

301
数据之 分布式件系统 Why, what and how 赵卫国 @mlsx 2013-9-14 13916 星期

Upload: weiguo-zhao

Post on 25-May-2015

894 views

Category:

Documents


0 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: Distributed filesystem

⼤大数据之分布式⽂文件系统

Why, what and how

好⾖豆⺴⽹网

赵卫国@mlsx

2013-9-14

13年9⽉月16⽇日 星期⼀一

Page 2: Distributed filesystem

13年9⽉月16⽇日 星期⼀一

Page 3: Distributed filesystem

Google

> 100 PB> 1T indexed URLs> 3 million servers

> 7.2B PV/day13年9⽉月16⽇日 星期⼀一

Page 4: Distributed filesystem

13年9⽉月16⽇日 星期⼀一

Page 5: Distributed filesystem

Facebook

> 1 billion users> 300PB; +>500TB/day

>35% of world’s photographs

13年9⽉月16⽇日 星期⼀一

Page 6: Distributed filesystem

13年9⽉月16⽇日 星期⼀一

Page 7: Distributed filesystem

YouTube

> 1000PB+> 72 hours/minute

> 37 million hours/year> 4 billion views/day

13年9⽉月16⽇日 星期⼀一

Page 8: Distributed filesystem

13年9⽉月16⽇日 星期⼀一

Page 9: Distributed filesystem

Twitter

> 124 B tweets/year> 390M/day~4500/sec

13年9⽉月16⽇日 星期⼀一

Page 10: Distributed filesystem

13年9⽉月16⽇日 星期⼀一

Page 11: Distributed filesystem

World Population

>7,057,065,162

13年9⽉月16⽇日 星期⼀一

Page 12: Distributed filesystem

⼤大数据是

http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=113年9⽉月16⽇日 星期⼀一

Page 13: Distributed filesystem

⼤大数据是

http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=113年9⽉月16⽇日 星期⼀一

Page 14: Distributed filesystem

⼤大数据是

+

http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=113年9⽉月16⽇日 星期⼀一

Page 15: Distributed filesystem

⼤大数据是

+ +

http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=113年9⽉月16⽇日 星期⼀一

Page 16: Distributed filesystem

⼤大数据是

+ +

http://www.businessinsider.com/cia-presentation-on-big-data-2013-3?op=1

CTO of CIA

13年9⽉月16⽇日 星期⼀一

Page 17: Distributed filesystem

⼤大数据的价值

http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation13年9⽉月16⽇日 星期⼀一

Page 18: Distributed filesystem

⼤大数据的价值

美国医疗服务

• 每年价值3000亿美元• ⼤大约0.7%的年⽣生产率增⻓长

http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation13年9⽉月16⽇日 星期⼀一

Page 19: Distributed filesystem

⼤大数据的价值

美国医疗服务

• 每年价值3000亿美元• ⼤大约0.7%的年⽣生产率增⻓长

欧洲公共部门管理

• 每年价值2500亿欧元• ⼤大约0.5%的年⽣生产率增⻓长

http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation13年9⽉月16⽇日 星期⼀一

Page 20: Distributed filesystem

⼤大数据的价值

美国医疗服务

• 每年价值3000亿美元• ⼤大约0.7%的年⽣生产率增⻓长

欧洲公共部门管理

• 每年价值2500亿欧元• ⼤大约0.5%的年⽣生产率增⻓长

制造业

• 产品开发、组装成本降低达50%• 运⾏行资本降低达7%

http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation13年9⽉月16⽇日 星期⼀一

Page 21: Distributed filesystem

⼤大数据的价值

美国医疗服务

• 每年价值3000亿美元• ⼤大约0.7%的年⽣生产率增⻓长

欧洲公共部门管理

• 每年价值2500亿欧元• ⼤大约0.5%的年⽣生产率增⻓长

全球个人位置数据

• 服务提供商收⼊入1000亿美元或以上• 最终⽤用户价值达7000亿美元

制造业

• 产品开发、组装成本降低达50%• 运⾏行资本降低达7%

http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation13年9⽉月16⽇日 星期⼀一

Page 22: Distributed filesystem

⼤大数据的价值

美国医疗服务

• 每年价值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_innovation13年9⽉月16⽇日 星期⼀一

Page 23: Distributed filesystem

⼤大数据的价值

美国医疗服务

• 每年价值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_innovation13年9⽉月16⽇日 星期⼀一

Page 24: Distributed filesystem

⼤大数据的特征

13年9⽉月16⽇日 星期⼀一

Page 25: Distributed filesystem

⼤大数据的特征“所涉及的数据量规模巨⼤大到⽆无法通过⺫⽬目前主流软件⼯工具,在合理时间内达到获取、管理、处理、并整理成为帮助企业经营决策更积极⺫⽬目的的信息的程度”

- 中⽂文维基百科

13年9⽉月16⽇日 星期⼀一

Page 26: Distributed filesystem

⼤大数据的特征“所涉及的数据量规模巨⼤大到⽆无法通过⺫⽬目前主流软件⼯工具,在合理时间内达到获取、管理、处理、并整理成为帮助企业经营决策更积极⺫⽬目的的信息的程度”

- 中⽂文维基百科

13年9⽉月16⽇日 星期⼀一

Page 27: Distributed filesystem

⼤大数据来源

13年9⽉月16⽇日 星期⼀一

Page 28: Distributed filesystem

⼤大数据来源

•互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、电⼦子商务

13年9⽉月16⽇日 星期⼀一

Page 29: Distributed filesystem

⼤大数据来源

•互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、电⼦子商务

•物联⺴⽹网、移动设备、终端、个⼈人位置、传感器采集的数据

13年9⽉月16⽇日 星期⼀一

Page 30: Distributed filesystem

⼤大数据来源

•互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、电⼦子商务

•物联⺴⽹网、移动设备、终端、个⼈人位置、传感器采集的数据

•通信和互联⺴⽹网运⾏行商

13年9⽉月16⽇日 星期⼀一

Page 31: Distributed filesystem

⼤大数据来源

•互联⺴⽹网企业:社交⺴⽹网站、微博客、视频、电⼦子商务

•物联⺴⽹网、移动设备、终端、个⼈人位置、传感器采集的数据

•通信和互联⺴⽹网运⾏行商•天⽂文、⽓气象、医疗数据

13年9⽉月16⽇日 星期⼀一

Page 32: Distributed filesystem

⼤大数据带来的挑战

http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg13年9⽉月16⽇日 星期⼀一

Page 33: Distributed filesystem

⼤大数据带来的挑战

• 数据采集• 数据存储• 数据搜索• 数据共享• 数据传输• 数据分析• 数据可视化

http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg13年9⽉月16⽇日 星期⼀一

Page 34: Distributed filesystem

⼤大数据带来的挑战

http://mmdays.com/wp-content/uploads/2013/03/Bigdata.jpg

数据如何存储

13年9⽉月16⽇日 星期⼀一

Page 35: Distributed filesystem

传统存储

13年9⽉月16⽇日 星期⼀一

Page 36: Distributed filesystem

传统存储

• 问题

13年9⽉月16⽇日 星期⼀一

Page 37: Distributed filesystem

传统存储

• 问题

• 纵向扩展受阵列空间限制

13年9⽉月16⽇日 星期⼀一

Page 38: Distributed filesystem

传统存储

• 问题

• 纵向扩展受阵列空间限制

• 横向扩展受交换设备限制

13年9⽉月16⽇日 星期⼀一

Page 39: Distributed filesystem

传统存储

• 问题

• 纵向扩展受阵列空间限制

• 横向扩展受交换设备限制

• 节点受⽂文件系统限制

13年9⽉月16⽇日 星期⼀一

Page 40: Distributed filesystem

分布式存储

Interconnection Network

Node 1 Node 1 Node 1...

13年9⽉月16⽇日 星期⼀一

Page 41: Distributed filesystem

分布式存储

• 挑战• 节点间通信• 数据存储• 数据空间平衡• 容错• ⽂文件系统⽀支持

Interconnection Network

Node 1 Node 1 Node 1...

13年9⽉月16⽇日 星期⼀一

Page 42: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 43: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 44: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

•访问透明

“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 45: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

•访问透明•位置透明

“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 46: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

•访问透明•位置透明•并发透明

“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 47: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

•访问透明•位置透明•并发透明•失效透明

“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 48: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

•访问透明•位置透明•并发透明•失效透明

•硬件透明

“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 49: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

•访问透明•位置透明•并发透明•失效透明

•硬件透明•可扩展性

“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 50: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

•访问透明•位置透明•并发透明•失效透明

•硬件透明•可扩展性•复制透明

“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 51: Distributed filesystem

分布式⽂文件系统 设计⺫⽬目标

•访问透明•位置透明•并发透明•失效透明

•硬件透明•可扩展性•复制透明•迁移透明

“分布式⽂文件系统在众多概念中瞄准“透明”这个理念,也即对客户端或者客户端程序它是透明的,客户端或客户端程序就像使⽤用本地⽂文件系统⼀一样可以使⽤用分布式⽂文件系统,在其幕后,由分布式⽂文件系统来处理⽂文件定位、数据传输以及更多的功能:”

- 中⽂文维基百科

http://en.wikipedia.org/wiki/Distributed_file_system#Distributed_file_systems13年9⽉月16⽇日 星期⼀一

Page 52: Distributed filesystem

⼀一些理论准备

http://tinyurl.com/nqdsayj

13年9⽉月16⽇日 星期⼀一

Page 53: Distributed filesystem

CAP理论(Brewer的猜想)2000 Prof.Eric Brewer,PoDC Conference Keynote2002 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⽇日 星期⼀一

Page 54: Distributed filesystem

CAP理论(Brewer的猜想)2000 Prof.Eric Brewer,PoDC Conference Keynote2002 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⽇日 星期⼀一

Page 55: Distributed filesystem

CAP

C13年9⽉月16⽇日 星期⼀一

Page 56: Distributed filesystem

• ⼀一致性(Consistency)

• 任何⼀一个读操作总能读取到之前完成的写操作结果

CAP

C13年9⽉月16⽇日 星期⼀一

Page 57: Distributed filesystem

• ⼀一致性(Consistency)

• 任何⼀一个读操作总能读取到之前完成的写操作结果

• 可⽤用性(Availability)

• 每⼀一个操作总是能在确定的时间内返回

CAP

C13年9⽉月16⽇日 星期⼀一

Page 58: Distributed filesystem

• ⼀一致性(Consistency)

• 任何⼀一个读操作总能读取到之前完成的写操作结果

• 可⽤用性(Availability)

• 每⼀一个操作总是能在确定的时间内返回

• 分区可容忍性(Tolerance of network Partition)

• 在出现⺴⽹网络分区的情况下,仍然能够满⾜足⼀一致性和可⽤用性

CAP

C13年9⽉月16⽇日 星期⼀一

Page 59: Distributed filesystem

• ⼀一致性(Consistency)

• 任何⼀一个读操作总能读取到之前完成的写操作结果

• 可⽤用性(Availability)

• 每⼀一个操作总是能在确定的时间内返回

• 分区可容忍性(Tolerance of network Partition)

• 在出现⺴⽹网络分区的情况下,仍然能够满⾜足⼀一致性和可⽤用性

CAP

C

picktwo

C

A P

13年9⽉月16⽇日 星期⼀一

Page 60: Distributed filesystem

分区容忍性-可⽤用性

http://codahale.com/you-cant-sacrifice-partition-tolerance/ http://pl.atyp.us/wordpress/?p=2521

13年9⽉月16⽇日 星期⼀一

Page 61: Distributed filesystem

分区容忍性-可⽤用性“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⽇日 星期⼀一

Page 62: Distributed filesystem

分区容忍性-可⽤用性“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⽇日 星期⼀一

Page 63: Distributed filesystem

分区容忍性-可⽤用性“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⽇日 星期⼀一

Page 64: Distributed filesystem

分区容忍性-可⽤用性“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⽇日 星期⼀一

Page 65: Distributed filesystem

⼀一致性

http://www.allthingsdistributed.com/2008/12/eventually_consistent.html

13年9⽉月16⽇日 星期⼀一

Page 66: Distributed filesystem

⼀一致性

• 强⼀一致性(类似ACID)

http://www.allthingsdistributed.com/2008/12/eventually_consistent.html

13年9⽉月16⽇日 星期⼀一

Page 67: Distributed filesystem

⼀一致性

• 强⼀一致性(类似ACID)• 弱⼀一致性(⽆无保证)- 不⼀一致窗⼝口

http://www.allthingsdistributed.com/2008/12/eventually_consistent.html

13年9⽉月16⽇日 星期⼀一

Page 68: Distributed filesystem

⼀一致性

• 强⼀一致性(类似ACID)• 弱⼀一致性(⽆无保证)- 不⼀一致窗⼝口•最终⼀一致性(⽐比如DNS)

http://www.allthingsdistributed.com/2008/12/eventually_consistent.html

13年9⽉月16⽇日 星期⼀一

Page 69: Distributed filesystem

⼀一致性 NWR模型

13年9⽉月16⽇日 星期⼀一

Page 70: Distributed filesystem

⼀一致性 NWR模型N = 数据副本的节点数

13年9⽉月16⽇日 星期⼀一

Page 71: Distributed filesystem

⼀一致性 NWR模型N = 数据副本的节点数

W = 成功写操作的最少节点数

13年9⽉月16⽇日 星期⼀一

Page 72: Distributed filesystem

⼀一致性 NWR模型N = 数据副本的节点数

W = 成功写操作的最少节点数

R = 成功读操作的最少节点数

13年9⽉月16⽇日 星期⼀一

Page 73: Distributed filesystem

⼀一致性 NWR模型N = 数据副本的节点数

W = 成功写操作的最少节点数

R = 成功读操作的最少节点数

W + R > N

13年9⽉月16⽇日 星期⼀一

Page 74: Distributed filesystem

⼀一致性 NWR模型N = 数据副本的节点数

W = 成功写操作的最少节点数

R = 成功读操作的最少节点数

W + R > N 强⼀一致性(通常 N=3,W=R=2)

13年9⽉月16⽇日 星期⼀一

Page 75: Distributed filesystem

⼀一致性 NWR模型N = 数据副本的节点数

W = 成功写操作的最少节点数

R = 成功读操作的最少节点数

W + R > N 强⼀一致性(通常 N=3,W=R=2)

W + R ≤ N

13年9⽉月16⽇日 星期⼀一

Page 76: Distributed filesystem

⼀一致性 NWR模型N = 数据副本的节点数

W = 成功写操作的最少节点数

R = 成功读操作的最少节点数

W + R > N 强⼀一致性(通常 N=3,W=R=2)

W + R ≤ N 弱⼀一致性

13年9⽉月16⽇日 星期⼀一

Page 77: Distributed filesystem

⼀一致性 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⽇日 星期⼀一

Page 78: Distributed filesystem

基于模的哈希N1 N2 N3 N4

13年9⽉月16⽇日 星期⼀一

Page 79: Distributed filesystem

基于模的哈希

?

N1 N2 N3 N4

13年9⽉月16⽇日 星期⼀一

Page 80: Distributed filesystem

基于模的哈希

?

partition  =  key  %  n_servers

N1 N2 N3 N4

13年9⽉月16⽇日 星期⼀一

Page 81: Distributed filesystem

基于模的哈希

partition  =  key  %  n_servers

N1 N2 N3 N4

13年9⽉月16⽇日 星期⼀一

Page 82: Distributed filesystem

基于模的哈希

partition  =  key  %  n_servers

N1 N2 N3 N4

13年9⽉月16⽇日 星期⼀一

Page 83: Distributed filesystem

基于模的哈希

partition  =  key  %  n_servers

N1 N2 N3 N4

13年9⽉月16⽇日 星期⼀一

Page 84: Distributed filesystem

基于模的哈希

partition  =  key  %  n_servers

N1 N2 N3 N4

partition  =  key  %  (n_servers  -­‐  1)

13年9⽉月16⽇日 星期⼀一

Page 85: Distributed filesystem

基于模的哈希

partition  =  key  %  n_servers

N1 N2 N3 N4

partition  =  key  %  (n_servers  -­‐  1)

当n_servers改变时,重新计算所有的资源(i.e 节点改变时,资源需要全部重新分布)

13年9⽉月16⽇日 星期⼀一

Page 86: Distributed filesystem

⼀一致哈希

http://en.wikipedia.org/wiki/Consistent_hashing13年9⽉月16⽇日 星期⼀一

Page 87: Distributed filesystem

Ring(Key space)

02160

⼀一致哈希

http://en.wikipedia.org/wiki/Consistent_hashing13年9⽉月16⽇日 星期⼀一

Page 88: Distributed filesystem

Ring(Key space)

02160

⼀一致哈希

创建⼀一个针对数据以及节点的hash函数

idx = hash(key)

协调器: 延顺指针⽅方向的第⼀一个有效节点

http://en.wikipedia.org/wiki/Consistent_hashing13年9⽉月16⽇日 星期⼀一

Page 89: Distributed filesystem

Ring(Key space)

02160

⼀一致哈希

创建⼀一个针对数据以及节点的hash函数

idx = hash(key)

协调器: 延顺指针⽅方向的第⼀一个有效节点

http://en.wikipedia.org/wiki/Consistent_hashing

A

E

F

B

CD

13年9⽉月16⽇日 星期⼀一

Page 90: Distributed filesystem

Ring(Key space)

02160

⼀一致哈希

创建⼀一个针对数据以及节点的hash函数

idx = hash(key)

协调器: 延顺指针⽅方向的第⼀一个有效节点

http://en.wikipedia.org/wiki/Consistent_hashing

A

E

F

B

CD

13年9⽉月16⽇日 星期⼀一

Page 91: Distributed filesystem

Ring(Key space)

02160

⼀一致哈希

创建⼀一个针对数据以及节点的hash函数

idx = hash(key)

协调器: 延顺指针⽅方向的第⼀一个有效节点

http://en.wikipedia.org/wiki/Consistent_hashing

A

E

F

B

CD

13年9⽉月16⽇日 星期⼀一

Page 92: Distributed filesystem

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⽇日 星期⼀一

Page 93: Distributed filesystem

Ring(Key space)

02160

⼀一致哈希

创建⼀一个针对数据以及节点的hash函数

idx = hash(key)

协调器: 延顺指针⽅方向的第⼀一个有效节点

http://en.wikipedia.org/wiki/Consistent_hashing

A

E

F

B

CD

13年9⽉月16⽇日 星期⼀一

Page 94: Distributed filesystem

Ring(Key space)

02160

⼀一致哈希

创建⼀一个针对数据以及节点的hash函数

idx = hash(key)

协调器: 延顺指针⽅方向的第⼀一个有效节点

http://en.wikipedia.org/wiki/Consistent_hashing

A

E

F

CD

13年9⽉月16⽇日 星期⼀一

Page 95: Distributed filesystem

Ring(Key space)

02160

⼀一致哈希

创建⼀一个针对数据以及节点的hash函数

idx = hash(key)

协调器: 延顺指针⽅方向的第⼀一个有效节点

http://en.wikipedia.org/wiki/Consistent_hashing

A

E

F

CD

13年9⽉月16⽇日 星期⼀一

Page 96: Distributed filesystem

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⽇日 星期⼀一

Page 97: Distributed filesystem

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⽇日 星期⼀一

Page 98: Distributed filesystem

⼀一致哈希:复制

Ring(Key space)

A

B

CD

E

F

http://horicky.blogspot.com/2009/11/nosql-patterns.html13年9⽉月16⽇日 星期⼀一

Page 99: Distributed filesystem

⼀一致哈希:复制

Ring(Key space)

A

B

CD

E

F

http://horicky.blogspot.com/2009/11/nosql-patterns.html13年9⽉月16⽇日 星期⼀一

Page 100: Distributed filesystem

⼀一致哈希:复制

Ring(Key space)

A

B

CD

E

F

http://horicky.blogspot.com/2009/11/nosql-patterns.html

数据延顺指针⽅方向分布到N -1 有效节点上

13年9⽉月16⽇日 星期⼀一

Page 101: Distributed filesystem

⼀一致哈希:复制

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⽇日 星期⼀一

Page 102: Distributed filesystem

⼀一致哈希:复制

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⽇日 星期⼀一

Page 103: Distributed filesystem

⼀一致哈希:节点改变

A

B

CD

E

F

http://horicky.blogspot.com/2009/11/nosql-patterns.html

当有节点加⼊入或者离开⺴⽹网络时,数据关系以及副本需要更新。

⺴⽹网络内所有副本数据保持⼀一致。

13年9⽉月16⽇日 星期⼀一

Page 104: Distributed filesystem

⼀一致哈希:节点改变

A

CD

E

F

http://horicky.blogspot.com/2009/11/nosql-patterns.html

当有节点加⼊入或者离开⺴⽹网络时,数据关系以及副本需要更新。

⺴⽹网络内所有副本数据保持⼀一致。

13年9⽉月16⽇日 星期⼀一

Page 105: Distributed filesystem

⼀一致哈希:节点改变

A

CD

E

F

http://horicky.blogspot.com/2009/11/nosql-patterns.html

拷⻉贝节点E,F之间的所有数据

当有节点加⼊入或者离开⺴⽹网络时,数据关系以及副本需要更新。

⺴⽹网络内所有副本数据保持⼀一致。

13年9⽉月16⽇日 星期⼀一

Page 106: Distributed filesystem

⼀一致哈希:节点改变

A

CD

E

F

http://horicky.blogspot.com/2009/11/nosql-patterns.html

拷⻉贝节点E,F之间的所有数据

拷⻉贝节点F,A之间的所有数据

当有节点加⼊入或者离开⺴⽹网络时,数据关系以及副本需要更新。

⺴⽹网络内所有副本数据保持⼀一致。

13年9⽉月16⽇日 星期⼀一

Page 107: Distributed filesystem

⼀一致哈希:节点改变

A

CD

E

F

http://horicky.blogspot.com/2009/11/nosql-patterns.html

拷⻉贝节点E,F之间的所有数据

拷⻉贝节点F,A之间的所有数据

拷⻉贝节点A,B之间的所有数据

当有节点加⼊入或者离开⺴⽹网络时,数据关系以及副本需要更新。

⺴⽹网络内所有副本数据保持⼀一致。

13年9⽉月16⽇日 星期⼀一

Page 108: Distributed filesystem

⼀一致哈希:数据倾斜

Ring(Key space)

A

B

http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg13年9⽉月16⽇日 星期⼀一

Page 109: Distributed filesystem

⼀一致哈希:数据倾斜

Ring(Key space)

A

B

http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg13年9⽉月16⽇日 星期⼀一

Page 110: Distributed filesystem

⼀一致哈希:数据倾斜

Ring(Key space)

A

B

http://news.shangdu.com/102/20121019/P_5714444_0__297724710.jpg

元芳,此事你怎么看?

⼤大⼈人,我看还得赶紧想别的办法

13年9⽉月16⽇日 星期⼀一

Page 111: Distributed filesystem

⼀一致哈希:虚拟节点

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⽇日 星期⼀一

Page 112: Distributed filesystem

分布式⽂文件系统

13年9⽉月16⽇日 星期⼀一

Page 113: Distributed filesystem

分布式⽂文件系统

• Google Filesystem

13年9⽉月16⽇日 星期⼀一

Page 114: Distributed filesystem

分布式⽂文件系统

• Google Filesystem

• Taobao Filesystem

13年9⽉月16⽇日 星期⼀一

Page 115: Distributed filesystem

分布式⽂文件系统

• Google Filesystem

• Taobao Filesystem

• Hadoop Distributed Filesystem

13年9⽉月16⽇日 星期⼀一

Page 116: Distributed filesystem

分布式⽂文件系统

• Google Filesystem

• Taobao Filesystem

• Hadoop Distributed Filesystem

• Mogile Filesystem

13年9⽉月16⽇日 星期⼀一

Page 117: Distributed filesystem

分布式⽂文件系统

• Google Filesystem

• Taobao Filesystem

• Hadoop Distributed Filesystem

• Mogile Filesystem

• Moose Filesystem

13年9⽉月16⽇日 星期⼀一

Page 118: Distributed filesystem

Google File system

13年9⽉月16⽇日 星期⼀一

Page 119: Distributed filesystem

Why

13年9⽉月16⽇日 星期⼀一

Page 120: Distributed filesystem

Why

• Google需要⼀一个分布式⽂文件系统

•在廉价和不可靠的机器上存储巨量数据

13年9⽉月16⽇日 星期⼀一

Page 121: Distributed filesystem

Why

• Google需要⼀一个分布式⽂文件系统

•在廉价和不可靠的机器上存储巨量数据•为什么不使⽤用已经存在的⽂文件系统?• Google有和其他任何⼈人都不相同的问题

• GFS 专为Google应⽤用和负载设计

• Google应⽤用专为GFS设计

13年9⽉月16⽇日 星期⼀一

Page 122: Distributed filesystem

GFS 设计思路

13年9⽉月16⽇日 星期⼀一

Page 123: Distributed filesystem

GFS 设计思路

• ⺫⽬目标• 性能、可伸缩性、可靠性、可⽤用性

13年9⽉月16⽇日 星期⼀一

Page 124: Distributed filesystem

GFS 设计思路

• ⺫⽬目标• 性能、可伸缩性、可靠性、可⽤用性

• 应⽤用特定场景• 组件故障是常态⽽而不是异常• 处理的⽂文件都是巨型的• ⼤大部分⽂文件的变化都是追加⽽而不是覆盖,随机写⼏几乎不存在。

13年9⽉月16⽇日 星期⼀一

Page 125: Distributed filesystem

前提设定

13年9⽉月16⽇日 星期⼀一

Page 126: Distributed filesystem

前提设定

• 组件失败是常态

13年9⽉月16⽇日 星期⼀一

Page 127: Distributed filesystem

前提设定

• 组件失败是常态• 存储的绝⼤大部分都是⼤大⽂文件

• ⽂文件数在百万级别• 每个⽂文件都在100M以上,⼀一般都是GB级别

13年9⽉月16⽇日 星期⼀一

Page 128: Distributed filesystem

前提设定

• 组件失败是常态• 存储的绝⼤大部分都是⼤大⽂文件

• ⽂文件数在百万级别• 每个⽂文件都在100M以上,⼀一般都是GB级别

• ⽂文件只写⼀一次,绝⼤大部分是追加

13年9⽉月16⽇日 星期⼀一

Page 129: Distributed filesystem

前提设定

• 组件失败是常态• 存储的绝⼤大部分都是⼤大⽂文件

• ⽂文件数在百万级别• 每个⽂文件都在100M以上,⼀一般都是GB级别

• ⽂文件只写⼀一次,绝⼤大部分是追加• ⼤大量的流式读

13年9⽉月16⽇日 星期⼀一

Page 130: Distributed filesystem

前提设定

• 组件失败是常态• 存储的绝⼤大部分都是⼤大⽂文件

• ⽂文件数在百万级别• 每个⽂文件都在100M以上,⼀一般都是GB级别

• ⽂文件只写⼀一次,绝⼤大部分是追加• ⼤大量的流式读• 低延迟,⾼高吞吐

13年9⽉月16⽇日 星期⼀一

Page 131: Distributed filesystem

GFS 架构

http://research.google.com/archive/gfs-sosp2003.pdf13年9⽉月16⽇日 星期⼀一

Page 132: Distributed filesystem

GFS 架构

http://research.google.com/archive/gfs-sosp2003.pdf

单⼀一,维护所有元数据,负责主导⼀一些影响整个系统的活动

13年9⽉月16⽇日 星期⼀一

Page 133: Distributed filesystem

GFS 架构

http://research.google.com/archive/gfs-sosp2003.pdf

单⼀一,维护所有元数据,负责主导⼀一些影响整个系统的活动

多节点,将chunk存储为Linux⽂文件

13年9⽉月16⽇日 星期⼀一

Page 134: Distributed filesystem

GFS 架构

http://research.google.com/archive/gfs-sosp2003.pdf

单⼀一,维护所有元数据,负责主导⼀一些影响整个系统的活动

多节点,将chunk存储为Linux⽂文件

专⽤用客户端,类似传统⽂文件系统API,负责和Master以及Chunkserver通信

13年9⽉月16⽇日 星期⼀一

Page 135: Distributed filesystem

GFS: Master

13年9⽉月16⽇日 星期⼀一

Page 136: Distributed filesystem

GFS: Master• 存储元数据

13年9⽉月16⽇日 星期⼀一

Page 137: Distributed filesystem

GFS: Master• 存储元数据• 命名空间管理、锁定

13年9⽉月16⽇日 星期⼀一

Page 138: Distributed filesystem

GFS: Master• 存储元数据• 命名空间管理、锁定• 和chunkservers的周期通信

• 发出指令,状态收集,集群健康追踪

13年9⽉月16⽇日 星期⼀一

Page 139: Distributed filesystem

GFS: Master• 存储元数据• 命名空间管理、锁定• 和chunkservers的周期通信

• 发出指令,状态收集,集群健康追踪• Chunk创建、重复制、重平衡

• 在空间和访问速度之间平衡• 传播副本到不同机架,以防⽌止关联失败• 如果副本冗余度低于阀值,重复制• 重新平衡数据来消除存储和请求负载

13年9⽉月16⽇日 星期⼀一

Page 140: Distributed filesystem

GFS: Master• 存储元数据• 命名空间管理、锁定• 和chunkservers的周期通信

• 发出指令,状态收集,集群健康追踪• Chunk创建、重复制、重平衡

• 在空间和访问速度之间平衡• 传播副本到不同机架,以防⽌止关联失败• 如果副本冗余度低于阀值,重复制• 重新平衡数据来消除存储和请求负载

• 垃圾回收• 简化,相⽐比传统⽂文件删除更可靠• master记录删除,然后重命名⽂文件为隐藏⽂文件(dot file)

• 惰性垃圾回收隐藏⽂文件

13年9⽉月16⽇日 星期⼀一

Page 141: Distributed filesystem

GFS: Master• 存储元数据• 命名空间管理、锁定• 和chunkservers的周期通信

• 发出指令,状态收集,集群健康追踪• Chunk创建、重复制、重平衡

• 在空间和访问速度之间平衡• 传播副本到不同机架,以防⽌止关联失败• 如果副本冗余度低于阀值,重复制• 重新平衡数据来消除存储和请求负载

• 垃圾回收• 简化,相⽐比传统⽂文件删除更可靠• master记录删除,然后重命名⽂文件为隐藏⽂文件(dot file)

• 惰性垃圾回收隐藏⽂文件• 腐化副本删除

• 使⽤用版本号来删除腐化副本

13年9⽉月16⽇日 星期⼀一

Page 142: Distributed filesystem

GFS:Chunkserver

13年9⽉月16⽇日 星期⼀一

Page 143: Distributed filesystem

GFS:Chunkserver

• 把64MB⼀一个的chunk当做普通Linux⽂文件存储到本地磁盘,每个chunk都有版本号以及校验和(checksum)

13年9⽉月16⽇日 星期⼀一

Page 144: Distributed filesystem

GFS:Chunkserver

• 把64MB⼀一个的chunk当做普通Linux⽂文件存储到本地磁盘,每个chunk都有版本号以及校验和(checksum)

• 按照chunk句柄和字节范围读写chunk数据

13年9⽉月16⽇日 星期⼀一

Page 145: Distributed filesystem

GFS:Chunkserver

• 把64MB⼀一个的chunk当做普通Linux⽂文件存储到本地磁盘,每个chunk都有版本号以及校验和(checksum)

• 按照chunk句柄和字节范围读写chunk数据

• 复制可配置的chunk数量到其他chunkserver(缺省:3)

13年9⽉月16⽇日 星期⼀一

Page 146: Distributed filesystem

GFS:Chunkserver

• 把64MB⼀一个的chunk当做普通Linux⽂文件存储到本地磁盘,每个chunk都有版本号以及校验和(checksum)

• 按照chunk句柄和字节范围读写chunk数据

• 复制可配置的chunk数量到其他chunkserver(缺省:3)

• 不缓存⽂文件数据

13年9⽉月16⽇日 星期⼀一

Page 147: Distributed filesystem

GFS: Client

13年9⽉月16⽇日 星期⼀一

Page 148: Distributed filesystem

GFS: Client

•使⽤用GFS的客户端API,类似传统⽂文件系统API

13年9⽉月16⽇日 星期⼀一

Page 149: Distributed filesystem

GFS: Client

•使⽤用GFS的客户端API,类似传统⽂文件系统API

•发出控制请求给master server

13年9⽉月16⽇日 星期⼀一

Page 150: Distributed filesystem

GFS: Client

•使⽤用GFS的客户端API,类似传统⽂文件系统API

•发出控制请求给master server

•发送数据请求到chunk servers

13年9⽉月16⽇日 星期⼀一

Page 151: Distributed filesystem

GFS: Client

•使⽤用GFS的客户端API,类似传统⽂文件系统API

•发出控制请求给master server

•发送数据请求到chunk servers

•缓存元数据(时效性)

13年9⽉月16⽇日 星期⼀一

Page 152: Distributed filesystem

GFS: Client

•使⽤用GFS的客户端API,类似传统⽂文件系统API

•发出控制请求给master server

•发送数据请求到chunk servers

•缓存元数据(时效性)•不缓存⽂文件数据

13年9⽉月16⽇日 星期⼀一

Page 153: Distributed filesystem

GFS: metadata

13年9⽉月16⽇日 星期⼀一

Page 154: Distributed filesystem

GFS: metadata

• 全局metadata保存在master

• ⽂文件和chunk命名空间

• ⽂文件到chunk的映射

• 每个chunk的副本位置

13年9⽉月16⽇日 星期⼀一

Page 155: Distributed filesystem

GFS: metadata

• 全局metadata保存在master

• ⽂文件和chunk命名空间

• ⽂文件到chunk的映射

• 每个chunk的副本位置

• 保存在内存中(≈64Bytes /chunk)

• 快速• 更容易访问

13年9⽉月16⽇日 星期⼀一

Page 156: Distributed filesystem

GFS: metadata

• 全局metadata保存在master

• ⽂文件和chunk命名空间

• ⽂文件到chunk的映射

• 每个chunk的副本位置

• 保存在内存中(≈64Bytes /chunk)

• 快速• 更容易访问

• 通过操作⽇日志持久化来保存关键元数据更新• 在本地磁盘实现持久化• ⽇日志跨节点复制• 利⽤用checkpoint实现快速恢复

13年9⽉月16⽇日 星期⼀一

Page 157: Distributed filesystem

Client Read

13年9⽉月16⽇日 星期⼀一

Page 158: Distributed filesystem

Client Read

• Client发送给Master:

• read(file name,chunk index)

13年9⽉月16⽇日 星期⼀一

Page 159: Distributed filesystem

Client Read

• Client发送给Master:

• read(file name,chunk index)

• Master回应:

• chunk ID,chunk version number,locations of replicas

13年9⽉月16⽇日 星期⼀一

Page 160: Distributed filesystem

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⽇日 星期⼀一

Page 161: Distributed filesystem

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⽇日 星期⼀一

Page 162: Distributed filesystem

Client Write

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 163: Distributed filesystem

Client Write

Client

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 164: Distributed filesystem

Client Write

Client Masterstep 1

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 165: Distributed filesystem

Client Write

Client Masterstep 1

2

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 166: Distributed filesystem

Client Write

Client Master

Secondary Replica A

Primary Replica

Secondary Replica B

step 1

23

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 167: Distributed filesystem

Client Write

Client Master

Secondary Replica A

Primary Replica

Secondary Replica B

step 1

23

4

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 168: Distributed filesystem

Client Write

Client Master

Secondary Replica A

Primary Replica

Secondary Replica B

step 1

23

4

5

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 169: Distributed filesystem

Client Write

Client Master

Secondary Replica A

Primary Replica

Secondary Replica B

step 1

23

4

5

6

6

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 170: Distributed filesystem

Client Write

Client Master

Secondary Replica A

Primary Replica

Secondary Replica B

step 1

23

4

5

6

6

7

图例:控制流数据流

13年9⽉月16⽇日 星期⼀一

Page 171: Distributed filesystem

Client Record Append

13年9⽉月16⽇日 星期⼀一

Page 172: Distributed filesystem

Client Record Append

• Client提供追加的数据

13年9⽉月16⽇日 星期⼀一

Page 173: Distributed filesystem

Client Record Append

• Client提供追加的数据

• GFS原⼦子⽅方式追加到⽂文件

• GFS选择偏移,⼀一般是⽂文件末尾

• ⽀支持并⾏行写

13年9⽉月16⽇日 星期⼀一

Page 174: Distributed filesystem

Client Record Append

• Client提供追加的数据

• GFS原⼦子⽅方式追加到⽂文件

• GFS选择偏移,⼀一般是⽂文件末尾

• ⽀支持并⾏行写• Google应⽤用程序重度使⽤用

• 多⽣生产者-单消费者队列

13年9⽉月16⽇日 星期⼀一

Page 175: Distributed filesystem

GFS 松散⼀一致性模型

Write Record Append

Serial success defined defined interspersed with inconsistentConcurrent successes consistent but undefined

defined interspersed with inconsistent

Failure inconsistentinconsistent

13年9⽉月16⽇日 星期⼀一

Page 176: Distributed filesystem

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⽇日 星期⼀一

Page 177: Distributed filesystem

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⽇日 星期⼀一

Page 178: Distributed filesystem

容灾

13年9⽉月16⽇日 星期⼀一

Page 179: Distributed filesystem

容灾

• HA

• 快速恢复• master和chunkserver在⼏几秒内重启完毕

• chunk 复制

• 默认3份,不同命名空间可以复制不同版本

• shadow master

13年9⽉月16⽇日 星期⼀一

Page 180: Distributed filesystem

容灾

• HA

• 快速恢复• master和chunkserver在⼏几秒内重启完毕

• chunk 复制

• 默认3份,不同命名空间可以复制不同版本

• shadow master

• 数据完整性• 针对chunk,每64KB块做⼀一个checksum

13年9⽉月16⽇日 星期⼀一

Page 181: Distributed filesystem

GFS 实例

集群 A B

chunkserver数 342 227

有效磁盘空间已⽤用磁盘空间

72 TB55 TB

180 TB155 TB

⽂文件数⽆无效⽂文件数chunk数

735 k22 k992 k

737 k232 k1550 k

chunkserver上的元数据⼤大⼩小master上的元数据⼤大⼩小

13 GB48 MB

21 GB60 MB

http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google/gfs-sosp2003.pdf13年9⽉月16⽇日 星期⼀一

Page 182: Distributed filesystem

Taobao Filesystem

13年9⽉月16⽇日 星期⼀一

Page 183: Distributed filesystem

Taobao Filesystem

13年9⽉月16⽇日 星期⼀一

Page 184: Distributed filesystem

Taobao Filesystem

• 2007年6⽉月创建

13年9⽉月16⽇日 星期⼀一

Page 185: Distributed filesystem

Taobao Filesystem

• 2007年6⽉月创建

•⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网服务

13年9⽉月16⽇日 星期⼀一

Page 186: Distributed filesystem

Taobao Filesystem

• 2007年6⽉月创建

•⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网服务

•为海量⾮非结构化数据优化

13年9⽉月16⽇日 星期⼀一

Page 187: Distributed filesystem

Taobao Filesystem

• 2007年6⽉月创建

•⾼高可扩展、⾼高可⽤用、⾼高性能、⾯面向互联⺴⽹网服务

•为海量⾮非结构化数据优化•⽀支持海量⼩小⽂文件存储

13年9⽉月16⽇日 星期⼀一

Page 188: Distributed filesystem

TFS-动机

13年9⽉月16⽇日 星期⼀一

Page 189: Distributed filesystem

TFS-动机

• 系统需求• 淘宝的影响越来越⼤大,数据的安全越来越重要• 数据存储量每年2倍的速度增⻓长

13年9⽉月16⽇日 星期⼀一

Page 190: Distributed filesystem

TFS-动机

• 系统需求• 淘宝的影响越来越⼤大,数据的安全越来越重要• 数据存储量每年2倍的速度增⻓长

• 商⽤用存储产品• 对⼩小⽂文件的存储⽆无法优化• ⽂文件数量⼤大,NAS⽆无法⽀支持

• 连接的服务器越来越多,⺴⽹网络连接达到NAS设备极限

• 扩展成本⾼高,10T的存储容量需要上百万⼈人民币

• 单点,容灾和安全性⽆无法得到很好的保证

13年9⽉月16⽇日 星期⼀一

Page 191: Distributed filesystem

TFS - 架构

http://code.taobao.org/p/tfs/wiki/intro/

13年9⽉月16⽇日 星期⼀一

Page 192: Distributed filesystem

TFS - 特性

13年9⽉月16⽇日 星期⼀一

Page 193: Distributed filesystem

TFS - 特性

• 集群由⼀一对NameServer和多台DataServer构成

13年9⽉月16⽇日 星期⼀一

Page 194: Distributed filesystem

TFS - 特性

• 集群由⼀一对NameServer和多台DataServer构成

• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB⼀一个block)

13年9⽉月16⽇日 星期⼀一

Page 195: Distributed filesystem

TFS - 特性

• 集群由⼀一对NameServer和多台DataServer构成

• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB⼀一个block)

• block有多个副本

13年9⽉月16⽇日 星期⼀一

Page 196: Distributed filesystem

TFS - 特性

• 集群由⼀一对NameServer和多台DataServer构成

• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB⼀一个block)

• block有多个副本

• DataServer上⽤用Linux⽂文件系统存储数据⽂文件

13年9⽉月16⽇日 星期⼀一

Page 197: Distributed filesystem

TFS - 特性

• 集群由⼀一对NameServer和多台DataServer构成

• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB⼀一个block)

• block有多个副本

• DataServer上⽤用Linux⽂文件系统存储数据⽂文件

• non-RAID,每个进程管理⼀一块磁盘

13年9⽉月16⽇日 星期⼀一

Page 198: Distributed filesystem

TFS - 特性

• 集群由⼀一对NameServer和多台DataServer构成

• 以block⽂文件的形式存储数据⽂文件(⼀一般64MB⼀一个block)

• block有多个副本

• DataServer上⽤用Linux⽂文件系统存储数据⽂文件

• non-RAID,每个进程管理⼀一块磁盘

• ⽂文件名内置元数据信息,⽤用户⾃自⼰己保存TFS⽂文件名与实际⽂文件的对照关系

13年9⽉月16⽇日 星期⼀一

Page 199: Distributed filesystem

TFS - ⽂文件名结构

13年9⽉月16⽇日 星期⼀一

Page 200: Distributed filesystem

TFS - ⽂文件名结构• ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节

13年9⽉月16⽇日 星期⼀一

Page 201: Distributed filesystem

TFS - ⽂文件名结构• ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节

• ⽂文件 = T+[1-9]+encode(<block_id> + <file_id>) + hash(.<suffix>)

13年9⽉月16⽇日 星期⼀一

Page 202: Distributed filesystem

TFS - ⽂文件名结构• ⽂文件名由块号和⽂文件号通过某种关系组成,最⼤大⻓长度18字节

• ⽂文件 = T+[1-9]+encode(<block_id> + <file_id>) + hash(.<suffix>)

• ⽂文件名由客户端程序进⾏行编码和解码

13年9⽉月16⽇日 星期⼀一

Page 203: Distributed filesystem

Nameserver职责

13年9⽉月16⽇日 星期⼀一

Page 204: Distributed filesystem

Nameserver职责

•管理维护Block和DataServer的相关信息

13年9⽉月16⽇日 星期⼀一

Page 205: Distributed filesystem

Nameserver职责

•管理维护Block和DataServer的相关信息

•负责Block的创建、删除、复制、均衡、整理

13年9⽉月16⽇日 星期⼀一

Page 206: Distributed filesystem

Nameserver职责

•管理维护Block和DataServer的相关信息

•负责Block的创建、删除、复制、均衡、整理

•不负责实际数据的读写

13年9⽉月16⽇日 星期⼀一

Page 207: Distributed filesystem

DataServer 职责

13年9⽉月16⽇日 星期⼀一

Page 208: Distributed filesystem

DataServer 职责

•负责实际数据的存储和读写

13年9⽉月16⽇日 星期⼀一

Page 209: Distributed filesystem

TFS - 元数据

13年9⽉月16⽇日 星期⼀一

Page 210: Distributed filesystem

TFS - Read

13年9⽉月16⽇日 星期⼀一

Page 211: Distributed filesystem

TFS - Write

13年9⽉月16⽇日 星期⼀一

Page 212: Distributed filesystem

TFS - 容灾

13年9⽉月16⽇日 星期⼀一

Page 213: Distributed filesystem

TFS - 容灾

• 集群容灾• TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。主集群把所有操作重放到辅集群

13年9⽉月16⽇日 星期⼀一

Page 214: Distributed filesystem

TFS - 容灾

• 集群容灾• TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。主集群把所有操作重放到辅集群

• NameServer容灾

• HA架构,使⽤用vip,主从同步

13年9⽉月16⽇日 星期⼀一

Page 215: Distributed filesystem

TFS - 容灾

• 集群容灾• TFS配置主辅集群,防⽌止不同机房,辅集群提供只读。主集群把所有操作重放到辅集群

• NameServer容灾

• HA架构,使⽤用vip,主从同步

• DataServer容灾

• Block多副本,跨⺴⽹网段。

• 所有副本写⼊入成功,才返回成功• 有腐化副本,TFS启动复制流程

• 每个⽂文件记录校验CRC

13年9⽉月16⽇日 星期⼀一

Page 216: Distributed filesystem

Hadoop Distributed Filesystem

http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf

13年9⽉月16⽇日 星期⼀一

Page 217: Distributed filesystem

Hadoop Distributed Filesystem

13年9⽉月16⽇日 星期⼀一

Page 218: Distributed filesystem

Hadoop Distributed Filesystem

•灵感来⾃自Goole Filesystem

13年9⽉月16⽇日 星期⼀一

Page 219: Distributed filesystem

Hadoop Distributed Filesystem

•灵感来⾃自Goole Filesystem

•⾼高容灾特性

13年9⽉月16⽇日 星期⼀一

Page 220: Distributed filesystem

Hadoop Distributed Filesystem

•灵感来⾃自Goole Filesystem

•⾼高容灾特性•设计为可部署在廉价硬件上

13年9⽉月16⽇日 星期⼀一

Page 221: Distributed filesystem

Hadoop Distributed Filesystem

•灵感来⾃自Goole Filesystem

•⾼高容灾特性•设计为可部署在廉价硬件上•为Apache Hadoop的⼦子项⺫⽬目

13年9⽉月16⽇日 星期⼀一

Page 222: Distributed filesystem

HDFS - 架构

!

13年9⽉月16⽇日 星期⼀一

Page 223: Distributed filesystem

HDFS - NameNode

13年9⽉月16⽇日 星期⼀一

Page 224: Distributed filesystem

HDFS - NameNode

•⼀一个集群中只有⼀一个,简化设计

13年9⽉月16⽇日 星期⼀一

Page 225: Distributed filesystem

HDFS - NameNode

•⼀一个集群中只有⼀一个,简化设计•负责管理⽂文件系统的名字空间并协调客户对⽂文件的访问

13年9⽉月16⽇日 星期⼀一

Page 226: Distributed filesystem

HDFS - NameNode

•⼀一个集群中只有⼀一个,简化设计•负责管理⽂文件系统的名字空间并协调客户对⽂文件的访问

•执⾏行⽂文件系统的名字空间操作(create,open,rename)

13年9⽉月16⽇日 星期⼀一

Page 227: Distributed filesystem

HDFS - NameNode

•⼀一个集群中只有⼀一个,简化设计•负责管理⽂文件系统的名字空间并协调客户对⽂文件的访问

•执⾏行⽂文件系统的名字空间操作(create,open,rename)

•管理数据块到数据节点的映射

13年9⽉月16⽇日 星期⼀一

Page 228: Distributed filesystem

HDFS - DataNode(s)

13年9⽉月16⽇日 星期⼀一

Page 229: Distributed filesystem

HDFS - DataNode(s)

•⼀一个服务节点上部署⼀一个DataNode

13年9⽉月16⽇日 星期⼀一

Page 230: Distributed filesystem

HDFS - DataNode(s)

•⼀一个服务节点上部署⼀一个DataNode

•负责该物理节点上的存储管理

13年9⽉月16⽇日 星期⼀一

Page 231: Distributed filesystem

HDFS - DataNode(s)

•⼀一个服务节点上部署⼀一个DataNode

•负责该物理节点上的存储管理•负责提供客户的读写请求

13年9⽉月16⽇日 星期⼀一

Page 232: Distributed filesystem

HDFS - DataNode(s)

•⼀一个服务节点上部署⼀一个DataNode

•负责该物理节点上的存储管理•负责提供客户的读写请求•根据NameNode的指令执⾏行数据块的创建、删除、复制⼯工作。

13年9⽉月16⽇日 星期⼀一

Page 233: Distributed filesystem

HDFS - 数据副本

13年9⽉月16⽇日 星期⼀一

Page 234: Distributed filesystem

HDFS - 数据副本

• ⽂文件块通过复制保证容错

13年9⽉月16⽇日 星期⼀一

Page 235: Distributed filesystem

HDFS - 数据副本

• ⽂文件块通过复制保证容错• ⽂文件块⼤大⼩小及副本数量可配置

13年9⽉月16⽇日 星期⼀一

Page 236: Distributed filesystem

HDFS - 数据副本

• ⽂文件块通过复制保证容错• ⽂文件块⼤大⼩小及副本数量可配置

• 平衡副本位置对读写、⺴⽹网络传输的影响

13年9⽉月16⽇日 星期⼀一

Page 237: Distributed filesystem

HDFS -健壮性

13年9⽉月16⽇日 星期⼀一

Page 238: Distributed filesystem

HDFS -健壮性

• DataNode磁盘故障,⼼心跳和重复制

13年9⽉月16⽇日 星期⼀一

Page 239: Distributed filesystem

HDFS -健壮性

• DataNode磁盘故障,⼼心跳和重复制

•机群的重平衡

13年9⽉月16⽇日 星期⼀一

Page 240: Distributed filesystem

HDFS -健壮性

• DataNode磁盘故障,⼼心跳和重复制

•机群的重平衡•数据完整性

13年9⽉月16⽇日 星期⼀一

Page 241: Distributed filesystem

HDFS -健壮性

• DataNode磁盘故障,⼼心跳和重复制

•机群的重平衡•数据完整性•元数据磁盘失效

13年9⽉月16⽇日 星期⼀一

Page 242: Distributed filesystem

HDFS -健壮性

• DataNode磁盘故障,⼼心跳和重复制

•机群的重平衡•数据完整性•元数据磁盘失效•快照(将来⽀支持)

13年9⽉月16⽇日 星期⼀一

Page 243: Distributed filesystem

Mogile Filesystem

13年9⽉月16⽇日 星期⼀一

Page 244: Distributed filesystem

MogileFS 架构

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 245: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 246: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败 Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 247: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 248: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 249: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 250: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 251: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 252: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

• 不能追加写、随机写

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 253: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

• 不能追加写、随机写

• Tracker Client传输(mogilefsd),管理数据复制、删除、查询、修复以及监控

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 254: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

• 不能追加写、随机写

• Tracker Client传输(mogilefsd),管理数据复制、删除、查询、修复以及监控

• 数据通过HTTP/WebDAV服务上传到Storage node(mogstored)

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 255: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

• 不能追加写、随机写

• Tracker Client传输(mogilefsd),管理数据复制、删除、查询、修复以及监控

• 数据通过HTTP/WebDAV服务上传到Storage node(mogstored)

• MySQL 存储MogileFS 元数据(命名空间、位置)

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 256: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 257: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败 Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 258: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 259: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 260: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 261: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 262: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 263: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

• 不能追加写、随机写

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 264: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

• 不能追加写、随机写

• Tracker Client传输(mogilefsd),管理数据复制、删除、查询、修复以及监控

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 265: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

• 不能追加写、随机写

• Tracker Client传输(mogilefsd),管理数据复制、删除、查询、修复以及监控

• 数据通过HTTP/WebDAV服务上传到Storage node(mogstored)

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 266: Distributed filesystem

MogileFS 架构

• 应⽤用层:⽆无需特殊核⼼心组件

• ⽆无单点失败

• ⾃自动⽂文件复制

• 传输中⽴立,⽆无特殊协议

• 简单命名空间

• Shared-Nothing

• non-RAID

• 不能追加写、随机写

• Tracker Client传输(mogilefsd),管理数据复制、删除、查询、修复以及监控

• 数据通过HTTP/WebDAV服务上传到Storage node(mogstored)

• MySQL 存储MogileFS 元数据(命名空间、位置)

Client(API)

Trackers(mogilefsd)

Storage nodes(mogstored)

Tracker'sdatabase(MySQL)

13年9⽉月16⽇日 星期⼀一

Page 267: Distributed filesystem

MogileFS ⾼高可⽤用

http://www.slideshare.net/PhilippeJulio/mogilefs-architecture

0 0'����

Database

Metadata

ActiveClusterNode

PassiveClusterNode 1 2 3 4 5 6 7

Tracker Tracker Tracker Storage Storage Storage Storage

4 Storage Nodes2 Trackers nodes for HA Clusterand more than 2 for Load Balancing

13年9⽉月16⽇日 星期⼀一

Page 268: Distributed filesystem

MogileFS Internal

MogileFS

Domain(key的名字空间)

Class(最⼩小复制单元)

http://www.php-oa.com/2010/09/26/perl-mogilefs-3.html13年9⽉月16⽇日 星期⼀一

Page 269: Distributed filesystem

MogileFS Internal

• Domain

• ⼀一个MogileFS可以有多个Domain,

• ⽤用来存放不同⽂文件(⼤大⼩小、类型)

• 同⼀一个Domain内,可以必须唯⼀一

• 不同Domain内,key可以相同

MogileFS

Domain(key的名字空间)

Class(最⼩小复制单元)

http://www.php-oa.com/2010/09/26/perl-mogilefs-3.html13年9⽉月16⽇日 星期⼀一

Page 270: Distributed filesystem

MogileFS Internal

• Domain

• ⼀一个MogileFS可以有多个Domain,

• ⽤用来存放不同⽂文件(⼤大⼩小、类型)

• 同⼀一个Domain内,可以必须唯⼀一

• 不同Domain内,key可以相同

• Class

• ⽂文件属性管理• 定义⽂文件存储在不同设备上的份数

MogileFS

Domain(key的名字空间)

Class(最⼩小复制单元)

http://www.php-oa.com/2010/09/26/perl-mogilefs-3.html13年9⽉月16⽇日 星期⼀一

Page 271: Distributed filesystem

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.html13年9⽉月16⽇日 星期⼀一

Page 272: Distributed filesystem

MogileFS 数据流

13年9⽉月16⽇日 星期⼀一

Page 273: Distributed filesystem

MogileFS 数据流

• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的机器). 做⼀一个 “create_open” 请求

13年9⽉月16⽇日 星期⼀一

Page 274: Distributed filesystem

MogileFS 数据流

• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的机器). 做⼀一个 “create_open” 请求

• tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给应⽤用程序⼀一些可能⽤用的位置

13年9⽉月16⽇日 星期⼀一

Page 275: Distributed filesystem

MogileFS 数据流

• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的机器). 做⼀一个 “create_open” 请求

• tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给应⽤用程序⼀一些可能⽤用的位置

• 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另外⼀一个位置去)

13年9⽉月16⽇日 星期⼀一

Page 276: Distributed filesystem

MogileFS 数据流

• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的机器). 做⼀一个 “create_open” 请求

• tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给应⽤用程序⼀一些可能⽤用的位置

• 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另外⼀一个位置去)

• 应⽤用程序通过”create_close” 告诉tracker⽂文件写到哪⾥里去了

13年9⽉月16⽇日 星期⼀一

Page 277: Distributed filesystem

MogileFS 数据流

• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的机器). 做⼀一个 “create_open” 请求

• tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给应⽤用程序⼀一些可能⽤用的位置

• 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另外⼀一个位置去)

• 应⽤用程序通过”create_close” 告诉tracker⽂文件写到哪⾥里去了

• tracker 将该名称和域命的名空间关联 (通过数据库来做的)

13年9⽉月16⽇日 星期⼀一

Page 278: Distributed filesystem

MogileFS 数据流

• 应⽤用程序请求打开⼀一个⽂文件 (通过RPC 通知到 tracker, 找到⼀一个可⽤用的机器). 做⼀一个 “create_open” 请求

• tracker 做⼀一些负载均衡(load balancing)处理,决定应该去哪⼉儿,然后给应⽤用程序⼀一些可能⽤用的位置

• 应⽤用程序写到其中的⼀一个位置去 (如果写失败,他会重新尝试并写到另外⼀一个位置去)

• 应⽤用程序通过”create_close” 告诉tracker⽂文件写到哪⾥里去了

• tracker 将该名称和域命的名空间关联 (通过数据库来做的)

• tracker, 在后台, 开始复制⽂文件,知道他满⾜足该⽂文件类别设定的复制规则

13年9⽉月16⽇日 星期⼀一

Page 279: Distributed filesystem

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⽇日 星期⼀一

Page 280: Distributed filesystem

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⽇日 星期⼀一

Page 281: Distributed filesystem

Moose Filesystem

13年9⽉月16⽇日 星期⼀一

Page 282: Distributed filesystem

MooseFS 特性

• MooseFS可以充当类Unix的⽂文件系统

• 层次结构(⺫⽬目录树)• 存储POSIX⽂文件属性(权限、最后访问时间,修改时间等)

• ⽀支持特殊⽂文件(块设备、字符设备、管道以及套接字)• 符号链接、硬链接• ⽂文件访问可受限于IP地址和(或)密码

• 分布式特性• ⾼高可靠性(数据多副本)• 通过增加节点或者磁盘动态扩容• 惰性⽂文件删除(⽂文件系统级别的垃圾桶)• 提供⼀一致的⽂文件快照,即使⽂文件正在访问或者写⼊入

http://www.moosefs.org/13年9⽉月16⽇日 星期⼀一

Page 283: Distributed filesystem

MooseFS 组件

http://www.moosefs.org/13年9⽉月16⽇日 星期⼀一

Page 284: Distributed filesystem

MooseFS 组件

• Manager Server (master server)

• 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包括⼤大⼩小、属性、⽂文件位置)

http://www.moosefs.org/13年9⽉月16⽇日 星期⼀一

Page 285: Distributed filesystem

MooseFS 组件

• Manager Server (master server)

• 单个节点管理整个⽂文件系统,存储所有⽂文件的元数据信息(包括⼤大⼩小、属性、⽂文件位置)

• Data servers (chunk server)

• 任意数量的普通服务器,⽤用于存储⽂文件,并在他们之间进⾏行⽂文件同步(多副本⽤用途)

http://www.moosefs.org/13年9⽉月16⽇日 星期⼀一

Page 286: Distributed filesystem

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⽇日 星期⼀一

Page 287: Distributed filesystem

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⽇日 星期⼀一

Page 288: Distributed filesystem

MooseFS 读⽂文件

13年9⽉月16⽇日 星期⼀一

Page 289: Distributed filesystem

MooseFS 写⽂文件

13年9⽉月16⽇日 星期⼀一

Page 290: Distributed filesystem

参考资料 (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⽇日 星期⼀一

Page 291: Distributed filesystem

参考资料 (2/2)

13年9⽉月16⽇日 星期⼀一

Page 292: Distributed filesystem

参考资料 (2/2)

14.http://www.nosqlnotes.net/archives/71

13年9⽉月16⽇日 星期⼀一

Page 293: Distributed filesystem

参考资料 (2/2)

14.http://www.nosqlnotes.net/archives/71

15.http://www.importnew.com/3491.html

13年9⽉月16⽇日 星期⼀一

Page 294: Distributed filesystem

参考资料 (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⽇日 星期⼀一

Page 298: Distributed filesystem

参考资料 (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⽇日 星期⼀一

Page 299: Distributed filesystem

参考资料 (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⽇日 星期⼀一

Page 300: Distributed filesystem

参考资料 (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⽇日 星期⼀一

Page 301: Distributed filesystem

⼤大数据之分布式⽂文件系统

Why, what and how

好⾖豆⺴⽹网

赵卫国@mlsx

2013-9-14

13年9⽉月16⽇日 星期⼀一