在linux上安装yarn

在linux上安装yarn,第1张

一、npm方式安装yarn,前提是先安装nodejs,并确定npm node命令全局可以用

二、安装yarn

三、建立软连接 将yarn命令软链接到全局

1,yarn top:  类似linux里的top命令,查看正在运行的程序资源使用情况

2, yarn queue -status  队列名 :查看指定queue使用情况

3,yarn application -list -appStates 【ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUNNING,FINISHED,FAILED,KILLED】

yarn application -list -appTypes [SUBMITTED, ACCEPTED, RUNNING] : 查看app状态

yarn application -movetoqueue application_name -queue 队列名 :移动app到对应的队列

yarn application -kill application_name : kill掉app

yarn application -status application_name :查看app状态

4,yarn applicationattempt -list application_name : 查看app尝试信息

5,yarn classpath --glob : 打印类路径

6,yarn container -list appattempt_name : 打印正在执行任务的容器信息

yarn container -status container_name : 打印当前容器信息

7,yarn jar [mainClass] args... : 提交任务到yarn

8,yarn logs -applicationId application_name: 查看app运行日志

9,yarn node -all -list : 查看所有节点信息

10,yarn daemonlog -getlevel n0:8088 rg.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl : 查看守护进程日志级别

11,yarn resourcemanager [-format-state-store] : RMStateStore的格式化. 如果过去的应用程序不再需要,则清理RMStateStore

12, Usage: yarn rmadmin

-refreshQueues 重载队列的ACL,状态和调度器特定的属性,ResourceManager将重载mapred-queues配置文件

-refreshNodes 动态刷新dfs.hosts和dfs.hosts.exclude配置,无需重启NameNode。

dfs.hosts:列出了允许连入NameNode的datanode清单(IP或者机器名)

dfs.hosts.exclude:列出了禁止连入NameNode的datanode清单(IP或者机器名)

重新读取hosts和exclude文件,更新允许连到Namenode的或那些需要退出或入编的Datanode的集合。

-refreshUserToGroupsMappings 刷新用户到组的映射。

-refreshSuperUserGroupsConfiguration 刷新用户组的配置

-refreshAdminAcls 刷新ResourceManager的ACL管理

-refreshServiceAclResourceManager 重载服务级别的授权文件。

-getGroups [username] 获取指定用户所属的组。

-transitionToActive [–forceactive] [–forcemanual] 尝试将目标服务转为 Active 状态。如果使用了–forceactive选项,不需要核对非Active节点。如果采用了自动故障转移,这个命令不能使用。虽然你可以重写–forcemanual选项,你需要谨慎。

-transitionToStandby [–forcemanual] 将服务转为 Standby 状态. 如果采用了自动故障转移,这个命令不能使用。虽然你可以重写–forcemanual选项,你需要谨慎。

-failover [–forceactive] 启动从serviceId1 到 serviceId2的故障转移。如果使用了-forceactive选项,即使服务没有准备,也会尝试故障转移到目标服务。如果采用了自动故障转移,这个命令不能使用。

-getServiceState 返回服务的状态。(注:ResourceManager不是HA的时候,时不能运行该命令的)

-checkHealth 请求服务器执行健康检查,如果检查失败,RMAdmin将用一个非零标示退出。(注:ResourceManager不是HA的时候,时不能运行该命令的)

-help [cmd]显示指定命令的帮助,如果没有指定,则显示命令的帮助。

==========================================

yarn application

1、-list          列出所有 application 信息

    示例:yarn  application -list

2、-appStates <States>          跟 -list 一起使用,用来筛选不同状态的 application,多个用","分隔;

                             所有状态:ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUNNING,FINISHED,FAILED,KILLED

    示例:yarn  application -list -appStates RUNNING

3、-appTypes <Types>            跟 -list 一起使用,用来筛选不同类型的 application,多个用","分隔;

                             如 MAPREDUCE

    示例:yarn  application -list -appTypes MAPREDUCE

4、-kill <Application ID>          杀死一个 application,需要指定一个 Application ID

    示例:yarn  application -kill application_name

5、-status <Application ID>        列出 某个application 的状态

    示例:yarn  application -status application_name

6、-movetoqueue <Application ID>   移动 application 到其他的 queue,不能单独使用

7、-queue <Queue Name>                与 movetoqueue 命令一起使用,指定移动到哪个 queue

     示例:yarn  application -movetoqueue application_name  -queue other

在MapReduce1.0中,我们都知道也存在和HDFS一样的单点故障问题,主要是JobTracker既负责资源管理,又负责任务分配。

Yarn中可以添加多种计算框架,Hadoop,Spark,MapReduce,不同的计算框架在处理不同的任务时,资源利用率可能处于互补阶段,有利于提高整个集群的资源利用率。

同时Yarn提供了一种共享集群的模式,随着数据量的暴增,跨集群间的数据移动,需要花费更长的时间,且硬件成本会增大,共享集群模式可以让多种框架共享数据和硬件资源。

整个的调度流程为:

整个集群只有一个,负责集群资源的统一管理和调度

整个集群存在多个,负责单节点资源管理与使用

处理来自ResourceManager的命令

处理来自ApplicationMaster的命令

每一个应用有一个,负责应用程序的管理

数据切分,申请资源,任务监控,任务容错

对任务环境的抽象

ResourceManager存在单点故障,基于Zookeeper实现HA,通常任务失败后,RM将失败的任务告诉AM,RM负责任务的重启,AM来决定如何处理失败的任务。RMAppMaster会保存已经运行完成的Task,重启后无需重新运行。

Yarn采用的双层调度框架,RM将资源分配给AM,AM再将资源进一步分配给Task,资源不够时会为TASK预留,直到资源充足。在Hadoop1.0中我们分配资源通过slot实现,但是在Yarn中,直接分配资源。

资源调度器有:FIFO,Fair scheduler,Capacity scheduler

Yarn支持CPU和内存两种资源隔离,内存时决定生死的资源,CPU时影响快满的资源,内存隔离采用的是基于线程监控和基于Cgroup的方案。

Tez俗称DAG计算,多个计算作业之间存在依赖关系,并形成一个依赖关系的有向图。

Tez是运行在Yarn上的DAG,动态的生成计算的关系流。

如上图左所示的Top K问题,第一个Mapreduce实现wordcount的功能,第二个Mapreduce只用使用Reduce实现排序的问题,但是在Mapreduce中必须创建两个MapReduce任务,但是在Tez优化后,可以直接再第一个reduce后,不进行输出,直接输出到第二个reduce中,优化了Mapreduce.

上图中右为一个HiveQL实现的MapReduce,mapreduce为其创建了4个mapreduce任务,使用Tez可以只使用一个Mapreduce任务。

Tez on Yarn和,mapreduce on Yarn上的作业的流程基本一样。

产生一个Mapreduce任务就提交,影响任务的效率,Tez的优化策略是创建一个ApplicationMaster的缓存池,作业提交到AMppplserver中,预先启动若干ApplicationMaster形成AM缓冲池。

同时ApplicationMaster启动的时候也可以预先启动几个container,做为容器的缓冲池。

此外ApplicationMaster运行完成后,不会马上注销其下的container,而是将其预先分配给正要运行的任务。

Tez的好处就是避免产生较多的Mapreduce任务,产生不必要的网络和磁盘IO.

Strom是实时处理永不停止的任务,像流水一样不断的处理任务。

Strom非常类似与MapReduce1.0的架构,如上图所示。

但是其任务的调度的流程与Mapreduce的不一样。

主要的区别是Strom client可以直接 *** 作 Strom ApplicationMaster

spark克服了MapReduce在迭代式计算和交互式计算方面的不足。

spark中引入了RDD,可以并行计算的数据集合,能够被缓存到能存和硬盘中。

spark on Yarn 和MapReduce on Yarn 基本上类似

MR运行需要进行任务管理和资源管理调度,Yarn只是负责资源管理调度。Mapreduce只是运行在Yarn上的应用。

MapReduce2.0包括Yarn 和MRMapreduce,所以说Yarn是从MapReudce中独立出来的一个模块。但是现在Yarn已经成为多种计算框架的资源管理器。

MapReduce1.0是可以直接运行的linux系统上的,因为其自带了JobTracker服务和TaskTracker服务,它们可以自己进行资源管理与任务的分配。

MapReduce2.0中mapreduce是只有任务管理,所以其必须运行在Yarn上进行资源的调度。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7153216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存