SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
分布式文件系统实践经验交流

   yubai.lk@taobao.com
Context
•   概述
•   一致性模型
•   元数据节点
•   数据节点
•   客户端API
•   总结
概述
• 应用
• 需求
• 架构
应用
• MapReduce计算
 – 高带宽
 – 顺序扫描
 – 批量顺序追加
• 表格系统的底层存储
 – 随机读取
 – 小记录顺序追加
 – 批量顺序追加
需求
•   超大规模的数据存储
•   易于扩展和迁移
•   容灾和自动恢复
•   高带宽和低延迟
架构
• 数据分块
 – 大文件优化
• 大容量低配置数据节点
 – 12T, sata
• 单一元数据节点
 – 主备同步
 – DNS切换
一致性模型
• 以记录为单位读写
 – 并发和异步操作
 – 记录级别的原子性
• 与GFS类似的语义
 – 写成功的记录,多个副本强一致
 – 写失败的记录,状态不确定
  • 多副本一致性状态不确定
  • 重复记录问题,需要用户处理
一致性模型
• Lease
  – master元数据与chunk信息一致性检查
  – 减小写数据对master带来的压力
  – Lease期间Primary Replica主导数据追加
一致性模型
• Primary Replica主导的数据追加
 – 接受master的lease 分配,并分发给其他副本
 – 处理lease释放和续订,并分发给其他副本
 – API都将数据发送给Primary Replica
 – Primary replica决定写入的offset向其他副本分发
   数据
   • Lease期间的宕机检测和处理
     – 心跳检测和Primary汇报其他副本宕机
     – 新建chunk
一致性模型
• Chunk状态和版本号
 – Master在收到数据节点的lease分配成功后升级
   自己名字空间的版本号
 – 数据节点在收到lease并检查成功后升级自己
   chunk的版本号
 – Master不根据汇报信息更新自己的版本号,只
   删除版本号低于自己的chunk
 – 数据节点上的Chunk状态
   • Readonly ,自己写失败或其他副本写失败
   • Cannot copy,版本号低于master
元数据节点
• 批量并发操作
 – Btree copy on write特性
   • 在拷贝出来的根节点上批量修改,提交日志
   • 然后提交或回滚修改后的根节点
• 运维接口
 – 动态信息查询
 – 允许人工介入的操作日志和ckeckpoint修正
数据节点
• 磁盘io
 – Async io
    • libaio
 – Direct io
    • 自己实现类似page cache和buffer cache
• 预读
 – MapReduce读取模式:扫描
 – BigTable读取模式:扫描或随机
数据节点
• 快速启动
 – Chunk元数据定期dump到磁盘
 – 配合操作日志则启动时不需要扫描磁盘
• 数据和操作日志
 – 提高响应能力:不能在buffercache中对齐的数
   据不立即写磁盘
 – 更新chunk元数据的操作不实时刷新到磁盘
 – 仅在打开和关闭chunk的时候更新一次chunk元
   数据
数据节点
• 多磁盘管理
 – 12 * 1T sata盘
 – 支持损坏磁盘的热插拔
 – 已损坏磁盘不可重新加载
   • 软连接
• 数据链路
 – Pipe line式的数据推送
   • API->Primary Replica->Secondary Replica
   • 跨交换机选择ip地址最近的下一个机器推送
   • 同一交换机内随机选择下一个机器推送,避免在小集群
     内都选择最近ip造成的瓶颈
数据节点
• 文件复用
 – chunk文件不立即删除
 – 改名复用已删除的文件
• 多网卡
 – 多网卡地址向master汇报
 – 过滤无效地址
客户端API
• 异步接口
 – Wait / Select
 – 多异步任务调度
• 写操作优先级
 – BigTable日志优先
• 高级API
 – 过滤重复记录
 – 更像Posix接口
 – DFSShell工具
总结
• 适应MapReduce和BigTable需求的底层存储
• 性能、实时性、可靠性优于HDFS,功能更华丽
• TFS
 – 优势
   • 名字空间与元数据空间分离
   • 小文件支持
 – 不足
   • 写操作对namenode压力大
   • 不支持并发追加
谢谢!
Q&A

Contenu connexe

Tendances

大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)Tim Y
 
Database.Cache&Buffer&Lock
Database.Cache&Buffer&LockDatabase.Cache&Buffer&Lock
Database.Cache&Buffer&LockLixun Peng
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁reinhardx
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)Lixun Peng
 
Vipshop Offline Data Cache Acceleration System - Alluxio Integration
Vipshop Offline Data Cache Acceleration System - Alluxio IntegrationVipshop Offline Data Cache Acceleration System - Alluxio Integration
Vipshop Offline Data Cache Acceleration System - Alluxio IntegrationAlluxio, Inc.
 
Hadoop 0.23 m_rv2_introduction
Hadoop 0.23 m_rv2_introductionHadoop 0.23 m_rv2_introduction
Hadoop 0.23 m_rv2_introductionJinGui LI
 
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Dahui Feng
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrameChen-en Lu
 
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析frogd
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕ideawu
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结redhat9
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2redhat9
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Tim Y
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现iammutex
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3redhat9
 
海量日志分析系统实践,Dba
海量日志分析系统实践,Dba海量日志分析系统实践,Dba
海量日志分析系统实践,DbaCevin Cheung
 
Spark性能调优分享
Spark性能调优分享Spark性能调优分享
Spark性能调优分享Wenchun Xu
 

Tendances (19)

大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)大数据时代feed架构 (ArchSummit Beijing 2014)
大数据时代feed架构 (ArchSummit Beijing 2014)
 
Database.Cache&Buffer&Lock
Database.Cache&Buffer&LockDatabase.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)MySQL多机房容灾设计(with Multi-Master)
MySQL多机房容灾设计(with Multi-Master)
 
Vipshop Offline Data Cache Acceleration System - Alluxio Integration
Vipshop Offline Data Cache Acceleration System - Alluxio IntegrationVipshop Offline Data Cache Acceleration System - Alluxio Integration
Vipshop Offline Data Cache Acceleration System - Alluxio Integration
 
Hadoop 0.23 m_rv2_introduction
Hadoop 0.23 m_rv2_introductionHadoop 0.23 m_rv2_introduction
Hadoop 0.23 m_rv2_introduction
 
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
 
From Java Stream to Java DataFrame
From Java Stream to Java DataFrameFrom Java Stream to Java DataFrame
From Java Stream to Java DataFrame
 
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结Bypat博客出品-服务器运维集群方法总结
Bypat博客出品-服务器运维集群方法总结
 
Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2Bypat博客出品-服务器运维集群方法总结2
Bypat博客出品-服务器运维集群方法总结2
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010
 
redis 适用场景与实现
redis 适用场景与实现redis 适用场景与实现
redis 适用场景与实现
 
Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3Bypat博客出品-服务器运维集群方法总结3
Bypat博客出品-服务器运维集群方法总结3
 
海量日志分析系统实践,Dba
海量日志分析系统实践,Dba海量日志分析系统实践,Dba
海量日志分析系统实践,Dba
 
Hantuo openstack
Hantuo openstackHantuo openstack
Hantuo openstack
 
Dynamo db
Dynamo dbDynamo db
Dynamo db
 
Spark性能调优分享
Spark性能调优分享Spark性能调优分享
Spark性能调优分享
 

En vedette

淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程zhaolinjnu
 
Hbase源码初探
Hbase源码初探Hbase源码初探
Hbase源码初探zhaolinjnu
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应zhaolinjnu
 

En vedette (6)

MySQL-Proxy
MySQL-ProxyMySQL-Proxy
MySQL-Proxy
 
淘宝数据库架构演进历程
淘宝数据库架构演进历程淘宝数据库架构演进历程
淘宝数据库架构演进历程
 
Hbase源码初探
Hbase源码初探Hbase源码初探
Hbase源码初探
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 
MySQL aio
MySQL aioMySQL aio
MySQL aio
 

Similaire à 分布式文件实践经验交流

Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
吴岷 视频Cdn分发、调度与服务的探讨
吴岷  视频Cdn分发、调度与服务的探讨吴岷  视频Cdn分发、调度与服务的探讨
吴岷 视频Cdn分发、调度与服务的探讨drewz lin
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...acelyc1112009
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)Feng Yu
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLei (Harry) Zhang
 
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum锐 张
 
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦HanLing Shen
 
Mysql调优
Mysql调优Mysql调优
Mysql调优ken shin
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化丁 宇
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1medcl
 
淘宝主备数据库自动切换
淘宝主备数据库自动切换淘宝主备数据库自动切换
淘宝主备数据库自动切换mysqlops
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践drewz lin
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎frogd
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈lovingprince58
 
MySQL自动切换设计与实现
MySQL自动切换设计与实现MySQL自动切换设计与实现
MySQL自动切换设计与实现orczhou
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0jinqing zhu
 
receiving packets faster
receiving packets fasterreceiving packets faster
receiving packets fasteryang peng
 

Similaire à 分布式文件实践经验交流 (20)

Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
吴岷 视频Cdn分发、调度与服务的探讨
吴岷  视频Cdn分发、调度与服务的探讨吴岷  视频Cdn分发、调度与服务的探讨
吴岷 视频Cdn分发、调度与服务的探讨
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
 
新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum新时代的分析型云数据库 Greenplum
新时代的分析型云数据库 Greenplum
 
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1ElasticSearch Training#2 (advanced concepts)-ESCC#1
ElasticSearch Training#2 (advanced concepts)-ESCC#1
 
淘宝主备数据库自动切换
淘宝主备数据库自动切换淘宝主备数据库自动切换
淘宝主备数据库自动切换
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
分布式Key-value漫谈
分布式Key-value漫谈分布式Key-value漫谈
分布式Key-value漫谈
 
MySQL自动切换设计与实现
MySQL自动切换设计与实现MySQL自动切换设计与实现
MySQL自动切换设计与实现
 
主库自动切换 V2.0
主库自动切换 V2.0主库自动切换 V2.0
主库自动切换 V2.0
 
receiving packets faster
receiving packets fasterreceiving packets faster
receiving packets faster
 
Metrics
MetricsMetrics
Metrics
 
Tair
TairTair
Tair
 

分布式文件实践经验交流

  • 2. Context • 概述 • 一致性模型 • 元数据节点 • 数据节点 • 客户端API • 总结
  • 4. 应用 • MapReduce计算 – 高带宽 – 顺序扫描 – 批量顺序追加 • 表格系统的底层存储 – 随机读取 – 小记录顺序追加 – 批量顺序追加
  • 5. 需求 • 超大规模的数据存储 • 易于扩展和迁移 • 容灾和自动恢复 • 高带宽和低延迟
  • 6. 架构 • 数据分块 – 大文件优化 • 大容量低配置数据节点 – 12T, sata • 单一元数据节点 – 主备同步 – DNS切换
  • 7. 一致性模型 • 以记录为单位读写 – 并发和异步操作 – 记录级别的原子性 • 与GFS类似的语义 – 写成功的记录,多个副本强一致 – 写失败的记录,状态不确定 • 多副本一致性状态不确定 • 重复记录问题,需要用户处理
  • 8. 一致性模型 • Lease – master元数据与chunk信息一致性检查 – 减小写数据对master带来的压力 – Lease期间Primary Replica主导数据追加
  • 9. 一致性模型 • Primary Replica主导的数据追加 – 接受master的lease 分配,并分发给其他副本 – 处理lease释放和续订,并分发给其他副本 – API都将数据发送给Primary Replica – Primary replica决定写入的offset向其他副本分发 数据 • Lease期间的宕机检测和处理 – 心跳检测和Primary汇报其他副本宕机 – 新建chunk
  • 10. 一致性模型 • Chunk状态和版本号 – Master在收到数据节点的lease分配成功后升级 自己名字空间的版本号 – 数据节点在收到lease并检查成功后升级自己 chunk的版本号 – Master不根据汇报信息更新自己的版本号,只 删除版本号低于自己的chunk – 数据节点上的Chunk状态 • Readonly ,自己写失败或其他副本写失败 • Cannot copy,版本号低于master
  • 11. 元数据节点 • 批量并发操作 – Btree copy on write特性 • 在拷贝出来的根节点上批量修改,提交日志 • 然后提交或回滚修改后的根节点 • 运维接口 – 动态信息查询 – 允许人工介入的操作日志和ckeckpoint修正
  • 12. 数据节点 • 磁盘io – Async io • libaio – Direct io • 自己实现类似page cache和buffer cache • 预读 – MapReduce读取模式:扫描 – BigTable读取模式:扫描或随机
  • 13. 数据节点 • 快速启动 – Chunk元数据定期dump到磁盘 – 配合操作日志则启动时不需要扫描磁盘 • 数据和操作日志 – 提高响应能力:不能在buffercache中对齐的数 据不立即写磁盘 – 更新chunk元数据的操作不实时刷新到磁盘 – 仅在打开和关闭chunk的时候更新一次chunk元 数据
  • 14. 数据节点 • 多磁盘管理 – 12 * 1T sata盘 – 支持损坏磁盘的热插拔 – 已损坏磁盘不可重新加载 • 软连接 • 数据链路 – Pipe line式的数据推送 • API->Primary Replica->Secondary Replica • 跨交换机选择ip地址最近的下一个机器推送 • 同一交换机内随机选择下一个机器推送,避免在小集群 内都选择最近ip造成的瓶颈
  • 15. 数据节点 • 文件复用 – chunk文件不立即删除 – 改名复用已删除的文件 • 多网卡 – 多网卡地址向master汇报 – 过滤无效地址
  • 16. 客户端API • 异步接口 – Wait / Select – 多异步任务调度 • 写操作优先级 – BigTable日志优先 • 高级API – 过滤重复记录 – 更像Posix接口 – DFSShell工具
  • 17. 总结 • 适应MapReduce和BigTable需求的底层存储 • 性能、实时性、可靠性优于HDFS,功能更华丽 • TFS – 优势 • 名字空间与元数据空间分离 • 小文件支持 – 不足 • 写操作对namenode压力大 • 不支持并发追加