华为云用户手册

  • 操作场景 此功能在 MRS 3.x之前版本适用于Hive,Spark。在MRS 3.x及后续版本适用于Hive,Spark2x。 开启此功能后,仅有Hive管理员可以创建库和在default库中建表,其他用户需通过Hive管理员授权才可使用库。 开启本功能之后,会限制普通用户新建库和在default库新建表。请充分考虑实际应用场景,再决定是否作出调整。 因为对执行用户做了限制,使用非管理员用户执行建库、表脚本迁移、重建元数据操作时需要特别注意,防止错误。
  • 功能介绍 AddDoublesUDF主要用来对两个及多个浮点数进行相加,在该样例中可以掌握如何编写和使用UDF。 一个普通UDF必须继承自“org.apache.hadoop.hive.ql.exec.UDF”。 一个普通UDF必须至少实现一个evaluate()方法,evaluate函数支持重载。 开发自定义函数需要在工程中添加“hive-exec-*.jar”依赖包,可从Hive服务的安装目录下获取,例如在“${BIGDATA_HOME}/components/ FusionInsight _HD_*/Hive/disaster/plugin/lib/”目录下获取。
  • 如何使用 在客户端安装节点,把以上程序打包成AddDoublesUDF.jar,并上传到HDFS指定目录下(例如“/user/hive_examples_jars”)。 创建函数的用户与使用函数的用户都需要具有该文件的可读权限。 示例语句: hdfs dfs -put ./hive_examples_jars /user/hive_examples_jars hdfs dfs -chmod 777 /user/hive_examples_jars 判断集群的认证模式。 安全模式,需要使用一个具有Hive管理权限的用户登录beeline客户端,执行如下命令: kinit Hive业务用户 beeline set role admin; 普通模式,执行如下命令: beeline -n Hive业务用户 在Hive Server中定义该函数,以下语句用于创建永久函数: CREATE FUNCTION addDoubles AS 'com.xxx.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar'; 其中addDoubles是该函数的别名,用于SELECT查询中使用;xxx通常为程序开发的组织名称。 以下语句用于创建临时函数: CREATE TEMPORARY FUNCTION addDoubles AS 'com.xxx.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar'; addDoubles是该函数的别名,用于SELECT查询中使用。 关键字TEMPORARY说明该函数只在当前这个Hive Server的会话过程中定义使用。 在Hive Server中使用该函数,执行SQL语句: SELECT addDoubles(1,2,3); 若重新连接客户端再使用函数出现[Error 10011]的错误,可执行reload function;命令后再使用该函数。 在Hive Server中删除该函数,执行SQL语句: DROP FUNCTION addDoubles;
  • Grouping 语法简介: 当Group by语句带with rollup/cube选项时,Grouping才有意义。 CUBE生成的结果集显示了所选列中值的所有组合的聚合。 ROLLUP生成的结果集显示了所选列中值的某一层次结构的聚合。 Grouping:当用CUBE或ROLLUP运算符添加行时,附加的列输出值为1;当所添加的行不是由CUBE或ROLLUP产生时,附加列值为0。 例如,Hive中有一张表“table_test”,表结构如下所示: +----------------+-------------------+--+| table_test.id | table_test.value |+----------------+-------------------+--+| 1 | 10 || 1 | 15 || 2 | 20 || 2 | 5 || 2 | 13 |+----------------+-------------------+--+ 执行如下语句: select id,grouping(id),sum(value) from table_test group by id with rollup; 得到如下结果: +-------+-----------------+------+--+| id | groupingresult | sum |+-------+-----------------+------+--+| 1 | 0 | 25 || NULL | 1 | 63 || 2 | 0 | 38 |+-------+-----------------+------+--+
  • EXCEPT、INTERSECT 语法简介 EXCEPT返回两个结果集的差(即从左查询中返回右查询没有找到的所有非重复值)。 INTERSECT返回两个结果集的交集(即两个查询都返回的所有非重复值)。 例如,Hive中有两张表“test_table1”、“test_table2”。 “test_table1”表结构如下所示: +-----------------+--+| test_table1.id |+-----------------+--+| 1 || 2 || 3 || 4 |+-----------------+--+ “test_table2”表结构如下所示: +-----------------+--+| test_table2.id |+-----------------+--+| 2 || 3 || 4 || 5 |+-----------------+--+ 执行如下的EXCEPT语句: select id from test_table1 except select id from test_table2; 显示如下结果: +--------------+--+| _alias_0.id |+--------------+--+| 1 |+--------------+--+ 执行INTERSECT语句: select id from test_table1 intersect select id from test_table2; 显示如下结果: +--------------+--+| _alias_0.id |+--------------+--+| 2 || 3 || 4 |+--------------+--+
  • 使用Hive客户端(MRS 3.x之前版本) 安装客户端,具体请参考安装客户端章节。 以客户端安装用户,登录安装客户端的节点。 执行以下命令,切换到客户端安装目录。 cd /opt/hadoopclient 执行以下命令配置环境变量。 source bigdata_env 根据集群认证模式,完成Hive客户端登录。 安全模式,则执行以下命令,完成用户认证并登录Hive客户端。 kinit 组件业务用户 beeline 普通模式,则执行以下命令,登录Hive客户端,如果不指定组件业务用户,则会以当前操作系统用户登录。 beeline -n 组件业务用户 进行beeline连接后,可以编写并提交HQL语句执行相关任务。如需执行Catalog客户端命令,需要先执行!q命令退出beeline环境。 使用以下命令,执行HCatalog的客户端命令。 hcat -e "cmd" 其中"cmd"必须为Hive DDL语句,如hcat -e "show tables"。 若要使用HCatalog客户端,必须从“组件管理”页面单击“下载客户端”,下载全部服务的客户端。Beeline客户端不受此限制。 由于权限模型不兼容,使用HCatalog客户端创建的表,在HiveServer客户端中不能访问,但可以使用WebHCat客户端访问。 在普通模式下使用HCatalog客户端,系统将以当前登录操作系统用户来执行DDL命令。 退出beeline客户端时请使用!q命令,不要使用“Ctrl + c”。否则会导致连接生成的临时文件无法删除,长期会累积产生大量的垃圾文件。 在使用beeline客户端时,如果需要在一行中输入多条语句,语句之间以“;”分隔,需要将“entireLineAsCommand”的值设置为“false”。 设置方法:如果未启动beeline,则执行beeline --entireLineAsCommand=false命令;如果已启动beeline,则在beeline中执行!set entireLineAsCommand false命令。 设置完成后,如果语句中含有不是表示语句结束的“;”,需要进行转义,例如select concat_ws('\;', collect_set(col1)) from tbl。
  • 操作场景 由于底层存储系统的原因,Hive并不能支持对单条表数据进行删除操作,但在Hive on HBase功能中,MRS Hive提供了对HBase表的单条数据的删除功能,通过特定的语法,Hive可以将自己的HBase表中符合条件的一条或者多条数据清除。 表1 删除Hive on HBase表中的单行记录所需权限 集群认证模式 用户所需权限 安全模式 “SELECT”、“INSERT”和“DELETE” 普通模式 无
  • 操作场景 Hive支持对表的某一列或者多列进行加密;在创建Hive表时,可以指定要加密的列和加密算法。当使用insert语句向表中插入数据时,即可实现将对应列加密。列加密只支持存储在HDFS上的TextFile和SequenceFile文件格式的表。Hive列加密不支持视图以及Hive over HBase场景。 Hive列加密机制目前支持的加密算法有两种,在建表时指定: AES(对应加密类名称为:org.apache.hadoop.hive.serde2.AESRewriter) SMS 4(对应加密类名称为:org.apache.hadoop.hive.serde2.SMS4Rewriter) 将原始数据从普通Hive表导入到Hive列加密表后,在不影响其他业务情况下,建议删除普通Hive表上原始数据,因为保留一张未加密的表存在安全风险。
  • 操作场景 Hive业务还可能需要关联使用其他组件,例如HQL语句触发MapReduce任务需要设置Yarn权限,或者Hive over HBase的场景需要HBase权限。以下介绍Hive关联Yarn和Hive over HBase两个场景下的操作。 安全模式下Yarn和HBase的权限管理默认是开启的,因此在安全模式下默认需要配置Yarn和HBase权限。 在普通模式下,Yarn和HBase的权限管理默认是关闭的,即任何用户都有权限,因此普通模式下默认不需要配置Yarn和HBase权限。如果用户修改了YARN或者HBase的配置来开启权限管理,则修改后也需要配置Yarn和HBase权限。 MRS 3.x及后续版本支持Ranger,如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略。
  • 操作场景 HDFS Colocation(同分布)是HDFS提供的数据分布控制功能,利用HDFS Colocation接口,可以将存在关联关系或者可能进行关联操作的数据存放在相同的存储节点上。Hive支持HDFS的Colocation功能,即在创建Hive表时,设置表文件分布的locator信息,当使用insert语句向该表中插入数据时会将该表的数据文件存放在相同的存储节点上(不支持其他数据导入方式),从而使后续的多表关联的数据计算更加方便和高效。表格式只支持TextFile和RCFile。 本章节适用于MRS 3.x及后续版本。
  • 操作场景 使用Hive表或者数据库时,如果用户访问别人创建的表或数据库,需要授予对应的权限。为了实现更严格权限控制,Hive也支持列级别的权限控制。如果要访问别人创建的表上某些列,需要授予列权限。以下介绍使用Manager角色管理功能在表授权、列授权和数据库授权三个场景下的操作。 安全模式支持配置Hive表、列或数据库的权限,普通模式不支持配置Hive表、列或数据库的权限。 MRS 3.x及后续版本支持Ranger,如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略。
  • 前提条件 获取一个拥有管理员权限的用户,例如“admin”。 请参考创建Hive角色,在Manager界面创建一个角色,例如“hrole”,不需要设置Hive权限,设置提交Hql命令到Yarn执行的权限。 在Manager界面创建两个使用Hive的“人机”用户并加入“hive”组,例如“huser1”和“huser2”。“huser2”需绑定“hrole”。使用“huser1”创建一个数据库“hdb”,并在此数据库中创建表“htable”。
  • 相关概念 表1 使用Hive表、列或数据库场景权限一览 操作场景 用户需要的权限 DESCRIBE TABLE 查询(Select) SHOW PARTITIONS 查询(Select) ANALYZE TABLE 查询(Select)、插入(Insert) SHOW COLUMNS 查询(Select) SHOW TABLE STATUS 查询(Select) SHOW TABLE PROPERTIES 查询(Select) SELECT 查询(Select) EXPLAIN 查询(Select) CREATE VIEW 查询(Select)、Select授权(Grant Of Select)、建表(Create) SHOW CREATE TABLE 查询(Select)、Select授权(Grant Of Select) CREATE TABLE 建表(Create) ALTER TABLE ADD PARTITION 插入(Insert) INSERT 插入(Insert) INSERT OVERWRITE 插入(Insert)、删除(Delete) LOAD 插入(Insert)、删除(Delete) ALTER TABLE DROP PARTITION 删除(Delete) CREATE FUNCTION Hive管理员权限(Hive Admin Privilege) DROP FUNCTION Hive管理员权限(Hive Admin Privilege) ALTER DATABASE Hive管理员权限(Hive Admin Privilege)
  • 操作场景 该任务指导MRS集群管理员在Manager创建并设置Hive的角色。Hive角色可设置Hive管理员权限以及Hive数据表的数据操作权限。 用户使用Hive并创建数据库需要加入hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。 安全模式支持创建Hive角色,普通模式不支持创建Hive角色。 MRS 3.x及后续版本支持Ranger,如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略。
  • 操作步骤 若您需要对参数配置进行调整,具体操作请参考修改集群服务配置参数。 可用内存 除了分配给操作系统、其他服务的内存外,剩余的资源应尽量分配给YARN。通过如下配置参数进行调整。 例如,如果一个container默认使用512M,则内存使用的计算公式为:512M*container数。 默认情况下,Map或Reduce container会使用1个虚拟CPU内核和1024MB内存,ApplicationMaster使用1536MB内存。 参数 描述 默认值 yarn.nodemanager.resource.memory-mb 设置可分配给容器的物理内存数量。单位:MB,取值范围大于0。 建议配置成节点物理内存总量的75%~90%。若该节点有其他业务的常驻进程,请降低此参数值给该进程预留足够运行资源。 MRS 3.x及之后:16384 MRS 3.x之前:8192 CPU虚拟核数 建议将此配置设定在逻辑核数的1.5~2倍之间。如果上层计算应用对CPU的计算能力要求不高,可以配置为2倍的逻辑CPU。 参数 描述 默认值 yarn.nodemanager.resource.cpu-vcores 表示该节点上YARN可使用的虚拟CPU个数,默认是8。 目前推荐将该值设值为逻辑CPU核数的1.5~2倍之间。 8 物理CPU使用百分比 建议预留适量的CPU给操作系统和其他进程(数据库、HBase等)外,剩余的CPU核都分配给YARN。可以通过如下配置参数进行调整。 参数 描述 默认值 yarn.nodemanager.resource.percentage-physical-cpu-limit 表示该节点上YARN可使用的物理CPU百分比。默认是90,即不进行CPU控制,YARN可以使用节点全部CPU。该参数只支持查看,可通过调整YARN的RES_CPUSET_PERCENTAGE参数来修改本参数值。注意,目前推荐将该值设为可供YARN集群使用的CPU百分数。 例如:当前节点除了YARN服务外的其他服务(如HBase、HDFS、Hive等)及系统进程使用CPU为20%左右,则可以供YARN调度的CPU为1-20%=80%,即配置此参数为80。 90 本地磁盘 由于本地磁盘会提供给MapReduce写job执行的中间结果,数据量大。因此配置的原则是磁盘尽量多,且磁盘空间尽量大,单个达到百GB以上规模更好。简单的做法是配置和data node相同的磁盘,只在最下一级目录上不同即可。 多个磁盘之间使用逗号隔开。 参数 描述 默认值 yarn.nodemanager.log-dirs 日志存放地址(可配置多个目录)。 容器日志的存储位置。默认值为%{@auto.detect.datapart.nm.logs}。如果有数据分区,基于该数据分区生成一个类似/srv/BigData/hadoop/data1/nm/containerlogs,/srv/BigData/hadoop/data2/nm/containerlogs的路径清单。如果没有数据分区,生成默认路径/srv/BigData/yarn/data1/nm/containerlogs。除了使用表达式以外,还可以输入完整的路径清单,比如/srv/BigData/yarn/data1/nm/containerlogs或/srv/BigData/yarn/data1/nm/containerlogs,/srv/BigData/yarn/data2/nm/containerlogs。这样数据就会存储在所有设置的目录中,一般会是在不同的设备中。为保证磁盘IO负载均衡,需要提供几个路径且每个路径都对应一个单独的磁盘。应用程序的本地化后的日志目录存在于相对路径/application_%{appid}中。单独容器的日志目录,即container_{$contid},是该路径下的子目录。每个容器目录都含容器生成的stderr、stdin及syslog文件。要新增目录,比如新增/srv/BigData/yarn/data2/nm/containerlogs目录,应首先删除/srv/BigData/yarn/data2/nm/containerlogs下的文件。之后,为/srv/BigData/yarn/data2/nm/containerlogs赋予跟/srv/BigData/yarn/data1/nm/containerlogs一样的读写权限,再将/srv/BigData/yarn/data1/nm/containerlogs修改为/srv/BigData/yarn/data1/nm/containerlogs,/srv/BigData/yarn/data2/nm/containerlogs。可以新增目录,但不要修改或删除现有目录。否则,NodeManager的数据将丢失,且服务将不可用。 【默认值】%{@auto.detect.datapart.nm.logs} 【注意】请谨慎修改该项。如果配置不当,将造成服务不可用。当角色级别的该配置项修改后,所有实例级别的该配置项都将被修改。如果实例级别的配置项修改后,其他实例的该配置项的值保持不变。 %{@auto.detect.datapart.nm.logs} yarn.nodemanager.local-dirs 本地化后的文件的存储位置。默认值为%{@auto.detect.datapart.nm.localdir}。如果有数据分区,基于该数据分区生成一个类似/srv/BigData/hadoop/data1/nm/localdir,/srv/BigData/hadoop/data2/nm/localdir的路径清单。如果没有数据分区,生成默认路径/srv/BigData/yarn/data1/nm/localdir。除了使用表达式以外,还可以输入完整的路径清单,比如/srv/BigData/yarn/data1/nm/localdir或/srv/BigData/yarn/data1/nm/localdir,/srv/BigData/yarn/data2/nm/localdir。这样数据就会存储在所有设置的目录中,一般会是在不同的设备中。为保证磁盘IO负载均衡,需要提供几个路径且每个路径都对应一个单独的磁盘。应用程序的本地化后的文件目录存在于相对路径/usercache/%{user}/appcache/application_%{appid}中。单独容器的工作目录,即container_%{contid},是该路径下的子目录。要新增目录,比如新增/srv/BigData/yarn/data2/nm/localdir目录,应首先删除/srv/BigData/yarn/data2/nm/localdir下的文件。之后,为/srv/BigData/hadoop/data2/nm/localdir赋予跟/srv/BigData/hadoop/data1/nm/localdir一样的读写权限,再将/srv/BigData/yarn/data1/nm/localdir修改为/srv/BigData/yarn/data1/nm/localdir,/srv/BigData/yarn/data2/nm/localdir。可以新增目录,但不要修改或删除现有目录。否则,NodeManager的数据将丢失,且服务将不可用。 【默认值】%{@auto.detect.datapart.nm.localdir} 【注意】请谨慎修改该项。如果配置不当,将造成服务不可用。当角色级别的该配置项修改后,所有实例级别的该配置项都将被修改。如果实例级别的配置项修改后,其他实例的该配置项的值保持不变。 %{@auto.detect.datapart.nm.localdir}
  • 日志级别 Yarn中提供了如表2所示的日志级别。其中日志级别优先级从高到低分别是OFF、FATAL、ERROR、WARN、INFO、DEBUG。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 FATAL FATAL表示当前事件处理存在严重错误信息。 ERROR ERROR表示当前事件处理存在错误信息。 WARN WARN表示当前事件处理存在异常告警信息。 INFO INFO表示记录系统及各事件正常运行状态信息 DEBUG DEBUG表示记录系统及系统的调试信息 如果您需要修改日志级别,请执行如下操作: 参考修改集群服务配置参数,进入Yarn服务“全部配置”页面。 在左边菜单栏中选择所需修改的角色所对应的日志菜单。 选择所需修改的日志级别。 单击“保存配置”,在弹出窗口中单击“确定”使配置生效。 配置完成后立即生效,不需要重启服务。
  • 操作步骤 参数入口: 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。 表1 Preemption配置 参数 描述 默认值 yarn.resourcemanager.scheduler.monitor.enable 根据“yarn.resourcemanager.scheduler.monitor.policies”中的策略,启用新的scheduler监控。设置为“true”表示启用监控,并根据scheduler的信息,启动抢占的功能。设置为“false”表示不启用。 false yarn.resourcemanager.scheduler.monitor.policies 设置与scheduler配合的“SchedulingEditPolicy”的类的清单。 org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy yarn.resourcemanager.monitor.capacity.preemption.observe_only 设置为“true”,则执行策略,但是不对集群资源进程抢占操作。 设置为“false”,则执行策略,且根据策略启用集群资源抢占的功能。 false yarn.resourcemanager.monitor.capacity.preemption.monitoring_interval 根据策略监控的时间间隔,单位为毫秒。如果将该参数设置为更大的值,容量检测将不那么频繁地运行。 3000 yarn.resourcemanager.monitor.capacity.preemption.max_wait_before_kill 应用发送抢占需求到停止container(释放资源)的时间间隔,单位为毫秒。取值范围大于等于0。 默认情况下,若ApplicationMaster15秒内没有终止container,ResourceManager等待15秒后会强制终止。 15000 yarn.resourcemanager.monitor.capacity.preemption.total_preemption_per_round 在一个周期内能够抢占资源的最大的比例。可使用这个值来限制从集群回收容器的速度。计算出了期望的总抢占值之后,策略会伸缩回这个限制。 0.1 yarn.resourcemanager.monitor.capacity.preemption.max_ignored_over_capacity 集群中资源总量乘以此配置项的值加上某个队列(例如队列A)原有的资源量为资源抢占盲区。当队列A中的任务实际使用的资源超过该抢占盲区时,超过部分的资源将会被抢占。取值范围:0~1。 说明: 设置的值越小越有利于资源抢占。 0 yarn.resourcemanager.monitor.capacity.preemption.natural_termination_factor 设置抢占目标,Container只会抢占所配置比例的资源。 示例,如果设置为0.5,则在5*“yarn.resourcemanager.monitor.capacity.preemption.max_wait_before_kill”的时间内,任务会回收所抢占资源的近95%。即接连抢占5次,每次抢占待抢占资源的0.5,呈几何收敛,每次的时间间隔为“yarn.resourcemanager.monitor.capacity.preemption.max_wait_before_kill”。取值范围:0~1。 1
  • 操作场景 集群的资源竞争场景如下: 提交两个低优先级的应用Job 1和Job 2。 正在运行中的Job 1和Job 2有部分task处于running状态,但由于集群或队列资源容量有限,仍有部分task未得到资源而处于pending状态。 提交一个较高优先级的应用Job 3,此时会出现如下资源分配情况:当Job 1和Job 2中running状态的task运行结束并释放资源后,Job 3中处于pending状态的task将优先得到这部分新释放的资源。 Job 3完成后,资源释放给Job 1、Job 2继续执行。 用户可以在YARN中配置任务的优先级。任务优先级是通过ResourceManager的调度器实现的。
  • 操作场景 抢占任务可精简队列中的job运行并提高资源利用率,由ResourceManager的capacity scheduler实现,其简易流程如下: 假设存在两个队列A和B。其中队列A的capacity为25%,队列B的capacity为75%。 初始状态下,任务1发送给队列A,此任务需要75%的集群资源。之后任务2发送到了队列B,此任务需要50%的集群资源。 任务1将会使用队列A提供的25%的集群资源,并从队列B获取的50%的集群资源。队列B保留25%的集群资源。 启用抢占任务特性,则任务1使用的资源将会被抢占。队列B会从队列A中获取25%的集群资源以满足任务2的执行。 当任务2完成后,集群中存在足够的资源时,任务1将重新开始执行。
  • 配置场景 YARN Restart特性包含两部分内容:ResourceManager Restart和NodeManager Restart。 当启用ResourceManager Restart时,升主后的ResourceManager就可以通过加载之前的主ResourceManager的状态信息,并通过接收所有NodeManager上container的状态信息,重构运行状态继续执行。这样应用程序通过定期执行检查点操作保存当前状态信息,就可以避免工作内容的丢失。 当启用NodeManager Restart时,NodeManager在本地保存当前节点上运行的container信息,重启NodeManager服务后通过恢复此前保存的状态信息,就不会丢失在此节点上运行的container进度。
  • 配置描述 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。 ResourceManager Restart特性配置如下。 表1 ResourceManager Restart参数配置 参数 描述 默认值 yarn.resourcemanager.recovery.enabled 设置是否让ResourceManager在启动后恢复状态。如果设置为true,那yarn.resourcemanager.store.class也必须设置。 true yarn.resourcemanager.store.class 指定用于保存应用程序和任务状态以及证书内容的state-store类。 MRS 3.x之前的版本集群:org.apache.hadoop.yarn.server.resourcemanager.recovery.ZK RMS tateStore MRS 3.x及后续版本集群: org.apache.hadoop.yarn.server.resourcemanager.recovery.AsyncZKRMStateStore yarn.resourcemanager.zk-state-store.parent-path ZKRMStateStore在ZooKeeper上的保存目录。 /rmstore yarn.resourcemanager.work-preserving-recovery.enabled 启用ResourceManager Work preserving功能。该配置仅用于YARN特性验证。 true yarn.resourcemanager.state-store.async.load 对已完成的application采用ResourceManager异步恢复方式。 MRS 3.x之前的版本集群:false MRS 3.x及后续版本集群:true yarn.resourcemanager.zk-state-store.num-fetch-threads 启用异步恢复功能,增加工作线程的数量可以加快恢复ZK中保存的任务信息的速度,取值范围大于0。 MRS 3.x之前的版本集群:1 MRS 3.x及后续版本集群:20 NodeManager Restart特性配置如下。 表2 NodeManager Restart参数配置 参数 描述 默认值 yarn.nodemanager.recovery.enabled 当Nodemanager重启时是否启用日志失败收集功能,是否恢复未完成的Application。 true yarn.nodemanager.recovery.dir NodeManager用于保存container状态的本地目录。适用于MRS 3.x及后续版本集群。 ${SRV_HOME}/tmp/yarn-nm-recovery yarn.nodemanager.recovery.supervised NodeManager是否在监控下运行。开启此特性后NodeManager在退出后不会清理containers,NodeManager会假设自己会立即重启和恢复containers。 true
  • 配置场景 在YARN中,ApplicationMaster(AM)与Container类似,都运行在NodeManager(NM)上(本文中忽略未管理的AM)。AM可能由于多种原因崩溃、退出或关闭。如果AM停止运行,ResourceManager(RM)会关闭ApplicationAttempt中管理的所有Container,其中包括当前在NM上运行的所有Container。RM会在另一计算节点上启动新的ApplicationAttempt。 对于不同类型的应用,希望以不同方式处理AM重启的事件。MapReduce类应用的目标是不丢失任务,但允许丢失当前运行的Container。但是对于长周期的YARN服务而言,用户可能并不希望由于AM的故障而导致整个服务停止运行。 YARN支持在新的ApplicationAttempt启动时,保留之前Container的状态,因此运行中的作业可以继续无故障的运行。 图1 AM作业保留
  • 配置描述 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。 根据表1,对如下参数进行设置。 表1 AM作业保留相关参数 参数 说明 默认值 yarn.app.mapreduce.am.work-preserve 是否开启AM作业保留特性。 false yarn.app.mapreduce.am.umbilical.max.retries AM作业保留特性中,运行的容器尝试恢复的最大次数。 5 yarn.app.mapreduce.am.umbilical.retry.interval AM作业保留特性中,运行的容器尝试恢复的时间间隔。单位:毫秒。 10000 yarn.resourcemanager.am.max-attempts ApplicationMaster的重试次数。增加重试次数可以避免当资源不足时造成AM启动失败。 适用于所有ApplicationMaster的全局设置。每个ApplicationMaster都可以使用API设置一个单独的最大尝试次数,但这个次数不能大于全局的最大次数。如果大于了,那ResourceManager将会覆写这个单独的最大尝试次数。取值范围大于等于1。 2
  • 配置描述 有关如何配置CPU隔离与安全的CGroups功能的详细信息,请参见Hadoop官网: http://hadoop.apache.org/docs/r3.1.1/hadoop-yarn/hadoop-yarn-site/NodeManagerCgroups.html 由于CGroups为Linux内核特性,是通过LinuxContainerExecutor进行开放。请参考官网资料对LinuxContainerExecutor进行安全配置。您可通过官网资料了解系统用户和用户组配置对应的文件系统权限。详情请参见: http://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/SecureMode.html#LinuxContainerExecutor 请勿修改对应文件系统中各路径所属的用户、用户组及对应的权限,否则可能导致本功能异常。 当参数“yarn.nodemanager.resource.percentage-physical-cpu-limit”配置过小,导致可使用的核不足1个时,例如4核节点,将此参数设置为20%,不足1个核,那么将会使用系统全部的核。Linux的一些版本不支持Quota模式,例如Cent OS。在这种情况下,可以使用CPUset模式。 配置cpuset模式,即YARN只能使用配置的CPU,需要在Manager界面添加以下配置。 表1 cpuset配置 参数 描述 默认值 yarn.nodemanager.linux-container-executor.cgroups.cpu-set-usage 设置为“true”时,应用以cpuset模式运行。 false 配置strictcpuset模式,即container只能使用配置的CPU,需要在Manager界面添加以下配置。 表2 CPU硬隔离参数配置 参数 描述 默认值 yarn.nodemanager.linux-container-executor.cgroups.cpu-set-usage 设置为“true”时,应用以cpuset模式运行。 false yarn.nodemanager.linux-container-executor.cgroups.cpuset.strict.enabled 设置为true时,container只能使用配置的CPU。 false 要从cpuset模式切换到Quota模式,必须遵循以下条件: 配置“yarn.nodemanager.linux-container-executor.cgroups.cpu-set-usage”=“false”。 删除“/sys/fs/cgroup/cpuset/hadoop-yarn/”路径下container文件夹(如果存在)。 删除“/sys/fs/cgroup/cpuset/hadoop-yarn/”路径下cpuset.cpus文件中设置的所有CPU。
  • 配置描述 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。 表1 参数说明 参数 描述 默认值 yarn.nodemanager.vmem-check-enabled 是否进行虚拟内存检测的开关。如果任务使用的内存量超出分配值,则直接将任务强制终止。 设置为true时,进行虚拟内存检测; 设置为false时,不进行虚拟内存检测。 MRS 3.x之前的版本集群:false MRS 3.x及后续版本集群:true yarn.nodemanager.pmem-check-enabled 是否进行物理内存检测的开关。如果任务使用的内存量超出分配值,则直接将任务强制终止。 设置为true时,进行物理内存检测; 设置为false时,不进行物理内存检测。 true
  • 配置描述 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入参数名称。 表1 配置自定义调度器的WebUI 参数 描述 默认值 hadoop.http.rmwebapp.scheduler.page.classes 在RM WebUI中为自定义调度器加载相应的web页面。仅当“yarn.resourcemanager.scheduler.class”配置为自定义调度器时此配置项生效。 - yarn.http.rmwebapp.external.classes 在RM的Web服务中加载用户自定义的web应用。 -
  • 配置描述 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入表1中参数名称。 表1 参数说明 参数 描述 默认值 yarn.resourcemanager.am.max-attempts ApplicationMaster重试次数,增加重试次数,可以防止资源不足导致的AM启动失败问题。适用于所有ApplicationMaster的全局设置。每个ApplicationMaster都可以使用API设置一个单独的最大尝试次数,但这个次数不能大于全局的最大次数。如果大于了,那ResourceManager将会覆写这个单独的最大尝试次数。以允许至少一次重试。取值范围大于等于1。 5
  • 配置描述 查看Yarn服务配置参数 参考修改集群服务配置参数进入Yarn服务参数“全部配置”界面,在搜索框中输入表1中参数名称。 表1 参数描述 参数 描述 默认值 yarn.acl.enable Yarn权限控制启用开关。 true yarn.webapp.filter-entity-list-by-user 严格视图启用开关,开启后,登录用户只能查看该用户有权限查看的内容。当要开启该功能时,同时需要设置参数“yarn.acl.enable”为true。 说明: 此参数适用于MRS 3.x及后续版本集群。 true 查看Mapreduce服务配置参数 参考修改集群服务配置参数进入Mapreduce服务参数“全部配置”界面,在搜索框中输入表2中参数名称。 表2 参数描述 参数 描述 默认值 mapreduce.cluster.acls.enabled MR JobHistoryServer权限控制启用开关。该参数为客户端参数,当JobHistoryServer服务端开启权限控制之后该参数生效。 true yarn.webapp.filter-entity-list-by-user MR JobHistoryServer严格视图启用开关,开启后,登录用户只能查看该用户有权限查看的内容。该参数为JobHistoryServer的服务端参数,表示JHS开启了权限控制,但是否要对某一个特定的Application进行控制,是由客户端参数:“mapreduce.cluster.acls.enabled”决定。 说明: 此参数适用于MRS 3.x及后续版本集群。 true 以上配置会影响restful API和shell命令结果,即以上配置开启后,restful API调用和shell命令运行所返回的内容只包含调用用户有权查看的信息。 当yarn.acl.enable或mapreduce.cluster.acls.enabled设置为false时,即关闭Yarn或Mapreduce的权限校验功能。此时任何用户都可以在Yarn或MapReduce上提交任务和查看任务信息,存在安全风险,请谨慎使用。
  • 在UI显示container日志 默认情况下,系统会将container日志收集到HDFS中。如果您不需要将container日志收集到HDFS中,可以配置参数见表3。具体配置操作请参考修改集群服务配置参数。 表3 参数说明 配置参数 说明 默认值 yarn.log-aggregation-enable 设置是否将container日志收集到HDFS中。 设置为true,表示日志会被收集到HDFS目录中。默认目录为“{yarn.nodemanager.remote-app-log-dir}/${user}/{thisParam}”,该路径可通过界面上的“yarn.nodemanager.remote-app-log-dir-suffix”参数进行配置。 设置为false,表示日志不会收集到HDFS中。 修改参数值后,需重启Yarn服务使其生效。 说明: 在修改值为false并生效后,生效前的日志无法在UI中获取。您可以在“yarn.nodemanager.remote-app-log-dir-suffix”参数指定的路径中获取到生效前的日志。 如果需要在UI上查看之前产生的日志,建议将此参数设置为true。 true
  • 在WebUI显示更多历史作业 默认情况下,Yarn WebUI界面支持任务列表分页功能,每个分页最多显示5000条历史作业,总共最多保留10000条历史作业。如果您需要在WebUI上查看更多的作业,可以配置参数如表4。具体配置操作请参考修改集群服务配置参数。 表4 参数说明 配置参数 说明 默认值 yarn.resourcemanager.max-completed-applications 设置在WebUI总共显示的历史作业数量。 10000 yarn.resourcemanager.webapp.pagination.enable 是否开启Yarn WebUI的任务列表后台分页功能。 true yarn.resourcemanager.webapp.pagination.threshold 开启Yarn WebUI的任务列表后台分页功能后,每个分页显示的最大作业数量。 5000 显示更多的历史作业,会影响性能,增加打开Yarn WebUI的时间,建议开启后台分页功能,并根据实际硬件性能修改“yarn.resourcemanager.max-completed-applications”参数。 修改参数值后,需重启Yarn服务使其生效。
共100000条