Hadoop之Yarn

1、概念

Hadoop三大件:HDFS、MapReduce、Yarn

1、底层:HDFS 分布式文件系统 大数据存储底座,所有框架(MR/Spark/Flink/Hive/HBase)的数据最终都存在 HDFS 上,是整个集群的存储基石。

2、中间层:YARN 资源调度管理器 统一的集群资源调度平台,MapReduce、Spark、Flink 这些计算框架全部都可以跑在 YARN 之上,由 YARN 统一分配 CPU、内存、容器资源,这就是 YARN 最核心的作用,图里的从属关系画得很准。

3、上层:各类计算引擎

  • MapReduce:原生 Hadoop 离线批处理计算框架
  • Spark:内存式批处理 / 交互式计算框架
  • Flink:流式实时计算框架 三者共享下层 YARN 资源、共享 HDFS 存储。

2、Yarn的组成部分

1、ResourceManager (BOSS): 1个

他用来管理整个的Yarn平台,里面有一个资源调度器。

2、NodeManager (各个机器上的主管) 多个

听从我们的ResouceManager的调遣。是每一台电脑的管家。

3、Container(容器)

每一个NodeManager中,有一个或者多个这样的容器。是包含了一些资源的封装(CPU,内存,硬盘等),类似于我们熟悉的虚拟机。

4、AppMaster (项目经理)

每一个MapReduce任务启动提交后,会有一个对应的AppMaster。这个主要作用是负责整个job任务的运行。

3、Yarn如何进行配置和搭建

/opt/installs/hadoop/etc/hadoop 文件夹下:

mapred-site.xml

XML 复制代码
<!-- 指定mapreduce运行平台为yarn -->
<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

yarn-site.xml

XML 复制代码
   <!--指定resourceManager启动的主机为第一台服务器-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>bigdata001</value>
    </property>


    <!--配置yarn的shuffle服务-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value> 
    </property>

检查hadoop-env.sh 中是否配置了权限:

XML 复制代码
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

yarn-site.xml

继续配置:为了防止报AppMaster的错误,需要如下配置

XML 复制代码
  <property>
      <name>yarn.application.classpath</name>
      <value>结果值</value> 
   </property>

结果值 是通过输入 hadoop classpath 命令来获取的

复制代码
hadoop classpath

启动和停止yarn平台

XML 复制代码
启动: start-yarn.sh
停止: stop-yarn.sh

使用web访问

跟ResourceManager电脑的IP保持一致

4、关于启动和停止的命令

|--------------------------------------|------------------------------------------------------------------------------------------------------------------|
| 服务 | 命令 |
| 启动,停止hdfs | start-dfs.sh stop-dfs.sh |
| 启动,停止yarn | start-yarn.sh stop-yarn.sh |
| 停止和启动整个集群(包含hdfs,以及Yarn) | start-all.sh stop-all.sh start-all.sh ==(start-dfs.sh start-yarn.sh ) stop-all.sh == (stop-dfs.sh stop-yarn.sh ) |
| 只启动resourcemanager 停止resourcemanager | yarn --daemon start resourcemanger yarn --daemon stop resourcemanger |
| 只启动nodemanager 停止nodemanager | yarn --daemon start nodemanger yarn --daemon stop nodemanger |

hdfs 中单独启动的命令:

namenode : hdfs --daemon start namenode

datanode : hdfs --daemon start datanode 这个命令只能启动一个 datanode

5、使用yarn平台进行wordCount计算

将一个wc.txt 上传至hdfs平台,然后通过yarn平台进行计算

复制代码
hadoop spark hello hadoop
spark hello flink world
scala python python scala

运行hadoop自带的workCount:

bash 复制代码
hadoop jar /opt/installs/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input/wc.txt /output

我们还可以在Yarn平台上查看运行的情况:

以上这个案例使用的就是yarn运行,数据必须在hdfs上,yarn也必须启动。

6、MapReduce任务有三种运行开发模式

1、local模式

数据在本地,代码也在本地,使用本机的电脑的资源运行我们的MR

输入和输出路径指的都是本地路径,运行时耗费的资源也是本地资源。

2、local模式2

数据在hdfs上,代码在本地,使用本机的电脑的资源运行我们的MR

这个里面的输入和输出路径指的是hdfs上的路径。

我们将文件上传到hdfs上

然后运行代码,可以看到成功输出到hdfs上了

3、yarn模式

数据在hdfs上,代码跑在yarn上。

还需要加上这行代码,否则运行会报错

输入输出路径还是不变:

将程序打成Jar包上传至linux服务器:

这里需要复制一下main方法所在的类路径,等会使用hadoop命令会用到

jar包上传后,就可以运行了

复制代码
hadoop jar MapReduceDemo-1.0-SNAPSHOT.jar com.bigdata.phoneflow.PhoneFlowDriver

jar包的名字最好短一点
com.bigdata.phoneflow.PhoneFlowDriver   这个是Main方法所在的类的全路径

运行成功后,可以在hdfs目录下看到输出文件

同时yarn的管理界面也能看到记录

相关推荐
大大大大晴天18 分钟前
从 Prompt 到 Tool Calling:AI Agent 如何稳定连接程序世界
大数据·agent
key_3_feng1 小时前
反馈闭环:Agent 自我进化的真正引擎
大数据·agent
EnCi Zheng2 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
GlobalInfo2 小时前
重磅发布 | 2026年船体清洁机器人行业研究报告:市场规模、发展前景与十五五战略地图
大数据·人工智能·机器人
海宇服务2 小时前
零信任架构实战:基于海宇全能小微企业报告构建自动化园区商户免押租赁资信核验网关
大数据·人工智能·架构·自动化
热文新讯3 小时前
迎进博·话疗愈:2026酒店“疗愈睡眠”闭门研讨会在沪举行
大数据·人工智能·物联网
NailiConveyor6 小时前
柔性物流方案如何适配工厂升级?自动化输送流水线定制要点
大数据·运维·自动化·制造·业界资讯
梦影_6 小时前
MySQL进阶教程(五)—— SQL调优(下)
android·大数据·数据库·后端·sql·mysql·database
没落之王6 小时前
三易五行看宋朝的三界确立
大数据·人工智能·算法
samLi06208 小时前
【数据集】水星逆行及相关日期窗口数据(1973-2025年)
大数据