hadoop学习笔记3-yarn

4.YARN

yarn本质上是一个负责管理资源节点、调度资源节点的资源调度平台,负责为运算程序提供服务器计算资源,把任务调度到合适的节点上执行

4.1yarn架构

yarn 主要由ResourceManager、NodeManager、applicationmaster组件构成

yarn将资源管理和应用程序管理两部分分离开,分别由ResouceManager和ApplicationMaster负责

ResourceManager(RM)

RM是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM),通俗讲是用于管理NodeManager节点的资源,包括cup、内存等。
ApplicationMaster(AM)

每个应用程序对应一个ApplicationMaster。ApplicationMaster 负责协调来自 ResourceManager 的资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配),通俗讲是管理和监控任务,随着任务创建而创建,任务的完成而结束。
NodeManager(NM)

NM是每个节点上的资源和任务管理器,一方面,它会定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自AM的Container启动/停止等各种请求。

4.2三台resourcemanager配置

1.resourcemanager搭建

配置yarn-env.sh

设置内存占比,yarn的内存为256M

source /etc/profile

JAVA=$JAVA_HOME/bin/java

JAVA_HEAP_MAX=-Xmx256m

YARN_HEAPSIZE=256

export YARN_RESOURCEMANAGER_HEAPSIZE=256

配置yarn-site.xml

<!-- RM1 configs start -->

<property>

<name>yarn.resourcemanager.address.rm1</name>

<value>nn1:8032</value>

<description>ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等</description>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>nn1</value>

<description>ResourceManager主机名</description>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address.rm1</name>

<value>nn1:8030</value>

<description>ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。</description>

</property>

<property>

<name>yarn.resourcemanager.webapp.https.address.rm1</name>

<value>nn1:8089</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address.rm1</name>

<value>nn1:8088</value>

<description>ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。</description>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address.rm1</name>

<value>nn1:8031</value>

<description>ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。</description>

</property>

<property>

<name>yarn.resourcemanager.admin.address.rm1</name>

<value>nn1:8033</value>

<description>ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等</description>

</property>

<!-- RM1 configs end -->

<!-- RM2 configs start -->

<property>

<name>yarn.resourcemanager.address.rm2</name>

<value>nn2:8032</value>

<description>ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等</description>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm2</name>

<value>nn2</value>

<description>ResourceManager主机名</description>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address.rm2</name>

<value>nn2:8030</value>

<description>ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资>源等。</description>

</property>

<property>

<name>yarn.resourcemanager.webapp.https.address.rm2</name>

<value>nn2:8089</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address.rm2</name>

<value>nn2:8088</value>

<description>ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。</description>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address.rm2</name>

<value>nn2:8031</value>

<description>ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。</description>

</property>

<property>

<name>yarn.resourcemanager.admin.address.rm2</name>

<value>nn2:8033</value>

<description>ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等</description>

</property>

<!-- RM2 configs end -->

<!-- RM3 configs start -->

<property>

<name>yarn.resourcemanager.address.rm3</name>

<value>nn3:8032</value>

<description>ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等</description>

</property>

<property>

<name>yarn.resourcemanager.hostname.rm3</name>

<value>nn3</value>

<description>ResourceManager主机名</description>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address.rm3</name>

<value>nn3:8030</value>

<description>ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。</description>

</property>

<property>

<name>yarn.resourcemanager.webapp.https.address.rm3</name>

<value>nn3:8089</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address.rm3</name>

<value>nn3:8088</value>

<description>ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息。</description>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.address.rm3</name>

<value>nn3:8031</value>

<description>ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等。</description>

</property>

<property>

<name>yarn.resourcemanager.admin.address.rm3</name>

<value>nn3:8033</value>

<description>ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等</description>

</property>

分发配置文件并启动resourcemanager

#分发配置文件到每个机器中

scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-env.sh /usr/local/hadoop/etc/hadoop/ scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-site.xml /usr/local/hadoop/etc/hadoop/

在nn1、nn2和nn3上启动resourceManager

yarn-daemon.sh start resourcemanager

此时集群上各个服务器此时的进程情况

三台resourcemanager启动之后都是active状态,说明resourcemanager还没有进行active选举

2.配置resourcemanager的HA及元数据同步

resourcemanager的active选举是借助zookeeper完成的,这个过程与namenode的active选举类似,同时通过在zookeeper上创建新的节点,如果哪个resourcemanager先在zookeeper上创建节点成功,那么这个resourcemanager状态就是active,剩下的两个状态就是standby;在active选举结束以后,active的resourcemanager会自动在zookeeper上创建一个新的节点,用于存储元数据信息,standby的resourcemanager会读取该节点的元数据信息,实现resourcemanager的元数据同步

yarn-site.xml中增加如下配置

<!-- yarn ha start -->

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

<description>是否开启yarn ha</description>

</property>

<property>

<name>yarn.resourcemanager.ha.automatic-failover.embedded</name>

<value>true</value>

<description>ha状态切换为自动切换</description>

</property>

<property>

<name>yarn.resourcemanager.ha.rm-ids</name>

<value>rm1,rm2,rm3</value>

<description>RMs的逻辑id列表</description>

</property>

<property>

<name>yarn.resourcemanager.zk-address</name>

<value>nn1:2181,nn2:2181,nn3:2181</value>

<description>ha状态的存储地址</description>

</property>

<!-- yarn ha end -->

<!-- 元数据存储共享 -->

<property>

<name>yarn.resourcemanager.cluster-id</name>

<value>pseudo-yarn-rm-cluster</value>

<description>集群的Id</description>

</property>

<property>

<name>yarn.resourcemanager.recovery.enabled</name>

<value>true</value>

<description>默认值为false,也就是说resourcemanager挂了相应的正在运行的任务在rm恢复后不能重新启动</description>

</property>

<property>

<name>yarn.resourcemanager.store.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>

<description>配置RM状态信息存储方式3有两种,一种是FileSystemRMStateStore,另一种是MemoryRMStateStore,还有一种目前较为主流的是zkstore</description>

</property>

<property>

<name>yarn.resourcemanager.zk.state-store.address</name>

<value>nn1:2181,nn2:2181,nn3:2181</value>

<description>当使用ZK存储时,指定在ZK上的存储地址。</description>

</property>

<!-- 元数据存储共享 -->

分发配置文件重启resourceManager

#分发配置文件到每个机器中

scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-site.xml /usr/local/hadoop/etc/hadoop/

在nn1、nn2和nn3上重启resourceManager

yarn-daemon.sh stop resourcemanager

yarn-daemon.sh start resourcemanager

此时在三台resourcemanager中成功选举了active

查看zookeeper,此时多了两个节点

yarn-leader-election:选举leader的元数据信息

rmstore:存储元数据的节点

4.3三台nodemanager配置

1.nodemanager搭建

yarn-site.xml中增加如下配置

<!-- nodeManager基础配置 -->

<property>

<name>yarn.nodemanager.local-dirs</name>

<value>/data/yarn/local</value>

<description>中间结果存放位置,存放执行Container所需的数据如可执行程序或jar包,配置文件等和运行过程中产生的临时数据</description>

</property>

<property>

<name>yarn.nodemanager.log-dirs</name>

<value>/data/yarn/logs</value>

<description>Container运行日志存放地址(可配置多个目录)</description>

</property>

<property>

<name>yarn.nodemanager.address</name>

<value>0.0.0.0:9103</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

<description>NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序</description>

</property>

<property>

<name>yarn.nodemanager.webapp.address</name>

<value>0.0.0.0:8042</value>

</property>

<property>

<name>yarn.nodemanager.localizer.address</name>

<value>0.0.0.0:8040</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>mapreduce.shuffle.port</name>

<value>23080</value>

</property>

<!-- nodeManager基础配置 -->

分发配置文件并启动nodemanager

#分发yarn-site.xml到各个机器中

scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-site.xml /usr/local/hadoop/etc/hadoop/

#启动s1、s2、s3的nodemanager

yarn --workers --daemon start nodemanager

2.nodemanager资源规划配置

如下是目前nodemanager的节点资源情况需要按照实际服务器资源进行配置

yarn-site.xml中增加如下配置

<!-- nodeMananger资源限定 start -->

<property>

<name>yarn.scheduler.minimum-allocation-vcores</name>

<value>1</value>

<description>单个任务可申请的最小虚拟CPU个数</description>

</property>

<property>

<name>yarn.scheduler.maximum-allocation-vcores</name>

<value>3</value>

<description>单个任务可申请的最大虚拟CPU个数,此参数对应yarn.nodemanager.resource.cpu-vcores,建议最大为一个物理CPU的数量</description>

</property>

<property>

<name>yarn.nodemanager.resource.memory-mb</name>

<value>1536</value>

</property>

<property>

<name>yarn.scheduler.maximum-allocation-mb</name>

<value>1024</value>

<description>单个任务可申请的最多物理内存量</description>

</property>

<property>

<name>yarn.nodemanager.resource.cpu-vcores</name>

<value>3</value>

<description>该节点上YARN可使用的虚拟CPU个数,一个物理CPU对应3个虚拟CPU</description>

</property>

<!-- 重要开始 end -->

<!-- 关闭内存检测 -->

<property>

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

<description>虚拟内存检测,默认是True</description>

</property>

<property>

<name>yarn.nodemanager.pmem-check-enabled</name>

<value>false</value>

<description>物理内存检测,默认是True</description>

</property>

<property>

<name>yarn.application.classpath</name>

<value>

$HADOOP_CONF_DIR,

$HADOOP_COMMON_HOME/share/hadoop/common/*,

$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,

$HADOOP_COMMON_HOME/share/hadoop/hdfs/*,

$HADOOP_COMMON_HOME/share/hadoop/hdfs/lib/*,

$HADOOP_COMMON_HOME/share/hadoop/mapreduce/*,

$HADOOP_COMMON_HOME/share/hadoop/mapreduce/lib/*,

$HADOOP_COMMON_HOME/share/hadoop/yarn/*,

$HADOOP_COMMON_HOME/share/hadoop/yarn/lib/*

</value>

</property>

<!-- nodeMananger资源限定 start -->

配置完分发文件

#配置yarn-site.xml中的内容

#分发配置到多个集群节点中

scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-site.xml /usr/local/hadoop/etc/hadoop/

#重启整个yarn集群

stop-yarn.sh

start-yarn.sh

3.hadoop集群整体启动

#启动

start-all.sh

#停止

stop-all.sh

至此hadoop集群已经搭建完成

4.4运行mapreduce样例

1.mapreduce配置

对mapred-site.xml新增配置

复制代码
<!--运行模式 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
    <description>运行模式</description>
</property>
<!--运行模式 -->
<!--资源限定 -->
<property>
    <name>yarn.app.mapreduce.am.resource.mb</name>
    <value>1024</value>
    <description>MR ApplicationMaster yarn申请的内存量</description>
</property>
<property>
    <name>yarn.app.mapreduce.am.command-opts</name>
    <value>-Xmx768m</value>
    <description>jvm使用内存</description>
</property>
<property>
    <name>mapreduce.map.memory.mb</name>
    <value>1024</value>
    <description>每个Map Task yarn申请内存</description>
</property>

<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>1024</value>
    <description>每个Reduce Task yarn申请内存</description>
</property>

<property>
    <name>yarn.app.mapreduce.am.resource.cpu-vcores</name>
    <value>1</value>
    <description>MR ApplicationMaster占用的虚拟CPU个数,此参数对应yarn.nodemanager.resource.cpu-vcores,建议最大为一个物理CPU的数量</description>
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx768m</value>
    <description>reduce jvm实际内存</description>
</property>

<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx768m</value>
    <description>map jvm实际内存</description>
</property>

<property>
    <name>mapreduce.map.cpu.vcores</name>
    <value>1</value>
    <description>每个map Task需要的虚拟cpu数</description>
</property>

<property>
    <name>mapreduce.reduce.cpu.vcores</name>
    <value>1</value>
    <description>每个Reduce Task需要的虚拟cpu数</description>
</property>
<property>
    <name>mapreduce.application.classpath</name>
  <value>/usr/local/hadoop/etc/hadoop,/usr/local/hadoop/share/hadoop/common/*,/usr/local/hadoop/share/hadoop/common/lib/*,/usr/local/hadoop/share/hadoop/hdfs/*,/usr/local/hadoop/share/hadoop/hdfs/lib/*,/usr/local/hadoop/share/hadoop/mapreduce/*,/usr/local/hadoop/share/hadoop/mapreduce/lib/*,/usr/local/hadoop/share/hadoop/yarn/*,/usr/local/hadoop/share/hadoop/yarn/lib/*,/usr/local/hadoop/lib/*,/usr/local/hbase/lib/*</value>
    <description>运行mr程序所使用的虚拟机运行时的classpath</description>
</property>
<!--资源限定 -->

分发配置

scp_all.sh /usr/local/hadoop/etc/hadoop/mapred-site.xml /usr/local/hadoop/etc/hadoop/

2.运行mapreduce样例

数据准备

echo "hello world" >> words.txt

echo "hello hdfs" >> words.txt

echo "hello hadoop" >> words.txt

echo "hello mapreduce" >> words.txt

echo "hdfs spark" >> words.txt

echo "hello hdfs" >> words.txt

echo "hello hadoop" >> words.txt

#上传文件到hdfs中

hadoop fs -put words.txt /

#查看文件

hadoop fs -ls /

运行mapreduce样例

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount /words.txt /wcresult

4.5资源调度器

调度器种类

  • 先进先出调度器(FIFO)
  • 容量调度器(默认)(Capacity Scheduler)
  • 公平调度器(Fair Scheduler)

1.FIFO调度器

FIFO调度器会把接收到的任务提交到队列,调度器会根据优先级和到达先后进行排序,依次给每一个应用分配资源,直到没有资源为止。这个调度器性能太差了,一般不用

优点:

简单,直接就可以用,不需要额外的配置

缺点:

  • 小应用可能被饿死。大应用进入队列后占用了大量的资源,小应用迟迟得不到资源就卡住了
  • 低优先级的任务可能被饿死。当队列内的资源没有剩余时,如果不断有优先级高的任务进入,低优先级的任务不断被往后挤,永远得不到资源

2.容量调度器

容量调度器就是通过划分多个队列,然后把任务调度到不同的队列执行的方式来确保小任务也能得到资源,每个队列仍是FIFO,根据划分的资源区大小,把小任务资源较小的队列,大任务提交到资源多的队列

但是这样也可能带来资源的浪费,所以可以配置弹性资源,capacity策略允许队列在空闲时将资源提供给其他队列使用,以此提高资源利用率

容量调度器的本质是通过划分队列隔离资源的方式确保任务的正常运行

容量调度器配置

配置capacity-scheduler.xml

<!--配置root队列下两个子队列 wei占比80 default占比20-->

<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>wei,default</value>
</property>

<property>
<name>yarn.scheduler.capacity.root.wei.capacity</name>
<value>80</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.capacity</name>
<value>20</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.wei.maximum-capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
<value>100</value>
</property>

分发配置

scp_all.sh /usr/local/hadoop/etc/hadoop/capacity-scheduler.xml /usr/local/hadoop/etc/hadoop/

#重启yarn

stop-yarn.sh

start-yarn.sh

配置前后对比

提交任务到default队列

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount -Dmapreduce.job.queuename=default /words.txt /wcresult1

配置队列中任务优先级

修改yarn-site.xml 开启优先级

复制代码
<property>
    <name>yarn.cluster.max-application-priority</name>
    <value>5</value>
</property>

分发文件并重启

scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-site.xml /usr/local/hadoop/etc/hadoop/

#重启yarn

stop-yarn.sh

start-yarn.sh

提交任务运行时,发现优先级越高的任务会越早分配资源。

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar pi -Dmapreduce.job.queuename=hainiu -Dmapreduce.job.priority=5 5 2000000

3.公平调度器

容量调度器是划分多个队列,单个队列采用FIFO策略,就是先执行优先级高的任务,如果优先级相同就先执行进入队列的任务,等到高优先级和先进入队列的任务执行完成后才会执行剩下的任务;与容量调度器不同,公平调度器是在单个队列中同时并行执行所有的任务,如果没有权重的话,资源会平均分配给每个任务,如果有权重的话,任务的资源分配情况按照权重来划分

公平调度器的配置

yarn-site.xml中增加如下配置

复制代码
<!-- scheduler begin -->
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
        <description>调度器实现类</description>
    </property>

    <property>
        <name>yarn.scheduler.fair.allocation.file</name>
        <value>fair-scheduler.xml</value>
        <description>自定义XML配置文件所在位置,该文件主要用于描述各个队列的属性,比如资源量、权重等</description>
    </property>

    <property>
        <name>yarn.scheduler.fair.preemption</name>
        <value>true</value>
        <description>是否支持抢占</description>
    </property>

    <property>
        <name>yarn.scheduler.fair.sizebasedweight</name>
        <value>false</value>
        <description>在一个队列内部分配资源时,默认情况下,采用公平轮询的方法将资源分配各各个应用程序,而该参数则提供了外一种资源分配方式:按照应用程序资源需求数目分配资源,即需求资源数量越多,分配的资源越多。默认情况下,该参数值为false</description>
    </property>

    <property>
        <name>yarn.scheduler.increment-allocation-mb</name>
        <value>256</value>
        <description>内存规整化单位,默认是1024,这意味着,如果一个Container请求资源是700mB,则将被调度器规整化为 (700mB / 256mb) *  256mb=768mb</description>
    </property>

    <property>
        <name>yarn.scheduler.assignmultiple</name>
        <value>true</value>
        <description>是否启动批量分配功能。当一个节点出现大量资源时,可以一次分配完成,也可以多次分配完成。默认情况下,参数值为false</description>
    </property>

    <property>
        <name>yarn.scheduler.fair.max.assign</name>
        <value>10</value>
        <description>如果开启批量分配功能,可指定一次分配的container数目。默认情况下,该参数值为-1,表示不限制</description>
    </property>

    <property>
        <name>yarn.scheduler.fair.allow-undeclared-pools</name>
        <value>false</value>
        <description>如果提交的队列名不存在,Scheduler会自动创建一个该队列,默认开启</description>
    </property>
    <!-- scheduler end -->

增加fair-scheduler.xml

复制代码
<?xml version="1.0"?>
<allocations>   
    <queue name="hainiu">
        <minResources>512 mb,1 vcores</minResources>
        <maxResources>6140 mb,3 vcores</maxResources>
        <maxRunningApps>50</maxRunningApps>
        <weight>2.0</weight>
        <schedulingPolicy>fair</schedulingPolicy>
        <!--可向队列中提交应用程序的用户或用户组列表,默认情况下为"*",表示任何用户均可以向该队列提交应用程序。-->
        <aclSubmitApps>hainiu</aclSubmitApps>
        <!--一个队列的管理员可管理该队列中的资源和应用程序,比如可杀死任意应用程序-->
        <aclAdministerApps>hainiu</aclAdministerApps>
    </queue>

    <queue name="default">
        <weight>1.0</weight>
        <aclSubmitApps>*</aclSubmitApps>
        <aclAdministerApps>*</aclAdministerApps>
    </queue>

    <!-- user节点只有一个子节点 -->
    <user name="root">
            <aclSubmitApps>*</aclSubmitApps>
            <aclAdministerApps>*</aclAdministerApps>
    <maxRunningApps>10</maxRunningApps>
    </user>
    <!-- 用户的maxRunningJobs属性的默认值 -->
    <userMaxAppsDefault>50</userMaxAppsDefault>
    <!-- 队列的schedulingMode属性的默认值 默认是fair-->
    <defaultQueueSchedulingPolicy>fair</defaultQueueSchedulingPolicy>
    <!--  如果一个队列在该段时间内使用的资源量低于fair共享资源量,则开始抢占其他队列的资源。-->
    <fairSharePreemptionTimeout>60</fairSharePreemptionTimeout>
    <!--  如果一个队列在该段时间内使用的资源量低于最小共享资源量,则开始抢占其他队列的资源。 -->
    <defaultMinSharePreemptionTimeout>60</defaultMinSharePreemptionTimeout>

    <queuePlacementPolicy>
        <rule name="specified" create="false" />
        <rule name="user" create="false" />
        <rule name="reject" />
    </queuePlacementPolicy>
</allocations>

分发文件重启yarn

#关闭yarn

stop-yarn.sh

#分发文件

scp_all.sh /usr/local/hadoop/etc/hadoop/fair-scheduler.xml /usr/local/hadoop/etc/hadoop/ scp_all.sh /usr/local/hadoop/etc/hadoop/yarn-site.xml /usr/local/hadoop/etc/hadoop/

#重启yarn

start-yarn.sh

提交任务到yarn

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount /words.txt /wcresult2

将任务提交到指定队列

hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.4.jar wordcount -Dmapreduce.job.queuename=wei /words.txt /wcresult3

4.6yarn常用命令

#集群列表查看

yarn node -list -all

#队列情况

yarn queue -status <queue>

#列出所有Application

yarn application -list

#参数过滤 -appStates [ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED]

#杀死进程

yarn application -kill

#查看日志

yarn logs -applicationId

#查看container列表

yarn container -list <Applicationname AttemptId>

本文参考:http://hainiubl.com/topics/75964

相关推荐
Aurora_eye27 分钟前
记录之Ubuntu22.4虚拟机及hadoop为分布式安装
大数据·hadoop·分布式
随心............16 小时前
在开发过程中遇到问题如何解决,以及两个经典问题
hive·hadoop·spark
yumgpkpm1 天前
CMP (类ClouderaCDP7.3(404次编译) )华为鲲鹏Aarch64(ARM)信创环境 查询2100w行 hive 查询策略
数据库·数据仓库·hive·hadoop·flink·mapreduce·big data
K_i1342 天前
Hadoop 集群自动化运维实战
运维·hadoop·自动化
Q26433650232 天前
【有源码】基于Python与Spark的火锅店数据可视化分析系统-基于机器学习的火锅店综合竞争力评估与可视化分析-基于用户画像聚类的火锅店市场细分与可视化研究
大数据·hadoop·python·机器学习·数据分析·spark·毕业设计
顧棟3 天前
【Yarn实战】Yarn 2.9.1滚动升级到3.4.1调研与实践验证
hadoop·yarn
D明明就是我3 天前
Hive 拉链表
数据仓库·hive·hadoop
嘉禾望岗5033 天前
hive join优化和数据倾斜处理
数据仓库·hive·hadoop
yumgpkpm3 天前
华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)
大数据·hive·hadoop·elasticsearch·zookeeper·big data·cloudera
忧郁火龙果3 天前
六、Hive的基本使用
数据仓库·hive·hadoop