Mapreduce模型概述 Mapreduce是 Google公司的核心计算模型,它将复杂的运行于大规模 集群上的并行计算过程高度地抽象到两个函数:Map和 Reduce 适合用 Mapreduce来处理的数据集(或任务),需要满足一个基本要求 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都 可以完全并行地进行处理 ·概念“Map(映射)”和“ Reduce(化简)”,以及它们的主要思想 ,都是从函数式编程语言里借来的,同时包含了从矢量编程语言里借 来的特性。 Mapreduce极大地方便了编程人员在不会分布式并行编程 的情况下,将自己的程序运行在分布式系统上。 《大数据技术基础》
《大数据技术基础》 MapReduce模型概述 • MapReduce是Google公司的核心计算模型,它将复杂的运行于大规模 集群上的并行计算过程高度地抽象到两个函数:Map和Reduce。 • 适合用MapReduce来处理的数据集(或任务),需要满足一个基本要求: 待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都 可以完全并行地进行处理。 • 概念“Map(映射)”和“Reduce(化简)”,以及它们的主要思想 ,都是从函数式编程语言里借来的,同时包含了从矢量编程语言里借 来的特性。MapReduce极大地方便了编程人员在不会分布式并行编程 的情况下,将自己的程序运行在分布式系统上
Mapreduce模型概述 个Map- Reduce作业(job)通常会把输入的数据集切分为若干独立 的数据块,由map任务(task)以完全并行的方式处理它们。框架会 对map的输出先进行排序,然后把结果输入给 reduce任务。通常作业 的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和 监控,以及重新执行已经失败的任务。 Map-Reduce框架和分布式文件系统是运行在一组相同的节点上的,即 计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好 数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常 高效地利用 Map -Reduce框架由单独一个 master Job Tracker,和每个集群节点一个 slave TaskTracker共同组成。这个 master负责调度构成一个作业的 所有任务,这些任务分布在不同的 slave上, master监控它们的执行 ,重新执行已经失败的任务。而 slave仅负责执行由 master指派的任 务 《大数据技术基础》
《大数据技术基础》 MapReduce模型概述 • 一个Map-Reduce作业(job)通常会把输入的数据集切分为若干独立 的数据块,由map任务(task)以完全并行的方式处理它们。框架会 对map的输出先进行排序,然后把结果输入给reduce任务。通常作业 的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和 监控,以及重新执行已经失败的任务。 • Map-Reduce框架和分布式文件系统是运行在一组相同的节点上的,即 计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好 数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常 高效地利用。 • Map-Reduce框架由单独一个master JobTracker和每个集群节点一个 slave TaskTracker共同组成。这个master负责调度构成一个作业的 所有任务,这些任务分布在不同的slave上,master监控它们的执行 ,重新执行已经失败的任务。而slave仅负责执行由master指派的任 务
mapreduce模型概述 应用程序至少应该指明输入输出的位置(路径),并通过实现合适的 接口或抽象类提供map和 Reduce函数。再加上其他作业的参数,就构 成了作业配置( job configuration)。然后,由 Hadoop的job- client提 交作业(jar包/可执行程序等)和配置信息给 JobTracker,后者负责 分发这些软件和配置信息给 slave、调度任务且监控它们的执行,同 时提供状态和诊断信息给 job-client 虽然 Hadoop框架是用Java实现的,但 Map-Reduce应用程序则不一 定要用Java来写。 《大数据技术基础》
《大数据技术基础》 MapReduce模型概述 • 应用程序至少应该指明输入/输出的位置(路径),并通过实现合适的 接口或抽象类提供map和reduce函数。再加上其他作业的参数,就构 成了作业配置(job configuration)。然后,由Hadoop的job-client提 交作业(jar包/可执行程序等)和配置信息给JobTracker,后者负责 分发这些软件和配置信息给slave、调度任务且监控它们的执行,同 时提供状态和诊断信息给job-client。 • 虽然Hadoop框架是用Java实现的,但Map-Reduce应用程序则不一 定要用Java来写
Map和 Reduce函数 MapReduce计算模型的核心是map和 reduce两个函数,这两个函数 由用户负责实现,功能是按一定的映射规则将输入的<key, value>对 转换成另一个或一批<key, value>对输出 函数 输入 输出 说明 <k1. v1> Lis(<k2,V2>)1.将小数据集进一步解析成一批<key, value>对, 输入Map函数中进行处理 2.每一个输入的<k1,v1>会输出一批<k2,v2>。 <k2,Ⅴ2>是计算的中间结果 Reduce <k2,List(v2)><k3,v3> 输入的中间结果<k2,Ls(v2)中的LisV2)表示是 批属于同一个k2的vaue 以计算文本文件中每个单词出现次数的程序为例,则<k1,v1>可以是 <行在文件中的偏移位置,文件中的一行>,经Map函数映射之后, 形成一批中间结果<单词,出现次数>,而 Reduce函数则可以对中 间结果进行处理,将相同单词的出现次数进行累加,得到每个单词的 总的出现次数。 《大数据技术基础》
《大数据技术基础》 Map和Reduce函数 • MapReduce计算模型的核心是map和reduce两个函数,这两个函数 由用户负责实现,功能是按一定的映射规则将输入的<key,value>对 转换成另一个或一批<key,value>对输出。 函数 Map 输入 <k1, v1> 输出 List(<k2, v2>) 说明 1. 将小数据集进一步解析成一批<key, value>对, 输入Map函数中进行处理。 2. 每一个输入的<k1, v1>会输出一批<k2, v2>。 <k2, v2>是计算的中间结果 Reduce <k2, List(v2)> <k3, v3> 输入的中间结果<k2, List(v2)>中的List(v2)表示是 一批属于同一个k2的value • 以计算文本文件中每个单词出现次数的程序为例,则<k1,v1>可以是 <行在文件中的偏移位置,文件中的一行>,经 Map 函数映射之后, 形成一批中间结果 <单词,出现次数>, 而 Reduce 函数则可以对中 间结果进行处理,将相同单词的出现次数进行累加,得到每个单词的 总的出现次数
Map和 Reduce函数 基于 Mapreduce计算模型编写分布式并行程序非常简单,程序员的 主要编码工作就是实现Map和 Reduce函数,其它的并行编程中的种 种复杂问题,如分布式存储、工作调度、负载平衡、容错处理、网络 通信等,均由 Mapreduce框架(比如 Hadoop)负责处理,程序员完全 不用操心。 《大数据技术基础》
《大数据技术基础》 Map和Reduce函数 • 基于MapReduce计算模型编写分布式并行程序非常简单,程序员的 主要编码工作就是实现Map和Reduce函数,其它的并行编程中的种 种复杂问题,如分布式存储、工作调度、负载平衡、容错处理、网络 通信等,均由MapReduce框架(比如 Hadoop )负责处理,程序员完全 不用操心