《R与Hadoop大数据分析实战》一2.1 MapReduce基础概念
本节书摘来自华章出版社《R与Hadoop大数据分析实战》一书中的第2章,第2.1节,作者 (印)Vignesh Prajapati,更多章节内容可以访问云栖社区“华章计算机”公众号查看
如果没有使用过集群或信息传递接口(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技术作大数据分析。
《Hadoop实战第2版》——3.3节MapReduce任务的优化 本节书摘来自华章社区《Hadoop实战第2版》一书中的第3章,第3.3节MapReduce任务的优化,作者:陆嘉恒,更多章节内容可以访问云栖社区“华章社区”公众号查看
《Hadoop实战第2版》——3.2节MapReduce计算模型 本节书摘来自华章社区《Hadoop实战第2版》一书中的第3章,第3.2节MapReduce计算模型,作者:陆嘉恒,更多章节内容可以访问云栖社区“华章社区”公众号查看
《Hadoop实战第2版》——3.1节为什么要用MapReduce 本节书摘来自华章社区《Hadoop实战第2版》一书中的第3章,第3.1节为什么要用MapReduce,作者:陆嘉恒,更多章节内容可以访问云栖社区“华章社区”公众号查看
《Hadoop实战第2版》——1.5节Hadoop计算模型—MapReduce 本节书摘来自华章社区《Hadoop实战第2版》一书中的第1章,第1.5节Hadoop计算模型—MapReduce,作者:陆嘉恒,更多章节内容可以访问云栖社区“华章社区”公众号查看
相关文章
- 【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析
- 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
- Nestjs模块机制的概念和实现原理
- Phantomjs,Casperjs重要的概念:执行顺序
- 数据挖掘、数据分析的一些概念
- Hadoop的环境搭建,和编写一个简单的hadoop job
- SwarmKit的概念和架构
- spark分区增减、JavaFX基本操作和HDFS NN DN概念
- hadoop分布式文件系统hdfs的概念和特性
- Atitit api design Usability simple 易用性之简单化设计 目录 1. 理论原则2 1.1. 概念简单2 1.2. 切换到了“write less, do more
- Atitit 编程 序列化技术点 概念原理v2 1. 序列化:1 2. 序列化的目的1 2.1. 为了传输 或者存储1 3. 应用场合1 3.1. Form提交url1 3.2. For
- Atitit Hadoop的MapReduce的执行过程、数据流的一点理解。 目录 1. Why 为什么使用hadoop1 2. Hadoop的MapReduce的执行过程1 2.1. Had
- 通过单步调试的方式学习 Angular 中 TView 和 LView 的概念
- 操作系统概念(第十一章) 文件系统实现
- MySQL----数据库概念及数据模型
- Day 17 - YOLO 相关概念说明
- Hadoop之hadoop fs命令
- Hadoop之hadoop-mapreduce-examples测试执行及报错处理
- FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset 错误解决
- 数据技术初学者不用再东搜西找了,一篇文章解读20个最新数据技术概念
- 阿里云ECS云服务器核心概念及购买使用(三)
- 【看表情包学Linux】缓冲区的概念 | Git 三板斧 | 实现简易进度条