大数据学习第8天:
学习主题:mapreduce的计算原理1
学习目标:
什么是分布式计算
分布式计算的定义
分布式计算是一门计算机科学,主要研究对象是分布式系统。
分布式系统是由若干通过网络互联的计算机组成的软硬件系统[1],且这些计算机互相配合以完成一个共同的目标(往往这个共同的目标称为“项目”);
分布式计算指在分布式系统上执行的计算。分布式计算是将一个大型计算任务分成很多部分分别交给其他的计算机处理,并将所有的计算结果合并为原问题的解决方案。
注意: 这里与并行计算不同的是,并行计算是使用多个处理器并行执行单个计算。并行运算与分布式计算的区别是:分布式计算强调的是任务的分布执行,而并行计算强调的是任务的并发执行
2.优弱点:
优点:超大规模 ,虚拟化,高可靠性 ,通用性 ,高可伸缩性,按需服务,极其廉价,容错性;
弱点:多点故障(一台或多台计算机的故障,或一条或多条网络链路的故障,都会导致分布式系统出现问题);安全性(分布式系统为非授权用户的攻击提供了更多机会);
Hadoop MapReduce简介
Hadoop MapReduce是一个使用简便的软件框架,是Google云计算模型MapReduce的Java开源实现,基于它写出来的应用程序能够运行在由上千万台普通机器注册的大型集群系统中,并以一种可靠地、容错的方式并行处理上T级别的数据集。
Hadoop MapReduce基本思想:一个MapReduce作业通常会把输入的数据集合切分为若干独立的数据块,由Map任务并行的方式处理。该框架会对Map的输出先进行排序,然后把结果输出作为Reduce任务的输入。通常作用的输入和输出都会存储在文件系统中。
1.1 系统架构
在系统架构上,MapReduce框架是一种主从架构,由一个单独的JobTracker节点和多个TaskTracker节点共同组成。
JobTracker是MapReduce的Master,负责调度构成一个作业的所有任务,这些任务分布在不同 的TaskTracker节点上,监控它们的执行,重新执行已经失败的任务,同时提高状态和诊断信息给作业客户端。
TaskTracker是MapReduce的Slave,仅负责运行由Master指派的任务执行。
Hadoop的作业客户端提交作业(jar包和可执行程序)和配置信息作为Master的JobTracker,JobTracker负责分发用户程序和配置信息给集群中的TaskTracker,以及调度任务并监控他们的执行,同时提供状态和诊断信息给作业客户端。
掌握:mapreduce的计算原理:移动计算而不移动数据
用户程序中的MapReduce函数库首先把输入文件分成M块(Hadoop默认128M),接着在集群机器中执行处理程序。
主控程序master分配Map任务和Reduce任务给工作执行机器Worker。总该有M个任务和R个reduce任务需要分配。master会选择空闲的Worker并且分配这些Map任务或者Reduce任务给Worker节点。
一个分配了Map任务的worker读取并处理相关输入的数据块。从输入的数据片段中解析key/value键值对,然后把key/value键值对传递给用户自定义的map函数,map函数生成并输出key/vaule键值对集合,这些集合会暂时缓存内存中。
缓存中的key/value键值对通过分区函数分成R个区域,之后周期性地写入本地磁盘上。同时缓存key/value键值对集合在本地磁盘上的存储位置发送给master节点,由master再把这些记录传送给Reduce worker。
当Reduce worker程序接收到master程序发送过来的数据存储位置信息之后,使用RPC从Map worker所在的主机磁盘上读取这些缓存数据。在Reduce Worker读取了所有的中间数据之后,通过key进行排序后使得具有相同key值的数据聚合在一起。由于许多不同的key值会映射到相同的Reduce任务上,因此必须进行排序。
Reduce Worker程序遍历排序后的中间数据。对于每一个唯一的中间key值,Reduce Worker程序都会将这个key值和它相关的中间vaule值的集合传递给用户自定义的Reduce函数。Reduce函数的输出被追加到所属分区的输出文件中。
在hadoop1.0不能满足多系统集成的背景下孕育了yarn的产生。由于多分布式系统可以很好的集成,因此yarn的出现使得整个集群的运维成本大大降低。同时,yarn可以很好的利用集群资源,避免资源的浪费。除此之外,yarn的出现实现了集群的数据共享问题。不同的分布式计算框架可以实现数据的共享,比如hadoop的mapreduce输出可以作为storm的输入。
client发出请求到resourceManager,resourceManager启动Appication master为任务分配相关的资源,分配完成后返回信息到resource Manager,再由resourceManager将任务分发到不同的NodeManager。NodeManager启动Container执行需要的MapReduce工作。
- 对象FileSystem:代表HDFS。
- open,create,liststatus,delete,mkdir方法等