大数据技术入门:MapReduce(分布式计算框架)

article/2025/10/20 7:23:37
大家好,我是百思不得小赵。

创作时间:2022 年 7 月 7 日
博客主页: 🔍点此进入博客主页
—— 新时代的农民工 🙊
—— 换一种思维逻辑去看待这个世界 👀
今天是加入CSDN的第1222天。觉得有帮助麻烦👏点赞、🍀评论、❤️收藏


文章目录

  • 一、概述
  • 二、MapReduce工作原理
  • 三、MapReduce操作
  • 四、案例


在这里插入图片描述

一、概述

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

MapReduce核心特性

  • 主要用于大数据计算领域,解决海量数据的计算问题。
  • MR 本身只是一个编程和计算框架,或者干脆一点就是一堆可调用的 jar 包,和 mysql、hdfs、impala等有运行实例的服务不一样, MR 本身没有运行实例。
  • MR 有两个阶段组成:Map 和 Reduce,用户只需实现 map() 和 reduce() 两个函数,即可实现分布式计算。
  • MapReduce 编程模型只包含 Map 和 Reduce 两个过程,map 的主要输入是一对 <key,value> 值,经过 map 计算后输出一对 <key,value> 值;然后将相同 Key 合并,形成 <key,value> 集合;再将这个<key,value 集合>输入 reduce,经过计算输出零个或多个 <key,value> 对。

二、MapReduce工作原理

在这里插入图片描述
大数据应用进程(提交任务的客户端):

该进程是启动 MapReduce 程序的主入口,主要是指定 Map 和 Reduce 类、输入输出文件路径等,并提交作业给 Hadoop 集群

JobTracker进程:

Hadoop 集群常驻进程,根据要处理的输入数据量,命令 TaskTracker生成相应数量的Map和Reduce进程任务,并管理这个作业生命周期的任务的调度和监控

TaskTracker进程:

负责管理 Map 进程和 Reduce 进程。Hadoop 集群中绝大多数服务器同时运行 DataNode 进程和 TaskTracker 进程

三、MapReduce操作

运维操作:

 hadoop    jar    jar包路径   入口程序类名   输入文件的hdfs目录     输出文件的hdfs目录

四、案例

public class WordCount {public static class TokenizerMapper  extends Mapper<Object, Text, Text, IntWritable>{private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(Object key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {word.set(itr.nextToken());//针对每个单词输出一个<word ,1>//MapReduce 计算框架会将这些<word ,1>收集起来,将相同的word放一起,形成//<word,<1,1,1,...>>这样的<key,value集合>,然后输入给reducecontext.write(word, one);}}}public static class IntSumReducer    extends Reducer<Text,IntWritable,Text,IntWritable> {private IntWritable result = new IntWritable();public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {//reduce对每个word对应的所有1 进行求和,最终将<word,合计>输出sum += val.get();}result.set(sum);context.write(key, result);}}
}

在这里插入图片描述


http://chatgpt.dhexx.cn/article/05pmCNjE.shtml

相关文章

05-分布式计算框架

目录 一&#xff0c;MapReduce 1&#xff0c;简介 2&#xff0c;原理 2.1 基本概念 2.2 程序执行过程 2.3 作业运行模式 二&#xff0c;Spark 1&#xff0c;简介 1.1 背景 1.2 概念 1.3 特点 2&#xff0c;原理 2.1 编程模型 2.2 运行模式 2.3 运行过程 2.4 DA…

大数据之Hadoop分布式计算框架MapReduce

这里写目录标题 一、MapReduce概述二、MapReduce编程模型简述三、MapReduce词频统计案例mvn clean package 四、词频统计案例进阶之Combiner五、词频统计案例进阶之Partitioner六、案例二介绍 一、MapReduce概述 Hadoop MapReduce 是一个分布式计算框架&#xff0c;用于编写批处…

分布式系列之分布式计算框架Flink深度解析

Flink作为主流的分布式计算框架&#xff0c;满足批流一体、高吞吐低时延、大规模复杂计算、高可靠的容错和多平台部署能力。本文简要介绍了Flink中的数据流处理流程以及基本部署架构和概念&#xff0c;以加深对分布式计算平台的了解。 1、Flink概述 Apache Flink是一个框架和分…

分布式计算框架——MapReduce

一、MapReduce概述 Hadoop MapReduce 是一个分布式计算框架&#xff0c;用于编写批处理应用程序。编写好的程序可以提交到 Hadoop 集群上用于并行处理大规模的数据集。 MapReduce 作业通过将输入的数据集拆分为独立的块&#xff0c;这些块由 map 以并行的方式处理&#xff0c…

【学习笔记1】分布式计算技术及框架

一.定义及描述 分布式计算(Distributed Computing)&#xff0c;又称分散式计算&#xff0c;指通过分布式系统进行计算的方式。分布式系统中的每一个运算单元存在于不同的计算机/处理器上&#xff0c;通过调度算法进行信息传递、协作以实现一件大而繁的目标。 简单来说&#x…

C#之简易计算器的制作

在一些问题中有时会用到计算器,今天我们可以用C#做一个简易的计算器 用到的开发工具为Visual Studio 2019(我用的是2019,其他版本的也可以) 1.首先新建一个项目文件. 2.在Form1.cs文件(Winform框架基础文件)中添加所用到的控件. 3.添加TextBox和ComboBox以及Button控件 4.对But…

JS原生——编写简易计算器

一个非常适合新手练习的小案例&#xff01;&#xff01;&#xff01; 使用JS的ES5语法HTMLCSS及企业级代码规范&#xff0c;方便后续良好的代码习惯养成&#xff01;&#xff01;&#xff01; 先来看一下样式吧&#xff01;&#xff01;&#xff01;&#xff08;后附代码&…

Java 实现简易计算器

前言&#xff1a; 出此文章是因为楼主之前在面试中遇到一个笔试题&#xff0c;当时一时半会没想出来&#xff0c;所以后续研究出来了&#xff0c;发出来希望对大家能有所帮助~ 题目&#xff1a;设计一个计算器&#xff0c;可以接收用户输入两个数字与 - * / 的符号&#xff0c…

Matlab设计简易计算器

效果如如下&#xff1a; 整个工程还是挺简单的&#xff0c;之前一直都是用matlab做信号处理&#xff0c;由于要做课程设计&#xff0c;就学了一下matlab的GUI。下面总结几个关键的地方。 &#xff08;1&#xff09;控件拉到自己喜欢的位置&#xff0c;并将控件的Text和Tag改好…

简易计算器(有界面)

&#xff08;没有括号和优先级&#xff0c;简易计算器&#xff09;界面&#xff1a; package javaprogram;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import j…

Andriod设计简易计算器

1&#xff0e;设计任务及要求 &#xff08;1&#xff09;设计一款基于Android系统下的计算器&#xff0c;实现加减乘除算法&#xff0c;以及清零、撤销操作。界面设计应该就尽量简洁而美观&#xff0c;具有良好的交互性&#xff0c;程序应具有较好的稳健性&#xff1b; &a…

java实现简易计算器

Java简易计算器 用java语言写的一个简易计算器&#xff0c;实现了最基本的、-、*、/ 运算。 先来看下效果&#xff1a; 界面简述&#xff1a; 整个面板的由一个JTextFiled组件16个JButton组件构成&#xff0c;外加一个JPanel组件存放16个按钮&#xff0c;其布局为4x4的网格…

做一个简易计算器(VB版)

今天小编来带大家用VB做一个简易计算器 废话不多说&#xff0c;下面就是具体步骤了 1、创建控件组的方法首先创建一个命令按钮&#xff0c;调整其大小&#xff08;觉得合适就行&#xff09;&#xff0c;名称为Command1&#xff0c;Caption 属性为数字 0 &#xff1b;然后进行…

简易计算器的设计_C#课程设计

以下内容可且仅可供参考&#xff0c;如有错误欢迎指正。 部分内容借鉴自百度 侵删致歉 位切换键盘的实现用了复杂的拖64给label的方法&#xff0c;此功能可以在自己计算机上的计算器里找到。 目录 一、设计简介 1.设计背景 2.开发工具及环境 二、需求分析 1.设计功能要求 …

Python制作简易计算器(GUI)---Tkinter

Python制作简易计算器&#xff08;GUI&#xff09;---Tkinter Tkinter简介Tkinter 与 PyQt5 的比较TkinterPyQt5 项目展示导入模块函数封装1. 运算公式的拼接与展示2. 将显示框的内容删除3. 使用eval()函数对表达式求值 主逻辑1. 布局窗口2. 布局表达式展示区域3. 布局按钮 代码…

自制个性计算器

一、布局文件xml的制作。 如图&#xff1a;是布局之后的一个效果图 完全可以自定义自己喜欢的各种类型的图片。 代码如下&#xff1a; 正所谓每一个鲜艳靓丽app背后都有成堆的代码支撑这句话是没有错的。由于没有长截屏软件只能用短截屏了&#xff0c;大家谅解一下&#…

C++简易计算器的实现

定义&#xff1a; 计算器是近代人发明的可以进行数字运算的机器。 也就是说&#xff0c;计算器不等同于算盘&#xff0c;前者能自行运算&#xff0c;后者只能简便计算过程&#xff0c;在古代,人们发明了许多计算工具,如算筹、算盘、计算尺等,随着社会的发展和科技的进步,计算…

制作简易计算器

简易计算器 效果展示图项目要求内容分析涉及函数 效果展示图 项目要求 制作简易计算器&#xff0c;使其能实现简单的加&#xff0c;减&#xff0c;乘&#xff0c;除运算。 1.在两个文本框中分别输入两个数字 2.输入完成后&#xff0c;再次点击加&#xff0c;减&#xff0c;乘&…

C# 制作简易计算器

前言&#xff1a;环境是vs 2022 1、打开vs2022后&#xff0c;右边导航栏选择创建新项目。 2、选择Windows窗体应用&#xff08;.net Framework&#xff09; 3、进入配置新项目界面&#xff08;项目名称和位置可自行修改&#xff09;点击创建 4、窗体From1即为我们要要编辑的位…

至简设计系列_简易计算器

–作者&#xff1a;小黑同学 本文为明德扬原创及录用文章&#xff0c;转载请注明出处&#xff01; 1.1 总体设计 1.1.1 概述 计算器是近代人发明的可以进行数字运算的机器。现代的电子计算器能进行数学运算的手持电子机器&#xff0c;拥有集成电路芯片&#xff0c;但结构比电…