浅析hadoop之MapReduce架构及相关特点、优势

无论是对于企业还是个人求学者,大数据中的hadoop都是重中之重,作为一种分布式的大数据框架、一种开源的集群,如今已在各个领域被广泛使用,能够对海量数据进行存储和计算分析,同时,有众多的组件方便开发者安装和开发,而且开发成本相对低廉。而谈到hadoop,那么自然而然的就不可忽视MapReduce架构及特点、优势。

对于MapReduce我们也可以将其分为两个方面来解释:Map和Reduce

其一、Map (也就是映射):

将输入 key/value 对映射 ( map ) 成另外一些 key/value 对。MapReduce 开始在机器上执行 map 程序,map 程序的具体实现由我们自己定义,对输入的 key/value 进行处理,输出新的 key/value,这也是hadoop 并行事实发挥作用的地方。

其二、Reduce归并

以组为单位对数据进行归约 ( reduce )。Reducer 先对从 Mapper 接收的数据进行排序,再交由用户自定义的 reduce方法进行处理。

相信上面的定义会让很多人都很无奈,还是不好理解,那么我们不妨通过一个简单的例子来解释,你想从一堆扑克中找到有多少张红桃,最直观的方法就是一张张去数,但是如果是一万张,或者十万张呢?这时MapReduce就给出了更加简便的方法,给一部分人同等分配所有的扑克,然后让每个人去统计手中扑克的红桃数量,并将数目汇总上来,最后,只要将这些数字相加就可以。其实,就是讲一个很大的问题拆分成众多的小问题,这样就能够更加快速且准确的找到相应的红桃扑克数量。

对于MapReduce,最简单的应用程序至少包含 3 个部分:一个Map函数、一个Reduce函数和一个main函数。main函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop提供了大量的接口和抽象类,从而为Hadoop应用程序开发人员提供许多工具,可用于调试和性能度量等。Map函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce函数接受Map函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。

MapReduce之所以是hadoop中必不可少的一部分实际上就源自于其众多的特点和优势,那么我们不妨来详细的分析一下MapReduce的优势和特点。

首先,任务调度

提交的一个计算作业(job)将被划分为很多个计算任务(tasks),任务调度功能主要负责为这些划分后的计算任务分配和调度计算节点(map节点或reducer节点);同时负责监控这些节点的执行状态,并负责map节点执行的同步控制(barrier);也负责进行一些计算性能优化处理, 如对最慢的计算任务采用多备份执行、选最快完成者作为结果。

扫描二维码关注公众号,回复: 2512637 查看本文章

其次、出错处理

以低端商用服务器构成的大规模MapReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件有bug是常态,因此,MapReducer需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务

最后、数据储存、管理

海量数据处理需要一个良好的分布数据存储和文件管理系统支撑,该文件系统能够把海量数据分布存储在各个节点的本地磁盘上,但保持整个数据在逻辑上成为一个完整的数据文件;为了提供数据存储容错机制,该文件系统还要提供数据块的多备份存储管理能力。

当然,MapReduce最为hadoop中的一个重点,其内容并不仅仅是一篇文章能够讲述清楚的,这里只是简单的为大家做一个浅析,希望大家能有一个初步的认知,而想要真的学懂MapReduce,还需要求学者去按照专业的课程去学习,去实操,只有这样才能够更好的学懂大数据,也能够更好的提升自己。

                                                                           本文转自:海牛学院

猜你喜欢

转载自blog.csdn.net/hainiubuluo/article/details/81185059