【Hadoop技术框架-MapReduce和Yarn的详细描述和部署】

前言:
💞💞大家好,我是书生♡,今天的内容主要是Hadoop的后两个组件:MapReduce和yarn的相关内容。同时还有Hadoop的完整流程。希望对大家有所帮助。感谢大家关注点赞。
💞💞前路漫漫,希望大家坚持下去,不忘初心,成为一名优秀的程序员

个人主页⭐: 书生♡
gitee主页🙋‍♂:闲客
专栏主页💞:大数据开发
博客领域💥:大数据开发,java编程,前端,算法,Python
写作风格💞:超前知识点,干货,思路讲解,通俗易懂
支持博主💖:关注⭐,点赞、收藏⭐、留言💬

目录

  • 1. MapReduce的概述
    • 1.1 MapReduce的定义
    • 1.2 MapReduce的两个阶段
    • 1.3 MapReduce原理-案例
  • 2. YARN概述
    • 2. 1 Yarn的概念
  • 3. YARN架构
    • 3.1 Yarn架构
    • 3.2 YARN容器
  • 4. MapReduce & YARN 的部署
    • 4.1 Yarn集群规划
    • 4. 2 Yarn部署
    • 4.3 查看YARN的WEB UI页面
  • 5. MapReduce & YARN 初体验
    • 5. 1 Yarn集群的启停
    • 5.2 执行mapreduce任务
  • 6. 历史服务器

1. MapReduce的概述

1.1 MapReduce的定义

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。

在这里插入图片描述

1.2 MapReduce的两个阶段

MapReduce是hadoop三大组件之一,是分布式计算组件,分为两个阶段:

  • Map阶段 : 将数据拆分到不同的服务器后执行Maptask任务,得到一个中间结果。
  • Reduce阶段 : 将Maptask执行的结果进行汇总,按照Reducetask的计算 规则获得一个唯一的结果

MapReduce的核心思想是: 先分(Map)再和(Reduce)
分散->汇总模式:

  1. 将数据分片,多台服务器各自负责一部分数据处理
  2. 然后将各自的结果,进行汇总处理
  3. 最终得到想要的计算结果

1.3 MapReduce原理-案例

我们以一个案例来演示一下他的流程:

假设有如下文件,内部记录了许多的单词。且已经开发好了一个MapReduce程序,功能是统计每个单词出现的次数。
在这里插入图片描述

假定有4台服务器用以执行MapReduce任务,可以3台服务器执行Map,1台服务器执行Reduce
在这里插入图片描述
注意:

MapReduce可供Java、Python等语言开发计算程序

2. YARN概述

MapReduce是基于YARN运行的,即没有YARN”无法”运行MapReduce程序

2. 1 Yarn的概念

Yarn是Hadoop的分布式资源调度平台,负责为集群的运算提供运算资源。如果把分布式计算机和单个计算机相对应的话,HDFS就相当于计算机的文件系统,Yarn就是计算机的操作系统,MapReduce就是计算机上的应用程序。

在这里插入图片描述

yarn是一个分布式资源调度平台,主要是给MapReduce调度资源。

  • 调度的有:cpu资源和内存资源

yarn中资源调度的目的是什么?

提高集群资源的利用率,防止部分程序恶意占用资源, 采用申请制,申请多少资源就使用多少资源

在这里插入图片描述

向YARN申请使用资源,YARN分配好资源后运行,空闲资源可供其它程序使用

在这里插入图片描述

程序向YARN申请所需资源
YARN为程序分配所需资源供程序使用

3. YARN架构

3.1 Yarn架构

Yarn既然是分布式那一定是一个标准的主从架构

  • 主角色ResourceManager: 统一管理和分配集群资源,监控每一个NodeManager的健康状况.
  • 从角色NodeManager: 统计汇报集群资源给RM,当前服务器集群资源的使用和容器拆分.监督资源回收

YARN,主从架构,有2个角色

  • 主(Master)角色:ResourceManager
  • 从(Slave) 角色:NodeManager

在这里插入图片描述

ResourceManager:整个集群的资源调度者, 负责协调调度各个程序所需的资源。
NodeManager:单个服务器的资源调度者,负责调度单个服务器上的资源提供给应用程序使用。

在这里插入图片描述

3.2 YARN容器

 我们要在服务器上分配资源,怎么才能准确的分配资源呢?
这个时候我们就要引入容器这个概念。

容器机制:容器(Container)是YARN的NodeManager在所属服务器上分配资源的手段

NodeManager,在程序没有执行时就预先抢占一部分资源划分为容器,等待服务进行使用

程序运行时先申请资源,RM分配资源后,由NodeManager划分出相应的资源支持程序运行

程序运行期间无法突破资源限制最多只能使用容器范围内的资源

容器资源分为: 内存资源和cpu资源

在这里插入图片描述
注意:
分配集群资源时,容器可以合并,但是不能拆分.

4. MapReduce & YARN 的部署

4.1 Yarn集群规划

YARN的集群规划

思考1: 哪一个角色占用资源最多??? ResourceManager

所以我们将RM放置在node1中,因为node1的服务器性能最好

思考2: hadoop中yarn集群可以和hdfs集群在同一台服务器中么?

可以,一般Hadoop服务部署时,hdfs和yarn逻辑上分离,物理上在一起.

yarn分配的是内存和cpu资源, 从而运行MapReduce计算任务,而该计算任务需要获取计算数据,计算数据存放在hdfs上,所以他们物理上在一起后数据传输速度快.

4. 2 Yarn部署

前提:Yarn的部署实在hdfs已经部署成功下完成的。
所以大家需要先去部署hdfs大家可以参考我的上一篇博客。
Hdfs的基础概念与部署🤞🤞🤞

  1. 先关闭HDFS集群
stop-dfs.sh
  1. 修改配置文件
    先进入目录下进行修改
 cd  /export/server/hadoop/etc/hadoop

3.修改mapred-site.xml文件

大家主需要把我下面的代码直接复制过去就可以。

<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

<!-- MR程序历史服务器端地址 -->
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>node1:10020</value>
</property>
 
<!-- 历史服务器web端地址 -->
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>node1:19888</value>
</property>

<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
  1. 配置 yarn-site.xml文件

额外配置项的功能后续会慢慢接触到
目前先复制粘贴配置上使用即可

同理:直接复制

<!-- 设置YARN集群主角色运行机器位置 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node1</value>
</property>

<!-- 为MapReduce开启shuffle服务 -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- NodeManager本地数据存储路径 -->
<property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>/data/nm-local</value>
</property>

<!-- NodeManager日志数据存储路径 -->
<property>
    <name>yarn.nodemanager.log-dirs</name>
    <value>/data/nm-log</value>
</property>

<!-- 设置yarn历史服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://node1:19888/jobhistory/logs</value>
</property>

<!-- 开启日志聚集 -->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>
  1. 修改完node1上的配置文件后,需要远程发送到node2和node3中
scp -r /export/server/hadoop root@node2:/export/server
scp -r /export/server/hadoop root@node3:/export/server

4.3 查看YARN的WEB UI页面

我们在配置完Yarn文件之后,通用端口号访问Yarn的页面
能进入到这个页面,说明我们的Yarn配置成功

node1:8088

在这里插入图片描述

5. MapReduce & YARN 初体验

我们这里就只是简单的了解一下怎么使用,具体的使用我们在后面会详细的说明。

5. 1 Yarn集群的启停

我们在之前学过hdfs的启停

  • yarn和hdfs是一样的:通过start和stop
# 启动yarn集群
start-yarn.sh
# 停止yarn集群
stop-yarn.sh
  • 当然我们也可以通过单启单停
yarn --daemon start|stop|status  resourcemanager或者nodemanager
  • 我们还可以直接全部启动所有的服务:一键自动hdfs和yarn集群
# 启动
start-all.sh
# 终止
stop-all.sh

5.2 执行mapreduce任务

保证服务启动且可以正常使用(yarn 和hdfs)

  1. 求Π
    先进入到这个目录下
 cd /export/server/hadoop/share/hadoop/mapreduce

在这里插入图片描述
使用已经有的命令
注意:这个命令是我们已经封装好的

hadoop jar hadoop-mapreduce-examples-3.3.4.jar pi 3 1000

在这里插入图片描述
2. 词频统计

# 1. 创建一个文件words.txt内部书写如下单词组合
itheima itcast itheima itcast
hadoop hdfs hadoop hdfs
hadoop mapreduce hadoop yarn
itheima hadoop itcast hadoop
itheima itcast hadoop yarn mapreduce

# 2. 创建输入和输出目录,并且将words文件上传到输入目录中
hadoop fs -mkdir -p /input/wordcount
hadoop fs -mkdir /output
hadoop fs -put words.txt /input/wordcount/

# 3. 执行示例
hadoop jar /export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount 
hdfs://node1:8020/input/wordcount 
hdfs://node1:8020/output/wc

# 注意: 输入目录必须存在,输出目录必须不存在,否则报错

6. 历史服务器

历史服务器:主要是为了将各个NodeManager中零散的log日志聚集起来,存放到hdfs中,启动一个历史服务器,用来统一查看历史服务信息(计算任务的执行信息)

我们需要配置一下历史服务器:

 cd  /export/server/hadoop/etc/hadoop

yarn-site.xml文件

<!-- 设置yarn历史服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://node1:19888/jobhistory/logs</value>
</property>

<!-- 开启日志聚集 -->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>

在这里插入图片描述
注意:修改完配置以后,一定要重启hadoop服务,否则无法生效
历史服务器启动

mapred --daemon start historyserver

在这里插入图片描述

我们直接通过端口号19888,通过浏览器访问
node1:19888

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

香港科技大学(广州)智能制造学域可持续能源与环境学域博士招生宣讲会——重庆大学专场(暨全额奖学金政策)

两个学域代表教授亲临现场&#xff0c;面对面答疑解惑助攻申请&#xff01;可带简历现场咨询和面试&#xff01; &#x1f4b0;一经录取&#xff0c;享全额奖学金1.5万/月&#xff01; 报名链接&#xff1a;https://www.wjx.top/vm/wmuN2ea.aspx# 地点&#xff1a;重庆大学A区…

观《你想活出怎样的人生》有感

《你想活出怎样的人生》 四月六号&#xff0c;和赵茜小美女观看了宫崎骏导演拍的《你想活出怎样的人生》&#xff0c;感受颇丰&#xff0c;特此写一篇文章以记之。 电影简介 《你想活出怎样的人生》是宫崎骏执导的动画电影&#xff0c;不仅是宫崎骏的复出之作&#xff0c;也…

ARP寻址过程

当知道目标的IP但是不知道目标的Mac地址的时候就需要借助ARP寻址获取目标的Mac地址&#xff0c;传输层借助四元组&#xff08;源IP源端口&#xff1a;目标IP目标端口&#xff09;匹配&#xff0c;网络层借助IP匹配&#xff0c;数据链路层则根据Mac地址匹配&#xff0c;数据传输…

77、WAF攻防——权限控制代码免杀异或运算变量覆盖混淆加密传参

文章目录 WAF规则webshell免杀变异 WAF规则 函数匹配 工具指纹 webshell免杀变异 php 传参带入 eval可以用assert来替换,assert也可以将字符串当作php代码执行漏洞 php 变量覆盖 php 加密 使用加密算法对php后门进行加密 php 异或运算 简化:无字符webshellP 无数字字母rc…

Open3D(C++) 鲁棒损失函数优化的ICP算法

目录 一、损失函数1、关于2、损失函数3、Open3D实现二、代码实现三、结果展示1、配准前1、配准后本文由CSDN点云侠原创,

11、子串-滑动窗口最大值

题解&#xff1a; 双端队列是一种特殊的队列&#xff0c;允许你在队列的两端进行插入和删除操作。在滑动窗口问题中&#xff0c;我们使用它来存储可能是当前窗口最大值的元素的索引。 维护队列的顺序&#xff1a; 当新元素进入窗口时&#xff0c;我们将它与队列尾部的元素进…

307k star, 免费的编程书籍 free-programming-books

307k star, 免费的编程书籍 free-programming-books 分类 开源分享 项目名: free-programming-books -- 各种编程语言免费学习资源 Github 开源地址&#xff1a; https://github.com/EbookFoundation/free-programming-books 查找页面&#xff08;英文&#xff09;&#xff…

在线代码生成器Mybaitis和Mybaitis Plus

功能 支持根据提供的数据信息自动找表和表字段可以单独生成某个文件可以按需生成多个文件(打包为 zip)常用的 vo 和 dto 支持字段自定义(支持多表字段合并)在非包的场景可以不输入 root 包支持批量多表生成支持 lombok 和 swaggerMybaitis和Mybaitis Plus 在页面样式上基本一样…

java流式计算Stream

java流式计算Stream 流(Stream)到底是什么呢? 是数据渠道&#xff0c;用于操作数据源&#xff08;集合、数组等&#xff09;所生成的元素序列。 “集合讲的是数据&#xff0c;流讲的是计算! ” 特点&#xff1a; Stream自己不会存储元素。 Stream不会改变源对象。相反&#x…

分享一份适合练手的软件测试实战项目

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

面试算法-152-螺旋矩阵

题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 解 class Solution {public List<Integ…

串口和 蓝牙模块HC08

串口基本认知 串行接口简称串口&#xff0c;也称 串行通信 接口或 串行通讯接口 &#xff08;通常指 COM 接口 &#xff09;&#xff0c;是采用串行通信方 式的 扩展接口 。串行 接口&#xff08;Serial Interface &#xff09;是指数据一位一位地顺序传送。其特点是 通信线路…

vulhub打靶记录——Corrosion2

文章目录 主机发现端口扫描ssh—22search openssh EXP web服务—8080目录扫描登录tomcat后台 提权切换用户查看用户权限寻找SUID命令破解登录密文 总结 主机发现 使用nmap扫描局域网内存活的主机&#xff0c;命令如下&#xff1a; nmap -sP 192.168.151.0/24192.168.151.1&am…

【LeetCode】894. 所有可能的真二叉树

文章目录 [894. 所有可能的真二叉树](https://leetcode.cn/problems/all-possible-full-binary-trees/)思路一&#xff1a;分治代码&#xff1a;思路二&#xff1a;记忆化搜索代码&#xff1a; 894. 所有可能的真二叉树 思路一&#xff1a;分治 1.递归&#xff0c;n1 时&#…

数字图像处理——数字图像基础(持续更新)

视觉感知要素——亮度适应和鉴别&#xff1a; 人眼对不同亮度的适应和鉴别能力&#xff1a;亮 -> 暗 适应&#xff1b;暗 -> 亮 适应 图像取样和量化 1、概念&#xff1a; 数字化坐标值称为取样 数字化幅度值称为量化 2、 坐标的数字化称为采样&#xff0c;…

【强化学习的数学原理-赵世钰】课程笔记(二)贝尔曼公式

【强化学习的数学原理-赵世钰】课程笔记&#xff08;二&#xff09;贝尔曼公式 一. 内容概述 1. 第二章主要有两个内容 &#xff08;1&#xff09;一个核心概念&#xff1a;状态值&#xff08;state value&#xff09;&#xff1a;从一个状态出发&#xff0c;沿着一个策略我…

GIS水文分析填充伪洼地学习

1 基本操作 洼地是指流域内被较高高程所包围的局部区域&#xff1b; 分为自然洼地和伪洼地&#xff1b; 自然洼地是自然界实际存在的洼地&#xff1b; 在 DEM 数据中&#xff0c;由于数据处理的误差和不合适的插值方法所产生的洼地&#xff0c;称为伪洼地&#xff1b; DEM 数据…

【C语言】汉诺塔问题

目录 一、何为汉诺塔问题&#xff1f; 二、汉诺塔计算规律 三、打印汉诺塔的移动路径 总结 一、何为汉诺塔问题&#xff1f; 汉诺塔问题是一个经典的问题。汉诺塔&#xff08;Hanoi Tower&#xff09;&#xff0c;又称河内塔&#xff0c;源于印度一个古老传说。大梵天创造世…

Linux Shell:`cat`命令

Linux Shell&#xff1a;cat命令 Linux 系统中的 cat 命令是一种多用途的工具&#xff0c;主要用于查看、创建、连接和追加文件内容。其名称来源于 concatenate 的缩写&#xff0c;意味着它可以用来连接文件内容到标准输出&#xff08;屏幕&#xff09;。在日常使用中&#xf…

C语言整数和小数的存储

1.整数在内存中的存储 计算机使用二进制进行存储、运算&#xff0c;整数在内存中存储使用的是二进制补码 1.1原码、反码、补码 整数的2进制表⽰⽅法有三种&#xff0c;即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分&#xff0c;符号位都是⽤0表⽰“正”&am…