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的管理界面也能看到记录

相关推荐
weixin_446260852 小时前
超越Top-K:用可解释智能体操作替代黑盒检索
大数据·人工智能·机器学习
Data_Journal3 小时前
如何使用 Java 和 Jsoup 解析 HTML
大数据·开发语言·数据库·python·scrapy
123_不打狼4 小时前
AI Agent可观测性:破解多步推理黑盒的技术实践
大数据·人工智能
用户3610588626125 小时前
Spark 核心之二次排序、分组取 TopN 优化分析
大数据·spark
fastjson_6 小时前
Hive的介绍和使用
数据仓库·hive·hadoop
晓得迷路了6 小时前
栗子前端技术周刊第 141 期 - Next.js 16.3、npm 安全事件、2026 CSS 现状调查报告结果...
前端·javascript·npm
ZeekerLin6 小时前
本体论Ontology在企业AI项目落地思考
大数据·人工智能·企业ai落地·本体论
七夜zippoe6 小时前
基于 DolphinDB 构建全流程质量追溯体系:从原材料到成品的全链路追踪
大数据·人工智能·算法·全链路·dolphindb·质量追溯
zzzll11116 小时前
AI Agent可观测性:破解多步推理黑盒的技术实践
大数据·人工智能