一:MapReduce设计构思
MadReduce运行在yarn集群
1 ResourceManager 主节点 负责整个资源任务的调度和分配
2.NodeManager 从节点 负责具体的运算
1.client申请计算任务
2.ResourceManger收到任务,启动两个子文件Applications Manger 和 Resource Scheduler
3.Applications Manger 会在某一个NodeManger上启动一个进程,叫MR App Mstr
4.App Mstr 会在application申请资源(cpu,内存等 ),Resource Scheduler释放资源,并要求MR App Mstr向哪个node Manger要资源
5.两个nodemanger同时 启动Map Task
6.接着执行reduce Task,把计算结果回报给App Mstr
7.App Mstr 把计算结果回报给Application
二:MapReduce编程规范
①key-Value(k1和v1),k1表示该行相对于文件的偏移量,v1表示该行的文本数据
②自定义Map逻辑,即继承一个类,该类是Mapper,有四个泛型,分别是k1 v1的类型,
k2 v2的类型,必须继承Mapper类,重写map方法,该方法的目的是把键值对k1 v1转换为k2 v2
③把k2 v2进行分区
④继承Reducer该类,重写reduce方法,此时泛型使新的分区过后的k2 v2,目的是转换成新的k3 v3,此时k3 v3 就是我们最终需要的结果
⑤设置OutputFormat处理并保存Reduce输出的key-Value数据,OutputFormat决定我们的文件放在那里