第1页
HDFS的透明压缩存储
刘景龙 邮箱:baggioss@gmail.com twitter:baggioss
第2页
主要内容
Hadoop @baidu
过去一年的工作 进行中的项目
透明压缩
目标 实现 如何解决核心问题 如何规避风险 未来计划
第3页
Hadoop@baidu
16000+ 机器,10个集群 最大集群机器数3000台 存储 127.2PB/174.5PB 72% 处理 17PB+ 数据/每天 平均CPU使用率 55 %, 峰值80 % - 90 %
16000 14000 12000 10000
8000 6000 4000 2000
总集群规模(台)
单集群机器数(台)
2009 2010 2011
180 160 140 120 100
80 60 40 20
存储容量(P)
每天处理数据量 (P)
2009 2010 2011
第4页
过去一年的工作
HDFS:
规模问题改进: Namenode 启劢优化
幵行加载fsimage
Namenode rpc优化
registerChannel 锁优化 HADOOP-7105 使用独立线程RegisterChannel 和cleanup
数据安全问题改进 块复制机制改进
第5页
过去一年的工作
Hard link Why not symbol link?
跨机房优化 跨机房提交作业
listStatus + getBlockLocation = too many rpc ?
跨机房数据传输
dfs.send.socket.buffer.size (datanode, client) dfs.datanode.recv.buffer.size (datanode)
第6页
过去一年的工作
Mapred:
Shuffle独立 Hce 2.0
Hce基础上支持streaming 接口 作业断点重启
第7页
进行中的项目
存储
可扩展 性
存储空 间利用
率
存储
可用性
第8页
主要内容
Hadoop @baidu
过去一年的工作 进行中的项目
透明压缩
目标 实现 如何解决关键问题 如何规避风险 未来计划
第9页
目标
节省存储空间 避免压缩影响计算作业 用户透明
第10页
实现
NameNode
Client
Block report
hearbeat
DataNode
Scheduler Storage module
getTask
Compressor Service compressor
Block access layer
第11页
如何解决关键问题?
如何控制资源使用
Datanode 任务分配 (Xceiver 数) 2.6.32 内核进程/ io 优先级调度
如何确定冷数据
增加block的atime,1周没有访问?
如何处理特殊操作
append 随机读
第12页
存储结构
DataNode Storage
未压缩块
Block file meta file
压缩块
Compressed Block file Index file
meta file
第13页
收益
第14页
如何规避风险
尝试解压
目的: 规避压缩算法bug
小流量上线
目的:上线一个机架datanode,避免透明压缩bug导 致数据丢失
黑白名单
第15页
In the future
开源
https://issues.apache.org/jira/browse/HDFS2542
多出的Quota分给谁 协处理器应用
第16页
In the future
透明压缩传输
第17页
Q&A
谢 谢!
第18页
透明压缩黑名单实现
NameNode
Client
Block report
heartbeat
DataNode Scheduler
Policy controller
Storage module
getTask
Compressor admin
Compressor Service compressor
Block access layer
第19页
Fsimage并行加载
HDFS-1070 短路 径优化
并行加载fsimage
第20页
Shuffle独立- 解决问题
map/reduce 槽位隔离,槽位利用率低 shuffle占用 reduce槽位,资源利用率低 shuffle和reduce串行,对大作业,运行时间 长 Shuffle/reduce自身的问题,内存利用率不高 ,连接数打满
第21页
Shuffle独立 – 结构
第22页
传输项目