Hadoop框架:MapReduce基本原理和入门案例

news2024/11/14 17:33:33

Hadoop MapReduce是一种用于处理大数据的编程模型。它将数据集切分成多个小任务,每一个小任务都可以通过独立的计算来完成,最终的结果可以通过合并或更新数据来进行聚合。Hadoop MapReduce极大地简化了处理大数据的过程,因为它可以同时进行多个计算任务,并且可以快速地进行计算结果的合并和更新。

1. MapReduce的思想很好理解,关键在于如何基于这 个思想设计出一款分布式计算程序?

2. 下面看看Hadoop团队针对MapReduce的设计构思是怎样的?这决定了你将如何使用MapReduce?

(1)如何对付大数据处理场景

⚫ 对相互间不具有计算依赖关系的大数据计算任务,实现并行最自然的办法就是采取MapReduce分而治之的策略。

⚫ 首先Map阶段进行拆分,把大数据拆分成若干份小数据,多个程序同时并行计算产生中间结果;然后是Reduce聚合阶段,通过程序对并行的结果进行最终的汇总计算,得出最终的结果。

⚫ 不可拆分的计算任务或相互间有依赖关系的数据无法进行并行计算!

(2)构建抽象编程模型

⚫ MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。

map: 对一组数据元素进行某种重复式的处理;

reduce: 对Map的中间结果进行某种进一步的结果整理。

⚫ MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:

map: (k1; v1) → (k2; v2)

reduce: (k2; [v2]) → (k3; v3)

⚫ 通过以上两个编程接口,大家可以看出MapReduce处理的数据类型是<key,value>键值对。
 

(3)统一架构、隐藏底层细节

⚫ 如何提供统一的计算框架,如果没有统一封装底层细节,那么程序员则需要考虑诸如数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此,MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节。

⚫ MapReduce最大的亮点在于通过抽象模型和计算框架把需要做什么(what need to do)与具体怎么做(how to

do)分开了,为程序员提供一个抽象和高层的编程接口和框架。

⚫ 程序员仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的业务程序代码。

⚫ 至于如何具体完成这个并行计算任务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理:从分布代码的执行,到大到数千小到单个节点集群的自动调度使用。

分布式计算概念

⚫ 分布式计算是一种计算方法,和集中式计算是相对的。

⚫ 随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费相当长的时间来完成。

⚫ 分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。

MapReduce介绍

⚫ Hadoop MapReduce是一个分布式计算框架,用于轻松编写分布式应用程序,这些应用程序以可靠,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集)。

⚫ MapReduce是一种面向海量数据处理的一种指导思想,也是一种用于对大规模数据进行分布式计算的编程模型。

MapReduce产生背景

⚫ MapReduce最早由Google于2004年在一篇名为《MapReduce:Simplified Data Processingon Large Clusters 》的论文中提出。

⚫ 论文中谷歌把分布式数据处理的过程拆分为Map和Reduce两个操作函数(受到函数式编程语言的启发),随后被 Apache Hadoop参考并作为开源版本提供支持,叫做Hadoop MapReduce。

⚫ 它的出现解决了人们在最初面临海量数据束手无策的问题,同时它还是易于使用和高度可扩展的,使得开发者无需关系分布式系统底层的复杂性即可很容易的编写分布式数据处理程序,并在成千上万台普通的商用服务器中运行。


MapReduce特点

⚫ 易于编程

Mapreduce框架提供了用于二次开发的接口;简单地实现一些接口,就可以完成一个分布式程序。任务计算交给计算框架去处理,将分布式程序部署到hadoop集群上运行,集群节点可以扩展到成百上千个等。

⚫ 良好的扩展性

当计算机资源不能得到满足的时候,可以通过增加机器来扩展它的计算能力。基于MapReduce的分布式计算得特点可以随节点数目增长保持近似于线性的增长,这个特点是MapReduce处理海量数据的关键,通过将计算节点增至几百或者几千可以很容易地处理数百TB甚至PB级别的离线数据。

⚫ 高容错性

Hadoop集群是分布式搭建和部署得,任何单一机器节点宕机了,它可以把上面的计算任务转移到另一个节点上运行, 不影响整个作业任务得完成,过程完全是由Hadoop内部完成的。

⚫ 适合海量数据的离线处理

可以处理GB、TB和PB级别得数据量

MapReduce局限性
 

MapReduce虽然有很多的优势,也有相对得局限性,局限性不代表不能做,而是在有些场景下实现的效果比较差,并 不适合用MapReduce来处理,主要表现在以下结果方面:

⚫ 实时计算性能差

MapReduce主要应用于离线作业,无法作到秒级或者是亚秒级得数据响应。

⚫ 不能进行流式计算

流式计算特点是数据是源源不断得计算,并且数据是动态的;而MapReduce作为一个离线计算框架,主要是针对静态数据集得,数据是不能动态变化得。

MapReduce实例进程

一个完整的MapReduce程序在分布式运行时有三类

⚫ MRAppMaster:负责整个MR程序的过程调度及状态协调

⚫ MapTask:负责map阶段的整个数据处理流程

⚫ ReduceTask:负责reduce阶段的整个数据处理流程

阶段组成

⚫ 一个MapReduce编程模型中只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段;

⚫ 不能有诸如多个map阶段、多个reduce阶段的情景出现;

⚫ 如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序串行运行。

MapReduce数据类型

⚫ 注意:整个MapReduce程序中,数据都是以kv键值对的形式流转的;

⚫ 在实际编程解决各种业务问题中,需要考虑每个阶段的输入输出kv分别是什么;

⚫ MapReduce内置了很多默认属性,比如排序、分组等,都和数据的k有关,所以说kv的类型数据确定及其重要的。

​Hadoop框架入门

  • P1902-Apache Hadoop介绍、发展简史、现状

  • P2003-Apache Hadoop特性优点、国内外应用

  • P2104-Apache Hadoop发行版本、架构变迁

  • P2205-Apache Hadoop安装部署--集群组成介绍

  • P2306-Apache Hadoop安装部署--服务器基础环境设置

  • P2407-Apache Hadoop安装部署--安装包结构

  • P2508-Apache Hadoop安装部署--修改配置文件、同步安装包与环境变量

  • P2609-Apache Hadoop安装部署--format初始化操作

  • P2710-Apache Hadoop安装部署--集群启停命令、Web UI页面

  • P2811-Apache Hadoop安装部署--初体验

  • P2912-传统文件系统在大数据时代面临的挑战

  • P3013-场景互动:分布式存储系统的核心属性及功能作用

  • P3114-HDFS简介、设计目标与应用场景

  • P3215-HDFS重要特性解读

  • P3316-HDFS shell命令行解释说明

  • P3417-HDFS shell命令行常用操作

  • P3518-HDFS工作流程与机制--各角色职责介绍与梳理

  • P3619-HDFS工作流程与机制--写数据流程--pipeline、ack、副本策略

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

锁屏面试题百日百刷-Hive篇(十一)

锁屏面试题百日百刷&#xff0c;每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线&#xff0c;官网地址&#xff1a;https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容&#xff0c;还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你…

大坝安全监测和水雨情测报系统-智慧水利

政策背景2021年3月23日《国务院办公厅关于切实加强水库除险加固和运行管护工作的通知》&#xff08;国办发〔2021〕8号&#xff09;和2021年9月22日国务院常务会议均明确要求&#xff0c;加快推进水库除险加固&#xff0c;加强雨水情和安全监测预警设施建设&#xff0c;健全常态…

23种Java设计模式

目录 &#x1f9e1; Java 设计模式 六大原则 创建型模式 工厂模式 (Factory Pattern) 抽象工厂模式 (Abstract Factory Pattern) 单例模式 (Singleton Pattern) 建造者模式 (BuilderPattern) 原型模式 (Prototype Pattern) 结构型模式 适配器模式 (Adapter Pattern) …

vmware 虚拟机创建 LVM

LVM 原理 LVM (Logical volume Manager): 虚拟设备驱动&#xff0c;是在内核中块设备和物理设备之间添加的一个新的抽象层次, LVM 可以弹性的调整 文件系统的容量 LVM的实现原理&#xff1a;LVM 将几个实体的 partitions/disk 通过软件组合成一块独立的大磁盘VG&#xff0c;之…

中职网络空间安全B-windows渗透

Windows渗透 目录 Windows渗透 要点 cev2017-7269 ms14-064 pr.exe 提权 3389.bat 打开连接 破解hash 总体是众多小点的结合 1.通过本地pc中的渗透平台kali对服务器场景进行服务及版本扫描渗透测试&#xff0c;并将该操作显示结果中445端口对应的服务版本信息字符串作为fla…

Django实践-03模型-02基于admin管理表

文章目录Django实践-03模型利用Django后台管理模型1. 将admin应用所需的表迁移到数据库中。2. 创建访问admin应用的超级用户账号&#xff0c;3. 运行项目4.注册模型类5.对模型进行CRUD操作。6.实现学科页和老师页效果1. 修改polls/views.py文件。2.修改templates/polls/subject…

THUPC-2023 游记

清华校赛&#xff0c;战火重燃 原文链接 宣传图 上周四同学在洛谷无意间看到了宣传图&#xff0c;当时很有感触。不知觉间&#xff0c;又是一年春&#xff0c;又是一场触动心弦的 THUPC 了。 周五的团建过于有趣&#xff0c;致使我完全将 THUPC 抛之脑后了。 周日上午被省选…

原型链(回顾)

概念prototype__proto__原型链查找机制万物皆对象判断私有/共有属性方法Object.prototype.prototype nullObject.create(proto, [propertiesObject])给类的原型上扩展属性方法的4种方法Fn.prototype.xxx xxxObject.prototype.xxx xxxf1.proto.xxx xxx原型重定向 概念 原型…

虚拟相机 Cinemachine Virtual Camera

一.简介 本质上,虚拟相机应该是相机行为的配置文件,虚拟相机之间的切换实际上就是在进行相机行为之间的切换; 虚拟相机并不会创建任何摄像机,他只会创建虚拟节点,实际上操作的是Cinemachine Brain 虚拟相机属性设置完毕后,应尽量避免在游戏中对齐进行修改, 如有需要可以多创建…

RocketMQ-03

1. 高级功能 1.1 消息存储 分布式队列因为有高可靠性的要求&#xff0c;所以数据要进行持久化存储。 消息生成者发送消息MQ收到消息&#xff0c;将消息进行持久化&#xff0c;在存储中新增一条记录返回ACK给生产者MQ push 消息给对应的消费者&#xff0c;然后等待消费者返回A…

Ubuntu 搭建文件服务器(Nginx)

1&#xff0c;下载Nginx 2&#xff0c;安装Nginx 3&#xff0c;Nginx指令及脚本使用 4&#xff0c;配置Nginx 1&#xff0c;下载Nginx ①去官网下载对应的Nginx版本 nginx: download ②直接在ubuntu使用指令下载 wget http://nginx.org/download/nginx-1.23.3.tar.gz 2…

网上赚钱的兼职有哪些,互联网兼职什么挣钱多?

2023年&#xff0c;大投资的创业并不适合普通人&#xff0c;而小投资的创业形式&#xff0c;轻资产创业也需要资金&#xff0c;所以&#xff0c;很多人考虑到了兼职赚钱&#xff0c;那么&#xff0c;网上赚钱的兼职有哪些&#xff0c;互联网兼职做什么挣钱比较多呢&#xff1f;…

DHCP Snooping讲解

DHCP Snooping时DHCP的一种安全特性&#xff0c;用于保证DHCP客户端从合法的DHCP服务器获取IP地址&#xff0c;并记录DHCP客户端IP地址与MAC地址等参数的对应关系&#xff0c;防止网络上针对DHCP攻击 通过配置信任端口和非信任端口来实现安全防护 信任接口 正常接收DHCP服务器响…

网络安全之暴力破解介绍及暴力破解Tomcat

网络安全之暴力破解介绍及应用场景一、暴力破解介绍1.1 暴力破解介绍1.2 暴力破解应用场景一、暴力破解Tomcat一、暴力破解介绍 1.1 暴力破解介绍 暴力破解字典&#xff1a;https://github.com/k8gege/PasswordDic 1.2 暴力破解应用场景 一、暴力破解Tomcat 登录Tomcat后台&a…

重磅通知!OpenAI又放大招:官宣开放API接口-3.5版本 需求大涨,机遇与挑战并存,谁能拔得头筹?

3月2日&#xff0c;在各大论坛网站霸榜了一个多月&#xff0c;ChatGPT相关话题的热度仍高居不下。这边热度未歇&#xff0c;那边研发ChatGPT的人工智能公司又在互联网上投下一颗重磅“炸弹”&#xff1a;OpenAI在其官方博客宣布&#xff0c;将开放ChatGPT和Whisper的模型API。 …

代码分享:面波数据快速成图

代码分享&#xff1a;面波数据快速成图 前言 目前&#xff0c;物探数据主要用surfer软件成图&#xff0c;surfer软件具有强大的插值和绘图功能&#xff0c;成图比较美观。但是&#xff0c;生产过程中大量的物探数据&#xff0c;依靠excel和surfer来成图耗费人力时间成本。本博…

UML视图—用例图、顺序图、状态图、类图、包图、协作图

大家好&#xff0c;欢迎来到Doker&#xff0c;这是一篇架构设计的基础文章。面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML&#xff08;也就是Unified Modeling Language™&#xff09;&#xff0c;这篇课程的目…

Linux25 -- 监听队列链接上限测试、命令uname、ulimit

一、监听队列链接上限测试 1、res listen(sockfd,5); //创建监听队列res listen(sockfd,5);不懂版本有不同的限制&#xff0c;2.6早期版本有限制为128&#xff0c;超过默认为128&#xff0c;可使用uname -a 查看版本 2、测试将链接数到达上限&#xff0c; 方法&#xff1…

【安卓开发】探究服务

10.2 Android多线程编程 定义一个线程只需要新建一个类继承自Thread&#xff0c;然后重写父类的run方法&#xff0c;在里面编写耗时逻辑即可 class MyThread extends Thread{Overridepublic void run(){// 处理具体的逻辑} }那么如何启动呢 new Mythread().start() 这样继承的…

Hive拉链表

概述 拉链表&#xff1a;维护历史状态以及最新状态数据的表 作用场景 1. 数据量比较大。 2. 表中的部分字段会被更新&#xff0c;比如用户的地址&#xff0c;银行利率&#xff0c;订单的状态等。 3. 需要查看某一个时间点或者时间段的历史快照信息&#xff0c;比如&#xff0c;…