MapReduce学习(一)、(二)
来源:互联网 发布:linux我的世界启动器 编辑:程序博客网 时间:2024/06/05 10:30
MapReduce:分布式并行编程框架
(一)概述
1.与传统并行计算框架的对比
传统的并行计算框架(如MPI)采用共享式架构(共享内存&存储、采用存储区域网络SAN)、容错性较差;使用的刀片服务器价格高、集群扩展性差(只能从提高机器性能上进行纵向扩展)。它适用于要求实时性、细粒度计算和计算密集型的场景。
MapReduce采用非共享式架构,容错性好;并且它所用的服务器均为普通PC机(价格便宜)、且横向扩展性好(通过增加服务器即可实现集群扩展)。它适用于批处理、非实时、数据密集型的场景。
2.模型简介
MapReduce将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数:Map和Reduce。
策略——分而治之:将一个大规模数据集切分成许多独立的分片(split),这些分片可以被多个Map任务并行处理。
理念——计算向数据靠拢:可以避免移动数据所需要大量的网络传输开销。
框架——Master/Slave架构:包括一个Master和若干个Slave,Master上运行JobTracker,Slave上运行TaskTracker。
3.Map&Reduce函数
Map函数:
1.将小数据集进一步解析成一批<key,value>对,输入Map函数中进行处理
2.每一个输入的<k1,v1>会输出一批<k2,v2>。<k2,v2>是计算的中间结果
输入:<k1,v1>,如:<行号,”a b c”>
输出:List(<k2,v2>),如:<“a”,1> <“b”,1> <“c”,1>
Reduce函数:
输入的中间结果<k2,List(v2)>中的List(v2)表示是一批属于同一个k2的value
输入:<k2,List(v2)>,如:<“a”,<1,1,1>>
输出:<k3,v3>,如:<“a”,3>
(二)体系结构
MapReduce体系结构主要由四个部分组成,分别是:Client、JobTracker、TaskTracker以及Task,如图:
1.Client
1)用户编写的MapReduce程序通过Client提交到JobTracker端。
2)用户通过Client提供的一些接口查看作业状态。
2.JobTracker:负责资源监控和作业调度
1)监控所有TaskTracker与Job的健康状况,一旦发现失效,就将相应任务转移到其他节点。
2)跟踪任务的执行进度、资源使用量等信息,将这些信息告知TaskSchduler(任务调度器)。
3.TaskTracker:具体执行任务
1)周期性地通过“心跳”将本节点上资源使用情况和任务运行进度汇报给JobTracker,同时接收JobTracker发送的命令。
2)一个Task 获取到一个slot (调度资源的单位)后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用。
4.Task
TaskTask 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动。
- MapReduce学习(一)、(二)
- MapReduce学习(一)
- MapReduce学习笔记(二)
- MapReduce学习笔记之输入(二)
- MapReduce学习笔记之简介(一)
- MapReduce数据流(二)
- MapReduce数据流(二)
- MapReduce数据流(二)
- MapReduce练习(二)
- Hadoop(二)-MapReduce
- MapReduce实例(二)
- MapReduce数据流(一)
- MapReduce数据流(一)
- MapReduce练习(一)
- MapReduce实例(一)
- Hadoop学习笔记(二):MapReduce的进度和状态
- hadoop 学习笔记(二)MapReduce的工作机制
- Hadoop学习笔记(二):MapReduce的特性-计数器、排序
- 一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法
- 指针的危险
- Django数据库之一对一
- 人活着是为了什么--(反思 - 2016年10月27日)
- How-to create a Windows 10 usb installation media in Linux
- MapReduce学习(一)、(二)
- echarts-去掉X轴、Y轴和网格线
- Angular 2.0 实现的搜索框
- 前后台交互方法
- ansible第一次使用它的配置
- Linux下的常用命令(3.find)
- 2016秋季练习
- redis和memcached的区别
- 来自东东的第一贴