代码改变世界

DFS & MapReduce

  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将“键—值”进行合并优化。 

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示