MapReduce:分布式计算的框架

MapReduce是一个软件框架,可以将单个计算作业分配给多台计算机执行。

MapReduce在大量节点组成的集群上运行。它的工作流程是:单个作业被分成很多小份,输入数据也被切片分发到每个节点,各个节点只在本地数据上做运算,对应的代码称为mapper,这个过程被称作map阶段。每个mapper的输出通过某种方式组合(一般还会做排序)。排序后的结果再被分成小份分发到各个节点进行下一步处理工作。第二步的处理阶段被称为reduce阶段,对应的运行代码被称为reducer。reducer的输出就是程序的最终执行结果。

MapReduce的整个编配工作由主节点(master node)控制。这些主节点控制整个MapReduce作业编配,包括每份数据存放的节点位置,以及map,sort和reduce等阶段的时序控制等。此外,主节点还要包含容错机制。一般的,每份mapper的输入数据会同时分发到多个节点形成多份副本,用于事务的失效处理。

MapReduce的学习要点:

·主节点控制MapReduce的作业流程

·MapReduce的作业可以分成map任务和reduce任务

·map任务之间不做数据交流,reduce任务也一样

·在map和reduce阶段中间,有一个sort或combine阶段

·数据被重复放在不同的机器上,以防某个机器失效

·mapper和reducer传输的数据形式为key/value对

Hadoop流

Hadoop可以运行Java之外的其他语言编写的分布式程序。

Hadoop流很像Linux系统中的管道(管道使用符号|,可以将一个命令的输出作为另一个命令的输入)

例如:

cat inputFile.txt | python mapper.py | sort | python reducer.py > outputFile.txt

最新文章

  1. sourcesafe.light 开源项目启动
  2. BZOJ4554: [Tjoi2016&Heoi2016]游戏
  3. 使用MediaPlayer和SurfaceView播放视频
  4. cygwin如何断点续传
  5. MVC生命周期
  6. QF——网络之网络请求的几种方式,图片缓存
  7. Spring学习(24)--- AOP之 Aspect instantiation models(aspect实例模式)特别说明
  8. HybridStart混合应用开发框架
  9. css Margin-top塌陷,解决方法
  10. Gephi安装过程中出现错误:can’t find java 1.8 or higher
  11. laravel5.8笔记十:Redis操作
  12. asp.net core 健康检查
  13. jsp/servlet/mysql/linux基本概念和操作
  14. k8s常用命令记录
  15. 发现linux shell中$0,$?,$!等的特殊用法
  16. Rattle:数据挖掘的界面化操作
  17. Typecho V1.1反序列化导致代码执行分析
  18. 将http转为https访问
  19. nginx 代理转发 wcf接口
  20. laravel 中出现SQLSTATE[HY000] [2002] 如何解决?

热门文章

  1. 【javascript】操作给定的二叉树,将其变换为源二叉树的镜像。
  2. xml文件解析和序列化
  3. Verilog 参数化设计
  4. java.util.concurrent中的常用组件
  5. python打开文件可以有多种模式
  6. (转)SpringMVC学习(二)——SpringMVC架构及组件
  7. struts1标签库
  8. Bootstrap CSS概览
  9. Web服务器☞Apache VS Nginx
  10. Lazy Instantiator