MapReduce----1. MapReduce 基础入门

本文详细介绍了MapReduce的基础知识,包括MapReduce的定义、存在的原因、程序运行方式,如本地和集群模式。此外,还深入探讨了MapReduce程序的核心运行机制,如MapTask和ReduceTask的并行度决定机制、切片机制,以及如何调整并行度以优化性能。通过MapReduce示例程序的编写和调试,帮助读者理解MapReduce的工作原理。
摘要由CSDN通过智能技术生成

目录

1、MapReduce 入门

1.1、什么是 MapReduce

1.2、为什么需要 MapReduce

1.3、MapReduce 程序运行演示

1.4、MapReduce 示例程序编写及编码规范

1.5、MapReduce 运行方式及 Debug 

本地运行模式:Eclipse 开发环境下本地运行,好处是方便调试和测试

集群运行模式:打 jar 包,提交任务到集群运行

2、MapReduce 程序的核心运行机制

2.1、概述

2.2、MapReduce 程序的运行流程

2.3、MapTask 并行度决定机制

2.4、切片机制

2.5、MapTask 并行度经验之谈

2.6、ReduceTask 并行度决定机制


1、MapReduce 入门

1.1、什么是 MapReduce

首先让我们来重温一下 hadoop 的四大组件:

HDFS:分布式存储系统

MapReduce:分布式计算系统

YARN:hadoop 的资源调度系统

Common:以上三大组件的底层支撑组件,主要提供基础工具包和 RPC 框架等

MapReduce 是一个分布式运算程序的编程框架,是用户开发“基于 Hadoop 的数据分析应用” 的核心框架

MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布 式运算程序,并发运行在一个 Hadoop 集群上

1.2、为什么需要 MapReduce

为什么需要 MapReduce?

1、海量数据在单机上处理因为硬件资源限制,无法胜任

2、而一旦将单机版程序扩展到集群来分布式运行,将极大增加程序的复杂度和开发难度

3、引入 MapReduce 框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将 分布式计算中的复杂性交由框架来处理

设想一个海量数据场景下的数据计算需求:

单机版:

磁盘受限,内存受限,计算能力受限

分布式版:

1、 数据存储的问题,hadoop 提供了 hdfs 解决了数据存储这个问题

2、 运算逻辑至少要分为两个阶段,先并发计算(map),然后汇总(reduce)结果

3、 这两个阶段的计算如何启动?如何协调?

4、 运算程序到底怎么执行?数据找程序还是程序找数据?

5、 如何分配两个阶段的多个运算任务?

6、 如何管理任务的执行过程中间状态,如何容错?

7、 如何监控?

8、 出错如何处理?抛异常?重试?

可见在程序由单机版扩成分布式版时,会引入大量的复杂工作。为了提高开发效率,可以将 分布式程序中的公共功能封装成框架,让开发人员可以将精力集中于业务逻辑。

Hadoop 当中的 MapReduce 就是这样的一个分布式程序运算框架,它把大量分布式程序都会 涉及的到的内容都封装进了,让用户只用专注自己的业务逻辑代码的开发。它对应以上问题 的整体结构如下:

MRAppMaster:MapReduce Application Master,分配任务,协调任务的运行

MapTask:阶段并发任,负责 mapper 阶段的任务处理 YARNChild

ReduceTask:阶段汇总任务,负责 reducer 阶段的任务处理 YARNChild

1.3、MapReduce 程序运行演示

在 MapReduce 组件里,官方给我们提供了一些样例程序,其中非常有名的就是 wordcount 和 pi 程序。这些 MapReduce 程序的代码都在 hadoop-mapreduce-examples-2.6.4.jar 包里,这 个 jar 包在 hadoop 安装目录下的/share/hadoop/mapreduce/目录里

下面我们使用 hadoop 命令来试跑例子程序,看看运行效果 先看 MapReduce 程序求 pi 的程序:

命令:

[hadoop@hadoop03 mapreduce]$ pwd

/home/hadoop/apps/hadoop-2.6.4/share/hadoop/mapreduce

[hadoop@hadoop03 mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.6.4.jar pi 5 5

执行过程和结果展示:

再来看 wordcount 程序:

那除了这两个程序以外,还有没有官方提供的其他程序呢,还有就是它们的源码在哪里呢? 我们打开 mapreduce 的源码工程,里面有一个 hadoop-mapreduce-project 项目:

 里面有一个例子程序的子项目:hadoop-mapreduce-examples

找到该目录: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值