博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MapReduce
阅读量:4656 次
发布时间:2019-06-09

本文共 1537 字,大约阅读时间需要 5 分钟。

一、产生

  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。这种文件切割后存储的过程是对用户透明的。

转载于:https://www.cnblogs.com/java-cjt/p/4444433.html

你可能感兴趣的文章
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
lambda表达式树
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>
Linux内核分析——可执行程序的装载
查看>>
第一阶段冲刺3
查看>>
父类引用指向子类对象
查看>>
网页如何实现下载功能
查看>>
IT男专用表白程序
查看>>
读《大道至简》第六章感想
查看>>
ef linq 中判断实体中是否包含某集合
查看>>
章三 链表
查看>>
Solution for Concurrent number of AOS' for this application exceeds the licensed number
查看>>
CSE 3100 Systems Programming
查看>>
IntelliJ IDEA 的Project structure说明
查看>>