首页 > 其他分享 >MapReduce和YARN

MapReduce和YARN

时间:2024-06-22 19:57:43浏览次数:13  
标签:容器 mapreduce yarn MapReduce 集群 YARN hadoop 资源

一: MapReduce概述

MapReduce是hadoop三大组件之一,是分布式计算组件

Map阶段 : 将数据拆分到不同的服务器后执行Maptask任务,得到一个中间结果

Reduce阶段 : 将Maptask执行的结果进行汇总,按照Reducetask的计算 规则获得一个唯一的结果

我们在MapReduce计算框架的使用过程中,我们只需要关注,Map任务的规则,和Reduce任务的规则即可

MapReduce的核心思想是: 先分(Map)再和(Reduce)

思考: MapReduce中hadoop服务帮我们完成了什么???

我们自己完成的是map和Reduce任务的规则制定.

Hadoop 完成了:

  1. 数据的拆分多个部分分别指定不同服务进行计算

  2. 申请计算资源

  3. 读取计算数据

  4. reduce汇总map结果

  5. 写入计算结果(hdfs)

  6. ......

Hadoop的出现大大简化了大数据的开发工作,我们只需要关注20%的业务计算,而80%的技术问题,都由hadoop 帮我们解决了.

思考: 所有的计算任务都可以使用mapreduce任务解决么? 什么样的任务可以使用mapreduce任务处理.

  1. 一个复杂任务,可以拆分为多个简单任务.

  2. 任务之间没有任何依赖关系,可以同时执行

  3. 结果之间没有依赖关系,可以随机合并.

将文件数据上传hdfs的/input目录下

cd /export/server/hadoop/share/hadoop/mapreduce
​
hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount  /input /output

二、YARN概述

yarn是一个分布式资源调度平台

yarn的作用是给mapreduce提供计算资源

yarn中都调度了哪些集群资源?

内存资源和cpu资源

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

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

yarn是hadoop生态圈发展的前提:

yarn不光可以对于hadoop平台的MR任务进行资源调度,可以对于所有的基于yarn的规则申请资源的服务进行资源调度,也就保证了我们基于hadoop组件运行的其他大数据服务可以获得合理的资源分配.

除了MapReduce,我们的Yarn还支持多种计算引擎 spark,flink等..

三、YARN架构

Yarn是标准的主从架构集群

主角色ResourceManager: 统一管理和分配集群资源,监控每一个NodeManager的健康状况.

从角色NodeManager: 统计汇报集群资源给RM,当前服务器集群资源的使用和容器拆分.监督资源回收

容器机制:

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

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

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

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

思考:

1台主机 NodeManager划分了3个容器 分别为 容器1: 1G 容器2: 2G 容器3: 3G

问题一: 如果我有一个程序需要10M内存我使用哪一个容器 容器1

问题二: 如果我有一个程序需要使用1.4G内存我使用哪一个容器 容器2

问题三: 如果我有一个程序,需要使用3.8G 内存我使用哪一个容器? 使用容器1和容器3进行合并提供给程序使用

分配集群资源时,容器可以合并,但是不能拆分.

四、MapReduce & YARN 的部署

集群规划(重要)

HDFS的集群规划

node1: namenode datanode

node2: SecondaryNamenode datanode

node3: datanode

如果需要扩展

node4 : datanode

node5 : datanode

.........

YARN的集群规划

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

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

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

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

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

集群规划

node1: ResourceManager NodeManager | NameNode DataNode

node2: NodeManager | SecondaryNameNode DataNode

node3: Nodemanager | DataNode

如果需要扩展:

node4: Nodemanager | DataNode

node5: Nodemanager | DataNode

.....

什么叫做服务? 什么叫做服务器?

服务器: 硬件层面的概念,一个服务器可以提供给我们相应的内存,cpu,磁盘资源等,但是服务器必须有操作系统,一般是linux系统.

服务: mysql hadoop ssh 在后台运行,一直保持接受数据状态,可以随时被客户端连接的软件.

一个服务器中可以运行多个服务

MapReduce的运行需要Yarn分配资源,计算完成后资源回收,不会持久在后台保持,并不能被客户端连接, 所以他不是一个服务,也不需要搭建集群.

在Hadoop平台中有两个集群HDFS和YARN还有一个计算框架MapReduce

Yarn集群部署

  1. 先关闭HDFS集群

stop-dfs.sh
  1. 修改配置文件

进入/export/server/hadoop/etc/hadoop目录下进行修改

② 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>

④ 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>

修改完node1上的配置文件后,需要远程发送到node2和node3中

scp -r /export/server/hadoop root@node2:/export/server
scp -r /export/server/hadoop root@node3:/export/server

五、MapReduce & YARN 初体验(了解)

Yarn集群的启停(重要)

# 启动yarn集群
start-yarn.sh
# 停止yarn集群
stop-yarn.sh

单起单停

yarn --daemon start|stop|status resourcemanager|nodemanager

一键自动hdfs和yarn集群

# 启动
start-all.sh
# 终止
stop-all.sh

执行mapreduce任务

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

示例1: 词频统计

# 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
​
# 注意: 输入目录必须存在,输出目录必须不存在,否则报错

标签:容器,mapreduce,yarn,MapReduce,集群,YARN,hadoop,资源
From: https://blog.csdn.net/weixin_65434097/article/details/139887066

相关文章

  • 已安装yarn,cmd可以使用,vscode中却无法识别
    使用VScode的终端时,全局安装的插件无法使用,如:yarn、cnpm、vue/cli、live-server、umi等。 解决方法:1.以管理员身份打开vscode2.在vscode终端执行get-ExecutionPolicy ===》查看结果为Restricted3.执行set-ExecutionPolicyRemoteSigned  ===》将ExecutionPolicy设......
  • 高效管理大型项目:Yarn 在复杂依赖安装中的实践与技巧
    Yarn是一个现代的包管理工具,它通过提高速度、可靠性和安全性,极大地改善了JavaScript项目中依赖的管理。对于大型项目,依赖数量可能非常庞大,这就需要一些高级技巧来确保依赖安装的效率和稳定性。本文将详细介绍如何在Yarn中处理大型项目的依赖安装。大型项目依赖管理的......
  • 深入解析:Yarn 锁文件的工作原理与最佳实践
    Yarn是一个现代的包管理器,旨在提供快速、可靠和安全的依赖管理。它在JavaScript项目中广泛使用,尤其是在使用React等前端框架时。Yarn的一个核心特性是它的锁文件,它确保了项目依赖的一致性和可重复性。本文将深入探讨Yarn锁文件的工作原理,并提供一些最佳实践,以帮助开......
  • 深入解析:Yarn与npm的比较与差异
    在JavaScript生态系统中,包管理器是不可或缺的工具,它们帮助开发者管理项目依赖,确保代码的可维护性和可扩展性。npm(NodePackageManager)作为最早的包管理器之一,长期以来一直是JavaScript项目的首选。然而,随着Yarn的问世,开发者们开始有了更多的选择。本文将深入探讨Yarn与npm......
  • yarn的安装及使用教程
     Yarn的安装及使用教程Yarn是一个JavaScript包管理工具,由Facebook创建,目的是解决npm的一些痛点,比如速度、安全性和确定性。以下是安装和使用Yarn的详细教程。 安装Yarn 1.使用npm安装Yarn如果你已经安装了Node.js和npm,可以使用npm来安装Yarn:shnpm......
  • Day1 学习笔记及成果---MapReduce实现手机流量统计分析
    Day1学习笔记及成果—MapReduce实现手机流量统计分析题目统计每个手机号上行流量和、下行流量和、总流量和(上行流量和+下行流量和),并且:将统计结果按照手机号的前缀进行区分,并输出到不同的输出文件中去。13*==>…15*==>…other==>…其中,access.log数据文件部分......
  • Day2 学习笔记及成果---基于MapReduce项目实现中所遇到的问题及解决方法
    Day2学习笔记及成果—基于MapReduce项目实现中所遇到的问题及解决方法问题一:主机和虚拟机互相能ping通,主机能ping通外网,虚拟机不能ping通外网。解决方案:可能的错误原因是网关设置有问题,虚拟机的网关应该和自己的网关一直,自己的网关可在编辑-虚拟网络设置中查看。首先执......
  • yarn 命令如何查看node_modules中的某个依赖包是被package.json中的哪个包所使用的?
    Yarn本身并没有直接提供一个命令来查看node_modules中的某个依赖包是由package.json中的哪个包直接或间接引入的。但是,你可以通过一些间接的方式来获取这些信息:手动检查:打开node_modules中你想查询的依赖包的package.json文件,查看它的name字段确认包名。然后回到你的项目根......
  • MapReduce学习之MapJoin案例实现
    MapReduce学习之MapJoin案例实现1.当前main方法所在的入口类packagecom.shujia.mr.mapJoin;importcom.shujia.mr.reduceJoin.ReduceJoin;importcom.shujia.mr.reduceJoin.ReduceJoinMapper;importcom.shujia.mr.reduceJoin.ReduceJoinReducer;importorg.apache.......
  • mapreduce的多种格式文件输出-自定义OutputFormat
    /***@description:mapreduce多种格式的文件输出方式*/publicclassMultipleTypeOutputFormat<K,V>extendsFileOutputFormat<K,V>{privatestaticfinalStringORCEXTENSION=".orc";privatestaticfinalStringCSVEXTENSION=".c......