mapreduce工作流程,简述MapReduce的工作流程
- 前端设计
- 2023-08-13
- 85
大家好,今天来为大家解答mapreduce工作流程这个问题的一些问题点,包括简述MapReduce的工作流程也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让...
大家好,今天来为大家解答mapreduce工作流程这个问题的一些问题点,包括简述MapReduce的工作流程也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
mapreduce的运行模式
本地运行模式
1.mapreduce程序是被提交给LocalJobRunner在本地以单进程的形式运行
2.而处理的数据及输出结果可以在本地文件系统,也可以在hdfs上
3.怎样实现本地运行?程序不要带集群配置文件
本质是程序的conf中是否有mapreduce.framework.name=local及yarn.resourcemanager.hostname参数
4.本地模式非常便于进行业务逻辑的debug,只要在eclipse/idea中打断点即可。
集群运行模式
1.将mapreduce程序交给yarn集群,分发到很多的节点上并发执行
2.处理的数据和输出结果应该位于hdfs文件系统
3.提交集群的实现步骤
将程序打成JAR包,然后在集群的任意一个节点上用hadoop命令启动
hadoopjarHDFSClientDemo-1.0-SNAPSHOT.jarcom.caimh.mr.WordCountDriver
4.执行程序&日志
决定mapreduce性能的工作流程
1.有一个待处理的大数据,被划分成大小相同的数据库(如64MB),以及与此相应的用户作业程序。
2.系统中有一个负责调度的主节点(Master),以及数据Map和Reduce工作节点(Worker).
3.用户作业提交个主节点。
4.主节点为作业程序寻找和配备可用的Map节点,并将程序传送给map节点。
5.主节点也为作业程序寻找和配备可用的Reduce节点,并将程序传送给Reduce节点。
6.主节点启动每一个Map节点执行程序,每个Map节点尽可能读取本地或本机架的数据进行计算。(实现代码向数据靠拢,减少集群中数据的通信量)。
7.每个Map节点处理读取的数据块,并做一些数据整理工作(combining,sorting等)并将数据存储在本地机器上;同时通知主节点计算任务完成并告知主节点中间结果数据的存储位置。
8.主节点等所有Map节点计算完成后,开始启动Reduce节点运行;Reduce节点从主节点所掌握的中间结果数据位置信息,远程读取这些数据。
9.Reduce节点计算结果汇总输出到一个结果文件,即获得整个处理结果。
MapReduce程序的作用
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
瑭锦TANJURD总结在Google,MapReduce用在非常广泛的应用程序中,包括“分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译...”值得注意的是,MapReduce实现以后,它被用来重新生成Google的整个索引,并取代老的adhoc程序去更新索引。
mapreduce是分布式系统吗
mapreduce不是分布式系统。
MapReduce是一种编程模型,用于大规模数据集的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
分布式系统是建立在网络之上的软件系统。
mapreduce中键的排列顺序为
MapReduce的排列顺序是默认按照Key排序的,也就是说输出的时候,key会按照大小或字典顺序来输出,比如一个简单的wordcount,出现的结果也会是左侧的字母按照字典顺序排列。
排序是MapReduce核心技术,尽管实际应用中可能不需要对数据进行排序,但是MapReduce过程本身就含有排序的概念。
mapreduce的计算框架为哪三个部分
MapReduce包含四个组成部分,分别为Client,JobTracker,TaskTracker,Task
1.client客户端
每一个Job都会在用户端通过Client类将应用程序以及配置信息Configuration打包成Jar文件上传到HDFS,并把路径提交到JobTracker的master服务,然后由master创建每一个Task(即MapTask和ReduceTask),将它们分发到各个TaskTracker服务中去执行。
2.JobTracker
JobTracker负责资源监控和作业调度。JobTracker监控所有的TaskTracker与Job的健康状态,一旦发现失败,就将相应的任务转移到其他节点;同时JobTracker会跟踪任务的执行进度,资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。在Hadoop中,任务调度器是一个可插拔的模块,用于可以根据自己的需要设计相应的调度器。
3TaskTracker
TaskTracker是运行在多个节点上的slave服务。TaskTracker主动与JobTracker通信(与DataNode和NameNode相似,通过心跳来实现),会周期性地将本节点上资源使用情况和任务的运行进度汇报给JobTracker,同时执行JobTracker发送过来的命令并执行相应的操作(如启动新任务,杀死任务等)。TaskTracker使用"slot"等量划分本节点上的资源量。"slot"代表计算资源(cpu,内存等)。一个Task获取到一个slot之后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot分为MapSlot和ReduceSlot两种,分别提供MapTask和ReduceTask使用。TaskTracker通过slot数目(可配置参数)限定Task的并发度。
4Task:
Task分为MapTask和ReduceTask两种,均由TaskTracker启动。HDFS以固定大小的block为基本单位存储数据,而对于MapReduce而言,其处理单位是split。split是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全有用户自己决定。但需要注意的是,split的多少决定了MapTask的数目,因为每一个split只会交给一个MapTask处理。
关于mapreduce工作流程到此分享完毕,希望能帮助到您。
本文链接:http://xinin56.com/qianduan/9893.html