vlambda博客
学习文章列表

跟我一步一步学习MapReduce(1)了解MapReduce和Yarn原理

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。


MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:

1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastructure)。它允许用市场上普通的商用服务器构成一个包含数十、数百至数千个节点的分布和并行计算集群。

2)MapReduce是一个并行计算与运行软件框架(Software Framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行化处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及收集计算结果,将数据分布存储、数据通信、容错处理等并行计算涉及到的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。

3)MapReduce是一个并行程序设计模型与方法(Programming Model & Methodology)。它借助于函数式程序设计语言Lisp的设计思想,提供了一种简便的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便地完成大规模数据的编程和计算处理 。


•MR原语:map+ reduce ••输入(格式化k,v)数据集àmap映射成一个中间数据集(k,v)àreduce(sql)•“相同”的key为一组,调用一次reduce方法,方法内迭代这一组数据进行计算 (类似的sql)


–排序•比较•遍历–计算–各种维度花销,音乐, 其他

•block> split–1:1–N:1–1:N

•split> map–1:1

•map> reduce–N:1–N:N–1:1–1:N

•group(key)>partition–1:1–N:1–N:N–1:N? >违背了原语

•partition > outputfile

•Shuffler<洗牌>:框架内部实现机制•分布式计算节点数据流转:连接MapTask与ReduceTask

•理解:–Map:•读懂数据•映射为KV模型•并行分布式•计算向数据移动–Reduce:•数据全量/分量加工(partition/group)•Reduce中可以包含不同的key•相同的Key汇聚到一个Reduce中•相同的Key调用一次reduce方法–排序实现key的汇聚•K,V使用自定义数据类型–作为参数传递,节省开发成本,提高程序自由度–Writable序列化:使能分布式程序数据交互–Comparable比较器:实现具体排序(字典序,数值序等)


•MRv2:OnYARN–YARN:解耦资源与计算•ResourceManager–主,核心–集群节点资源管理•NodeManager–与RM汇报资源–管理Container生命周期–计算框架中的角色都以Container表示•Container:【节点NM,CPU,MEM,I/O大小,启动命令】–默认NodeManager启动线程监控Container大小,超出申请资源额度,kill–支持Linux内核的Cgroup–MR :•MR-ApplicationMaster-Container–作业为单位,避免单点故障,负载到不同的节点–创建Task需要和RM申请资源(Container  /MR 1024MB)•Task-Container–Client:•RM-Client:请求资源创建AM•AM-Client:与AM交互


•YARN•–YARN:YetAnotherResourceNegotiator;–Hadoop2.0新引入的资源管理系统,直接从MRv1演化而来的;•核心思想:将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现•ResourceManager:负责整个集群的资源管理和调度•ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等–YARN的引入,使得多个计算框架可运行在一个集群中•每个应用程序对应一个ApplicationMaster•目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等


•MapReduce  On  YARN•–MapReduceOnYARN:MRv2–将MapReduce作业直接运行在YARN上,而不是由JobTracker和TaskTracker构建的MRv1系统中–基本功能模块•YARN:负责资源管理和调度•MRAppMaster:负责任务切分、任务调度、任务监控和容错等•MapTask/ReduceTask:任务驱动引擎,与MRv1一致–每个MapRaduce作业对应一个MRAppMaster•MRAppMaster任务调度•YARN将资源分配给MRAppMaster•MRAppMaster进一步将资源分配给内部的任务–MRAppMaster容错•失败后,由YARN重新启动•任务失败后,MRAppMaster重新申请资源


遇到问题的朋友可以加群大家一起学习提高:

778620988 (花生米01云数据)

489651549(花生米02云数据)