DFS & MapReduce
2012-11-17 13:09 Justany_WhiteSnow 阅读(690) 评论(0) 编辑 收藏 举报Google Example
- 200亿+网页 * 20kb = 400+ TB
- 1台计算机硬盘读取速度为30 ~ 35 mb/s
- 要读取4个月
截止至2006年8月,谷歌已经有450000台机器了。
Challenges for Large-scale Computing
- 怎么分配计算?
- 如何设计简易的分布式编程模型?
- 如何机器故障处理?
Idea and Solution
Idea:
接近数据的计算
对数据进行多个备份
MapReduce被用来解决这些问题
Storage Infrastructure
Problem:
如果节点宕机,如何保持存储数据
Answer:
分布式文件系统:GFS(Google File System)、HDFS(Hadoop Distributed File System)
Typical usage pattern:
巨大的文件(几百GB到TB)
数据很少更新,或者说只是单纯将新数据追加到尾部
常用于读取和附加的数据
Distributed File System
- 块状服务群:
文件备份成连续的块
一般每块16 ~ 64 mb
每块进行复制(2、3次)
保持在不同机架上存在副本
- 主节点(Master Node)
- 服务器端的文件访问接口:
向主节点请求查看服务块
与服务块直接连接来访问数据
- 可靠的分布式系统:
数据以“块”分布在机器中
Programming Model: MapReduce
顺序读取大量的数据。
Map:
提取你敢兴趣的数据(Group by key, Sort an Shuffle)
Reduce:
总结、归纳、过滤或转换
The Map Step
Map任务将输入变成“键—值”对应的序列。
The Reduce Step
Reduce将“键—值”进行合并优化。