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

news2024/10/5 18:25:53

前言:
💞💞大家好,我是书生♡,今天的内容主要是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

在这里插入图片描述

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

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

相关文章

使用GDAL进行简单的坐标系转换

使用GDAL进行简单的坐标系转换 使用python GDAL进行简单的坐标系转换&#xff0c;暂时不考虑不同基准坐标系转换的精度问题。 安装环境 使用UbuntuAnaconda python 环境 conda install gdal 定义坐标系 from osgeo import gdal from osgeo import osrsrs_wgs84 osr.Spati…

ICP配准算法

配准算法 问题定义ICP(point to point)算法思想步骤分解point to point和point to plane的区别ICP配准算法的标准流程NDT 本篇将介绍配准算法&#xff0c;将介绍ICP(point to point)、ICP(point to plane)和NDT算法。其中ICP有两种&#xff0c;point to point表示通过构建点与点…

力扣347. 前 K 个高频元素

思路&#xff1a;记录元素出现的次数用map&#xff1b; 要维护前k个元素&#xff0c;不至于把所有元素都排序再取前k个&#xff0c;而是新建一个堆&#xff0c;用小根堆存放前k个最大的数。 为什么是小根堆&#xff1f;因为堆每次出数据时只出堆顶&#xff0c;每次把当前最小的…

文旅元宇宙|“元宇宙+”全面赋能智慧文旅场景建设

元宇宙作为下一代互联网入口&#xff0c;正在潜移默化的改变着人生的生活方式&#xff0c;不断催生新业态&#xff0c;带给人们前所未有的体验。元宇宙概念的崛起&#xff0c;正以其独特的魅力&#xff0c;引领着一场全新的智慧文旅革命。元宇宙&#xff0c;这个融合了虚拟现实…

物联网实战--入门篇之(九)安卓QT--开发框架

目录 一、QT简介 二、开发环境 三、编码风格 四、设计框架 五、总结 一、QT简介 QT是一款以C为基础的开发工具&#xff0c;已经包含了很多常用的库&#xff0c;除了基本的GUI以外&#xff0c;还有网络、数据库、多媒体、进程通信、串口、蓝牙等常用库&#xff0c;开发起来…

Vue3_2024_7天【回顾上篇watch常见的后两种场景】

随笔&#xff1a;这年头工作不好找咯&#xff0c;大家有学历提升的赶快了&#xff0c;还有外出人多注意身体&#xff0c;没错我在深圳这边阳了&#xff0c;真的绝啊&#xff0c;最尴尬的还给朋友传染了&#xff01;&#xff01;&#xff01; 之前三种的监听情况&#xff0c;监听…

Godot 4 教程《勇者传说》依赖注入 学习笔记(0):环境配置

文章目录 前言相关地址环境配置初始化环境配置文件夹结构代码结构代码运行 资源文件导入像素风格窗口环境设置背景设置,Tileap使用自动TileMap 人物场景动画节点添加站立节点添加移动动画添加 通过依赖注入获取Godot的全局属性项目声明 当前项目逻辑讲解角色下降添加代码位置问…

ssm028蜀都天香酒楼的网站设计与实现+jsp

基于JSP的蜀都天香酒楼管理系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定蜀都…

C语言数据结构(11)——归并排序

欢迎来到博主的专栏C语言数据结构 博主ID&#xff1a;代码小豪 文章目录 归并排序两个有序数组的合并归并归并排序 归并排序的代码 归并排序 两个有序数组的合并 当前有两个有序数组arr1和arr2&#xff0c;我们创建一个可以容纳arr1和arr2同等元素个数的新数组arr。 让一个…

AGILEFORMER:用于医学图像分割的空间敏捷 Transformer UNET

AGILEFORMER&#xff1a;用于医学图像分割的空间敏捷 Transformer UNET 摘要IntroductionMethodDeformable Patch Embedding2.1.1 Rigid patch embedding2.1.2 Deformable patch embedding Spatially Dynamic Self-AttentionDeformable Multi-head Self-Attention (DMSA)Neighb…

Java | Leetcode Java题解之第11题盛最多水的容器

题目&#xff1a; 题解&#xff1a; public class Solution {public int maxArea(int[] height) {int l 0, r height.length - 1;int ans 0;while (l < r) {int area Math.min(height[l], height[r]) * (r - l);ans Math.max(ans, area);if (height[l] < height[r]…

Docker之镜像与容器的相关操作

目录 一、Docker镜像 搜索镜像 下载镜像 查看宿主机上的镜像 删除镜像 二、Docker容器 创建容器 查看容器 启停容器 删除容器 进入容器 创建/启动/进入容器 退出容器 查看容器内部信息 一、Docker镜像 Docker 运行容器前需要本地存在对应的镜像&#xff0c; 如…

OWASP TOP10 漏洞详解

前言 该内容是 OWASP TOP 10 的学习笔记&#xff0c;笔记内容来源 B 站龙哥的视频【12.Top漏洞10&#xff1a;服务器请求伪造_哔哩哔哩_bilibili】 一、访问控制崩溃 概念 未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据&#xf…

一篇文章Linux技术急速入门,掌握这些命令可以解决日常 99% 的问题

一篇文章Linux技术急速入门&#xff0c;掌握这些命令可以解决日常 99% 的问题。 当你听到Linux[1]时&#xff0c;大多数人会想到只有程序员才会使用的复杂操作系统。但是&#xff0c;其实并非如此&#xff0c;虽然Linux给普通用户的感觉可能很深奥&#xff0c;需要很多操作命令…

逆向案例14——cnki学术翻译AES加密分析,涉及保持会话和获取token值

python代码&#xff1a; import execjs import requests UA "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" token_url "https://dict.cnki.net/fyzs-front-api/getToken" url …

测试工程师求职是选自研公司还是选外包公司呢?

大家好&#xff0c; 今天我们一起来聊一聊测试工程师求职是选自研公司&还是选外包公司呢&#xff1f; 今天来谈谈我的个人看法&#xff0c;作为一个在测试岗位上多年的我来说&#xff0c;自研公司比较好&#xff0c;外包公司其实也不会差。各自都有特点特色&#xff0c;根据…

能否安全地删除 Mac 资源库中的文件?

在管理Mac电脑存储空间时&#xff0c;用户确实可能考虑对资源库&#xff08;Library&#xff09;文件夹进行清理以释放空间。Mac资源库是一个系统及应用程序存放重要支持文件的地方&#xff0c;其中包括但不限于配置文件、临时文件、缓存、插件、偏好设置、应用程序支持数据等。…

Django路由配置

简单说一下django路由配置&#xff0c;发现很多同学出错。 首先&#xff0c;先创建自己的app文件&#xff08;用 python manage.py startapp myApp来创建自己的app&#xff09; 这个是自己 在Django的配置文件setting.py添加自己的项目文件myapp ok&#xff0c;此时就可以添加路…

JavaWeb后端——Mybatis

概述 Mybatis&#xff1a;Java程序来对数据库进行操作&#xff0c;一款优秀的持久层框架&#xff0c;用于简化JDBC的开发 SSM&#xff1a;SpringMVC、Spring、Mybatis 快速入门 步骤2&#xff1a;注意数据库连接的四要素 application.properties&#xff1a;springboot 的默…

百度富文本编辑器配置(vue3)

今天分享一下我做的项目里面的一个百度富文本的配置问题&#xff0c;安装配置流程以及如何解决的 1.首先是安装组件 # vue-ueditor-wrap v3 仅支持 Vue 3 npm i vue-ueditor-wrap3.x -S # or yarn add vue-ueditor-wrap3.x 2. 下载 UEditor UEditor 并不支持通过 npm 的方式…