zoukankan      html  css  js  c++  java
  • DFS & MapReduce

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

  • 相关阅读:
    Android之动态图片
    Java之简单图形面积计算
    Java之姐妹素数
    Java之经典Student问题2
    数据库事务四大特性
    TCP/IP分层
    海量数据问题处理办法
    36个常见java面试题
    【19】【滑动窗口】【栽跟头】最长不重复子字符串
    一些面试题
  • 原文地址:https://www.cnblogs.com/justany/p/2774271.html
Copyright © 2011-2022 走看看