3.MR

news/2024/9/17 1:41:36/文章来源:https://www.cnblogs.com/swh666/p/18405652

MR

一.MR概述

1.mr定义

Mr是一个分布式运算程序的编程框架,是用户开发”基于hadoop的数据分析应 用”的核心框架

Mr核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整地 分布式运算程序,并发运行在一个hadoop集群上

2.mr优缺点

2.1.优点

(1)易于编程.用户只关心业务逻辑.实现框架的接口

(2)良好扩展性:可以动态增加服务器,解决计算资源不够问题

(3)高容错性.任何一台机器挂掉,可以将任务转移到其它节点

(4)适合海量数据计算(TB/PB).几千台服务器共同计算

2.2.缺点

(1)不擅长实时计算.mysql

(2)不擅长流式计算.sparkstreaming flink

(3)不擅长dag有向无环图计算.spark

3.mr核心思想

4.mr进程

一个完整的mr程序在分布式运行时有三类实例进程:

A.mrappmaster:负责整个程序的过程调度及状态协调

B.maptask:负责map阶段的整个数据处理流程

C.reducetask:负责reduce阶段的整个数据处理流程

5.官方wordcount源码

采用反编译工具反编译源码,发现wordcount案例有map类,reduce类和驱动类. 且数据类型是hadoop自身封装的序列化类型

6.常用数据序列化类型

7.mr编程规范

用户编写的程序分为三个部分:mapper,reducer和driver

(1)mapper阶段

A.用户自定义的mapper要继承自己的父类

B.mapper的输入数据时kv对的形式(kv类型可自定义)

C.mapper中的业务逻辑写在map()方法中

D.mapper的输出数据时kv对的形式(kv的类型可自定义)

E.map()方法(maptask进程)对每一个<k,v>调用一次

(2)reducer阶段

A.用户自定义的reducer要继承自己的父亲

B.reducer的输入数据类型对应mapper的输出数据类型,也是kv

C.reducer的业务逻辑写在reduce()方法中

D.reduceTask进程对每一组相同k的<k,v>组调用一次reduce()方法

(3)driver阶段

相当于yarn集群的客户端,用于提交我们整个程序到yarn集群,提交的是 封装了mapreduce程序相关运行参数的job对象

8.wordcount实操

8.1本地测试

(1)需求

在给定的文本文件中统计输出每一个单词出现的总次数

A.输入数据

B.期望输出数据

(2)需求分析

按照要求,分别编写mapper,reducer,driver

(3)环境准备

A.创建maven工程

B.在pom.xml中添加如下依赖

C.在项目的src/main/resources目录下,新建一个文件夹,命名 为”log4j.properties”,在文件中填入

D.创建包名:com.shujia.mapreduce.wordcount

(4)编写程序

A.编写Mapper类

B.编写Reducer类

C.编写Driver类

(5)本地测试

A.需要首先配置好HADOOP_HOME变量以及Windows运行依赖

B.在IDEA/Eclipse上运行

8.2提交到集群测试

(1)用maven打jar包,需要添加的打包插件依赖

(2)将程序打成jar包

8.3远程提交集群测试

(1)将jar包导入虚拟机输入命令

(2)查看结果

二.Hadoop序列化

1.序列化概述

(1)什么是序列化

序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便 于存储到磁盘(持久化)和网络传输

反序列化就是将收到字节序列(或其他数据传输协议)或者是磁盘的持久 化数据,转换成内存中的对象

(2)为什么要序列化

一般来说,”活的”对象只生存在内存里,关机断电就没有了.而且”活的”对象 只能由本地的进程使用,不能被发送到网络上的另一台计算机.然而序列化 可以存储活的对象,可以将活的对象发送到远程计算机

(3)为什么不用java的序列化

Java的序列化是一个重量级序列化框架,一个对象被序列化后,会附带很多 额外信息(各种校验信息,header,继承体系等),不便于在网络中高效传输.

2.自定义bean对象实现序列化接口(Writable)

在企业开发中往往常用的基本序列化类型不能满足所有需求,比如在hadoop 框架内部传递一个bean对象,那么该对象就需要实现序列化接口

具体实现bean对象序列化步骤如下7步

(1)必须实现Writable接口

(2)反序列化时,需要反射调用空参构造函数,所以必须有空参构造

(3)重写序列化方法

(4)重写反序列化方法

(5)注意反序列化的顺序和序列化的顺序和完全一致

(6)要想把结果显示在文件中,需要重写toString(),可用”\t”分开,方柏霓后续使用

(7)如果需要将自定义的bean放在key中传输,则还需要实现Comparable接口, 因为Mapreduce框中的shuffle过程要求对key必须能排序

3.序列化实操

三.MR框架原理

1.输入数据inputformat

1.1.切片与maptask并行度决定机制

(1)问题引出

Maptask的并行度决定map阶段的任务处理并发度,进而影响整个job 的处理速度

思考:1G的数据,启动八个maptask,可以提高集群的并发处理能力.那 么1k的数据,也启动八个maptask,会提高集群性能吗?maptask并行任 务是否越多越好?哪些因素影响了maptask并行度

(2)maptask并行度决定机制

数据块:block是hdfs物理上把数据分成一块一块.数据块是hdfs存储 数据单位

数据切片:数据切片只是逻辑上对输入进行分片,并不会在磁盘上将其 切分成片进行存储.数据切片是mapreduce程序计算输入数据的单位, 一个切片会对应启动一个maptask

1.2.job提交流程源码和切片源码详解

(1)job提交流程源码详解

(2)FileInputFormatq切片源码解析(input.getSplits(job))

A.程序先找到数据存储的目录

B.开始遍历处理(规划切片)目录下的每一个文件

C.遍历第一个文件

(a)获取文件大小

(b)计算切片大小

(c)默认情况下,切片大小=blocksize

(d)开始切,形成第一个切片...

(每次切片时,都要判断切完剩下的部分是否是大于块的1.1 倍,不大于就划分一块切片)

(e)将切片信息写到一个切片规划文件中

(f)整个切片的核心过程在setSplit()方法中完成

(g)IntputSplit只记录了切片的元数据信息,比如起始位置,长度以 及所在的节点列表等

D.提交切片规划文件到yarn上,yarn上的mrappmaster就可以根据切 片规划文件计算开启maptask个数

1.3.fileinputformat切片机制

fileinputformat切片大小的参数配置

1.4.textinputformat

1.5.combinetextinputformat切片机制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794753.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.MR(1)

2.mapreduce工作流程流程一流程二3.shuffle3.1.shuffle机制map方法之后,reduce方法之前的数据处理过程称之为shuffle3.2.分区3.3.writablecomparable排序(1)排序概述(2)排序分类3.4.combiner合并

5.MR(2)

4.输出数据outputformat接口实现类5.mapreduce内核源码解析5.1.maptask工作机制(1)read阶段:maptask通过inputformat获得的recordreader,从输出 inputsplit中解析一个个key/value5.2.reducetask工作机制5.3.reducetask并行度决定机制6.join6.1.reduce join6.2.map join7.数据清…

南京某大学入门知识

某大学入门知识一家之言,不必在意。 某高校文档镇楼https://github.com/SurviveSJTU/SurviveSJTUManual 地图 雷丁楼 楼主参加融媒体中心报名时,去过一次,其他时候没去过(雷丁学院,类似于与国外合作的专业) 东苑体育场 有体育馆,有室内羽毛球(二楼),击剑(二楼),健…

Python用MarkovRNN马尔可夫递归神经网络建模序列数据t-SNE可视化研究

原文链接:https://tecdat.cn/?p=37634 原文出处:拓端数据部落公众号 本文聚焦于利用马尔可夫递归神经网络(MarkovRNN)结合树库展开建模工作。MarkovRNN 通过整合马尔可夫特性与离散随机变量来深入探索递归神经网络中的随机转换机制,旨在高效处理具有复杂潜在信息的高度结…

CUDA

1、GPU准备 1、查看GPU类型 GeForce RTX 30602、查看算力https://en.wikipedia.org/wiki/CUDA#GPUs_supported算力8.63、确定CUDA Runtime 支持的CUDA SDK为11.1-12.54、查看驱动的Driver Version CUDA Version 为12.3所以适用的CUDA 11.1-12.3 2、更新显卡驱动 1、下载了最新显…

碳酸锂 短线

大周期:3分钟短线:

【LLM训练系列】从零开始训练大模型之Phi2-mini-Chinese项目解读

一、前言 本文主要是在复现和实践Phi2-mini-Chinese后,简要分析下Phi2-mini-Chinese这个项目,做一个学习实战总结。 原文发布于知乎:https://zhuanlan.zhihu.com/p/718307193,转载请注明出数。 Phi2-mini-Chinese简介 Phi2-Chinese-0.2B 从0开始训练自己的Phi2中文小模型,…

第20篇 window系统安装Redis流程

1.下载 Redis for Windows Redis 官方并没有提供 Windows 版本的安装包,但你可以使用 Microsoft 维护的 Windows 版本的 Redis。你可以从以下链接下载 Redis for Windows:2.安装 Redis 运行安装程序: 双击下载的 .msi 文件,启动安装程序。 按照安装向导的提示进行安装。这里…

C++顺序结构(1)任务

1、下载并观看视频(照着做,多看几遍) https://www.jianguoyun.com/p/DWCNkNEQi8_wDBj5ptYFIAA 2、两项照着做的任务

xlam插件制作实验手册

大家来和笔者一起做一个xlam插件吧。很简单,很详细。 楔子excel支持自定义菜单栏,但是我在搜索如何制作菜单栏,以及如何制作addin文件的时候,即使是最好的例子,也只是点到为止,做了一个按钮就结束了。想要再进一步,竟然就没有合适的二手资料了。所以自然笔者就决定自己补…

极大似然估计的思想及计算[例题]

0 前言本文主要介绍极大似然估计的意义,并举出例题帮助读者理解。1 思想极大似然估计(Maximum Likelihood Estimation, MLE)是一种在统计学中估计模型参数的方法。它的基本思想是:找到一组参数值,使得在这组参数下,观测到的数据出现的概率(即似然函数)最大。假如有一个…

大模型的两个重要能力 (IF + FC)

MiniCPM https://github.com/OpenBMB/MiniCPM 面壁智能推出的大模型,在如下方面支持能出众。 推理 长文本 RAG 都是常见的能力。 其中 指令遵从(IF=instruction follow) 和 工具调用(FC = function call), 威力强大, 可以用作很多语音控制场景。MiniCPM 3.0MiniCPM 3.0 是一…