• MapReduce


    一、产生

      Hadoop MapReduce诞生于搜索领域,主要解决搜索引擎面临的海量数据处理扩展性差的问题。

    二、MapReduce设计目标:

      1. 易于编程:产痛的分布式程序设计非常复杂,用户需要关注的细节非常多,比如数据分片、数据传输、节点间通信等,因而设计分布式程序的门槛非常高。

      2. 良好的扩展性:当数据量增加到一定程度时,可以通过添加机器来达到线性扩展集群能力的目的。

      3. 高容错性:在分布式环境下,随着集群规模的增加,集群中的故障率会显著增加。

    三、 MapReduce编程模型概述:

      MapReduce由两个阶段组成:Map和Reduce,用户只需编写map()和Reduce()两个函数,即可完成简单的分布式程序的设计。

    • Map函数以key/value对作为输入,产生另外一系列key/value作为中间输出写入本地磁盘。MapReduce框架会自动将这些中间数据按照key值进行聚集,且key值相同(用户可以设定聚集策略,默认情况下是对key值进行哈希驱魔)的数据被统一交给reduce()函数处理。
    •  Reduce函数以key及对应的value列表作为输入,经合并key相同的value值后,产生另外一系列key/value对作为最终输出写入HDFS。

     Hadoop将输入数据切分成若干个输入分片,并将每个split交给一个Map Task处理,Map Task不断地从对应的split中解析出一个个key/value,并调用map()函数处理,处理完之后根据Reduce Task个数将结果分成若干个分片partition写到本地磁盘;同时,每个Reduce Task凑够每个Map Task上读取属于自己的那个partition,然后基于排序的方法将key相同的数据聚集在一起,调用reduce()函数处理,并将结果输出到文件中。

    四、Hadoop基本架构

      HDFS架构

      

    • Client:代表用户通过NameNode和DataNode交互访问HDFS中的文件,Client提供了一个类似POSIX文件系统接口供用户调用。
    • NameNode:整个Hadoop集群中只有一个NameNode,它是整个系统的“总管”,负责管理HDFS的目录树和相关的文件元数据信息,这些信息是以“fsimage”(HDFS元数据镜像文件)和“editlog”(HDFS文件改动日志)两 个文件形式存放在本地磁盘,当HDFS重启时重新构造出来的。此外,NameNode还负责监控各个DataNode的健康状态,一旦发现某个DataNode宕掉,则将该DataNode移出HDFS并重新备份其上面的数据。
    • Secondary NameNode:Secondary NameNode最重要的任务并不是为NameNode元数据进行热备份,而是定期合并fsimage和edits日志,并传输给NameNode,这里需要注意的是,为了较小NameNode压力,NameNode自己并不会合并fsimage和edits,并将文件存储到磁盘上,而是交由Secondary NameNode完成。
    • DataNode:一般每个slave节点上安装一个DataNode,它负责实际的数据局存储,并将数据信息定期汇报给NameNode。DataNode以固定大小的block为基本单位组织文件内容,默认情况是64M。当用户上传一个大的文件到HDFS上时,该文件会被切分成若干个block,分别存储到不同的DataNode。这种文件切割后存储的过程是对用户透明的。
  • 相关阅读:
    java中的 equals 与 ==
    String类的内存分配
    SVN用命令行更换本地副本IP地址
    npoi 设置单元格格式
    net core 微服务框架 Viper 调用链路追踪
    打不死的小强 .net core 微服务 快速开发框架 Viper 限流
    net core 微服务 快速开发框架 Viper 初体验20201017
    Anno 框架 增加缓存、限流策略、事件总线、支持 thrift grpc 作为底层传输
    net core 微服务 快速开发框架
    Viper 微服务框架 编写一个hello world 插件02
  • 原文地址:https://www.cnblogs.com/java-cjt/p/4444433.html
Copyright © 2020-2023  润新知