《R与Hadoop大数据分析实战》一2.1 MapReduce基础概念

2.1 MapReduce基础概念

如果没有使用过集群或信息传递接口(Message Passing Interface,MPI),那么理解MapReduce基础概念将不会是一件容易的事。更多的实际应用是数据不存放在一个硬盘中而是存放于分布式文件系统中(Distributed File System,DFS),或存放于由Hadoop技术实现的分布式软件中。
MapReduce同时也是一个编程模型,它以一种分布式方法进行工作。其中包括信息传递接口(MPI)和同步并行计算模型(Bulk Synchronous Parallel,BSP)等概念。为了使R语言或其他机器学习工具上运行一个大数据分析程序,我们需要一台高配置的机器。但是这也不是一个很好的解决方案,所以分布式处理的方式就成了处理大数据问题的绝佳途径。这种分布式计算技术可以使用MapReduce编程模式来实现。
MapReduce是解决大数据问题的一个答案,理论上可以以并行方式处理数据,这意味着它具有极强的运算能力。我们既可以通过增大计算机集群的方式也可以通过提高每台计算机硬件配置的方式来提高运算能力。使用计算机集群是处理大数据的理想方式。
在了解并行运算MapReduce前,先讨论一下Google对MapReduce的探索以及由Jeffrey Dean和Sanjay Ghemawat 于2004年编写的白皮书。他们介绍的MapReduce简单而言就是在一个集群上运行数据处理软件。这种数据处理平台可以使程序人员更容易地执行各种操作。系统负责数据输入,并在计算机网络中对其作分布式处理以及并行运算,最后把输出数据合并在一个单文件中,便于后续再次分割处理。当使用这种方式来处理一个大数据集时,无论在成本还是在运行时间上都是很有益的。同时它也实现了对计算机硬件资源的高效应用。Google公司已经在MapReduce上申请了专利。
使用MapReduce时,程序员只需要把原有程序移植到Map和Reduce这两个阶段进行处理。其中Map阶段使用一个键值对数据作为输入并产生中间键值对数据。然后Reduce阶段合并所有的Map产生的中间键值对数据。Map和Reduce两个阶段共同组成了MapReduce工作流。当Map阶段输出数据后,Reduce阶段开始执行代码。
MapReduce的执行顺序如下图所示。

MapReduce假设执行Map函数时,各执行单元是独立且并行的。实现MapReduce算法的关键是既然执行Map和Reduce函数的各执行单元是独立的,那么如何使它们在网络环境下协助完成整个程序呢?答案是各执行单元以不同的键值和序列数据做并行运算。
一个分布式文件系统通过不同的机器可以复制扩展出多套数据,这也为系统提供了很强的容错性机制并提高了系统可靠性。如果一台机器上的数据有损失,则系统会使用该数据在其他机器上的替代数据资源。
MapReduce中主节点机器上的守护进程将会负责管理所有作业。例如执行作业、调配Mapper、Reducer、Combiner、Partitioner等,以及监控各独立作业内任务的成功或失败状态,最后完成批处理作业。
Apache的Hadoop使用MapReduce的作业在服务器上以并行方式分割处理数据,并存储数据于Hadoop的分布式文件系统内。
使用MapReduce技术的公司包括:
Amazon:这是一个线上的电子商务公司,并使用云服务实现大数据分析业务。
eBay:该公司是一个电子商务公司,并作为用户通过描述进而找到商品的入口。
Google:这是一个互联网搜索引擎公司,用户根据不同的关键词找到相关的网页。
LinkedIn:这是一个专业提供大数据存储和个性化推荐的互联网网站。
Trovit:这是一个用于找工作的垂直类搜索网站。
Twitter:这是一个发布和分享信息的社交网站。
除此之外,还有很多企业使用Hadoop技术作大数据分析。

时间: 2024-09-20 15:47:09

《R与Hadoop大数据分析实战》一2.1 MapReduce基础概念的相关文章

《R与Hadoop大数据分析实战》一导读

前 言 组织获得的数据量每一天都在成倍增加.现在组织可以存储大量信息在低成本平台上,例如Hadoop. 如今这些组织面临的难题是如何处理这些数据以及如何从这些数据中获取关键的见解.于是R应运而生.R是一个令人惊讶的工具,它是一个在数据中能够运行先进统计模型的单元,它将原始模型翻译成丰富多彩的图形和可视化视图,而且它有很多和数据科学相关的功能. 然而,R的一个主要缺点是它的可扩展性较差.R的核心技术引擎可以加工和处理非常有限的数据量.正因为在大数据处理中Hadoop十分流行,所以为了可扩展性,下一

《R与Hadoop大数据分析实战》一第2章 编写Hadoop MapReduce程序

第2章 编写Hadoop MapReduce程序 在第1章中,我们学习了如何搭建R和Hadoop开发环境.既然我们对大数据分析感兴趣,接下来就学习如何使用Hadoop MapReduce进行大数据处理.在本章中,我们要讨论MapReduce的基础概念,为何它是不可或缺的,以及如何在Apache Hadoop上进行MapReduce编程等内容.本章节将会涉及如下内容:MapReduce基础概念Hadoop MapReduce技术Hadoop MapReduce原理编写Hadoop MapReduc

《R与Hadoop大数据分析实战》一2.5 在R环境中编写Hadoop MapReduce程序的方式

2.5 在R环境中编写Hadoop MapReduce程序的方式 我们知道对将R工具用于分析的统计学家.网络分析师以及产品经理来说,用MapReduce进行Hadoop大数据处理是一件非常重要的事,因为补充MapReduce的编程知识对于用Hadoop将分析整合到MapReduce来说是必要的.并且,我们知道R是一个一直以来普及程度逐步提升的工具:为了整合R,有许多程序包和函数库一直在改进.因此为了研发基于R和Hadoop计算能力运行的MapReduce算法程序,我们需要R和Hadoop的中间软

《R与Hadoop大数据分析实战》一1.1 安装R

1.1 安装R 可以通过访问R的官方网站下载相应的版本.这里提供了对应三种不同操作系统的下载步骤,包括在Windows.Linux和Mac上安装R.下载最新版本的R,其中包括所有最新的补丁和错误解决方案.对于Windows操作系统,请执行以下步骤: 访问www.r-project.org. 点击CRAN,选择CRAN镜像(CRAN mirror),并选择你的Windows操作系统(捆绑到Linux:Hadoop通常在Linux环境下运行). 从镜像中下载最新的R版本. 执行下载的.exe程序,安

《R与Hadoop大数据分析实战》一1.4 Hadoop的安装

1.4 Hadoop的安装 现在假定你已经了解了R语言,知道它是什么,如何安装它,它的主要特点是什么,以及为什么要使用它.现在,我们需要知道R的局限性(这样能更好地引入对Hadoop的介绍).在处理数据前,R需要将数据加载到随机存取存储器(RAM).因此,数据应该小于现有机器内存.对于数据比机器内存还要大的,我们将其看做大数据(由于大数据还有许多其他定义,这只适用于我们现在所说的例子). 为了避免这类大数据问题,我们需要扩展硬件配置,但这只是一个临时解决方案.为了解决这一问题,我们需要使用一个H

《R与Hadoop大数据分析实战》一2.3 Hadoop MapReduce原理

2.3 Hadoop MapReduce原理 为了更好地理解MapReduce的工作原理,我们将会: 学习MapReduce对象. MapReduce中实现Map阶段的执行单元数目. MapReduce中实现Reduce阶段的执行单元数目. 理解MapReduce的数据流. 深入理解Hadoop MapReduce. 2.3.1 MapReduce对象 由Hadoop的MapReduce技术可以引申出如下3个主要对象: Mapper:它主要用于实现MapReduce的Map阶段的操作.该对象在M

《R与Hadoop大数据分析实战》一1.5 Hadoop的特点

1.5 Hadoop的特点 Hadoop是围绕两个核心概念专门设计的:HDFS和MapReduce.这两者都与分布式计算相关.MapReduce被认为是Hadoop的核心并对分布式数据执行并行处理.Hadoop的特点如下:HDFSMapReduce 1.5.1 HDFS简介 HDFS是Hadoop自带的机架感知文件系统,这是Hadoop中的一个基于UNIX的数据存储层.HDFS起源于Google文件系统概念.Hadoop的一个重要特征是数据分区和通过许多(成千的)主机的计算以及以并行.接近它们的

《R与Hadoop大数据分析实战》一1.8 小结

1.8 小结 在这一章中,我们学习了什么是R.Hadoop以及它们的特点,如何在使用R和Hadoop分析数据集之前安装它们.在下一章中,我们将要学习什么是MapReduce以及如何使用Apache Hadoop开发MapReduce程序.

《R与Hadoop大数据分析实战》一2.4 编写Hadoop MapReduce示例程序

2.4 编写Hadoop MapReduce示例程序 现在要通过一个很简单且普通的单词统计(word count)来学习MapReduce.该例子的目标是统计每个单词在文章中出现的次数.这些文章作为MapReduce的输入文件. 在该例中,已经准备了一些文本文件,我们希望计算所有单词在这些文件中出现的频率.我们通过Hadoop MapReduce来进行设计. 本节中,将使用旧版API接口学习Hadoop MapReduce编程.假设读者已经配置了Hadoop的环境变量(请参考第1章的内容).同时