&&大数据学习&&
系列专栏: 哲学语录: 承认自己的无知,乃是开启智慧的大门
如果觉得博主的文章还不错的话,请点赞+收藏⭐️+留言支持一下博主哦
一、概述
YARN(Yet Another Resource Negotiator)是Apache Hadoop生态系统中的一个组件,用于管理和调度分布式应用程序。它提供了一个可扩展的框架,用于处理大规模数据和分布式计算任务。YARN的主要目标是提供更高效、灵活和可扩展的资源管理,以满足Hadoop生态系统中的各种应用程序需求。
二、YARN的核心组件
- ResourceManager(RM):ResourceManager是YARN中的主要组件,负责整个集群的资源管理和调度。它负责接收来自应用程序的资源请求,并根据集群的当前状态分配资源。
- NodeManager(NM):NodeManager是集群中的工作节点,负责管理单个节点的资源。它负责启动、监视和停止应用程序容器,并报告容器的状态和资源使用情况。
- ApplicationMaster(AM):ApplicationMaster是每个应用程序特有的组件,负责协调和管理应用程序的生命周期。它与ResourceManager交互,以获取资源并跟踪应用程序的状态。
- Container:Container是YARN中的基本工作单元,用于运行应用程序的代码和进程。每个Container都包含一个应用程序的特定任务或进程。
三、YARN的工作流程
- 应用程序提交:用户将应用程序提交给ResourceManager。
- 资源分配:ResourceManager根据应用程序的需求和集群的状态,为应用程序分配资源。
- ApplicationMaster启动:ApplicationMaster启动并与管理员交互,以获取更多资源或进行任务调度。
- 容器分配:ApplicationMaster向ResourceManager请求容器资源,ResourceManager将容器分配给ApplicationMaster。
- 容器启动:NodeManager根据容器的配置启动容器,并将容器状态报告给ResourceManager。
- 任务执行:容器执行应用程序的任务或进程。
- 任务状态跟踪:ApplicationMaster与ResourceManager和NodeManager交互,以跟踪应用程序的状态和进度。
- 应用程序完成:应用程序完成执行后,ApplicationMaster向ResourceManager报告应用程序的状态,ResourceManager将资源释放回集群。
YARN的执行流程包括以下几个步骤:
- 用户向YARN中提交应用程序,其中包括ApplicationMaster(AM)程序、启动AM的命令以及用户程序等。
- AM首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态。
- AM采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
- 一旦AM申请到资源后,便与对应的NodeManager通信,要求它启动任务。
- NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
- 各个任务通过某个RPC协议向AM汇报自己的状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务失败的时候重新启动任务。
- 应用程序运行完成后,AM向ResourceManager注销并关闭自己。
四、执行流程:
- 用户向YARN中提交应用程序,其中包括ApplicationMaster(AM)程序、启动AM的命令以及用户程序等。
- AM首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态。
- AM采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。
- 一旦AM申请到资源后,便与对应的NodeManager通信,要求它启动任务。
- NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
- 各个任务通过某个RPC协议向AM汇报自己的状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务失败的时候重新启动任务。
- 应用程序运行完成后,AM向ResourceManager注销并关闭自己。
以下是在Linux环境中部署YARN(Hadoop的资源管理器)的详细步骤。这里假设你已经安装了Java和Hadoop。
1. **下载并解压Hadoop:**
- 下载适合你的操作系统的Hadoop版本,例如从Apache官网下载。
- 解压下载的Hadoop压缩包,例如:
```
tar -zxvf hadoop-3.x.x.tar.gz
```
2. **配置环境变量:**
- 编辑`~/.bashrc`或`~/.bash_profile`文件,添加以下环境变量:
```
export HADOOP_HOME=/path/to/your/hadoop/directory
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
3. **配置Hadoop:**
- 编辑core-site.xml文件,配置HDFS和YARN的基础信息,例如:
fs.defaultFS
hdfs://localhost:9000
hadoop.tmp.dir
/path/to/your/hadoop/tmp
```
- 编辑yarn-site.xml文件,配置YARN的相关参数,例如:
```xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
localhost
4. **格式化HDFS:**
- 在Hadoop目录下运行以下命令来格式化HDFS:
hdfs namenode -format
5. **启动Hadoop服务:**
- 启动HDFS和YARN服务:
sbin/start-dfs.sh
sbin/start-yarn.sh
应该能看到NameNode、DataNode、ResourceManager、NodeManager等进程。
以上就是在Linux环境中部署YARN的基本步骤。请注意,这只是一个基本的单节点部署,实际生产环境中可能需要进行更复杂的配置和优化。
需要注意的是:在开启hiveserver2后连接需要关闭hdfs和yarn才可以连接,因为之前的许多配置项还米有生效。