视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HADOOP资源/存储隔离
2020-11-09 13:03:25 责编:小采
文档

1、资源隔离 1.1、现状 a、每一个队列设置'Min Resources'、'Max Resources',当该队列处于空闲状态,其他队列可从该队列争夺资源,突破该队列的最小资源数。而忙碌的队列可突破最大资源数。此时空闲队列,同时提交很多job,资源不够,抢占队列在一定的时间内

1、资源隔离

1.1、现状

a、每一个队列设置'Min Resources'、'Max Resources',当该队列处于空闲状态,其他队列可从该队列争夺资源,突破该队列的最小资源数。而忙碌的队列可突破最大资源数。此时空闲队列,同时提交很多job,资源不够,抢占队列在一定的时间内没有释放资源,会强制kill job,释放资源,还给空闲队列。

b、设置 mapreduce.job.queuename='资源多队列',可跨队列提交。

1.2、解决方案

1.2.1、禁止跨队列提交任务,即屏蔽'mapreduce.job.queuename'参数。

1.2.2、修改配置文件步骤

a、修改fair_scheduler.xml 文件在增加以下参数

dd001 --- dd001为user
dd001

描述: aclSubmitApps:可向队列中提交应用程序的Linux用户或用户组列表,默认情况下为“*”,表示任何用户均可以向该队列提交应用程序。

需要注意的是,该属性具有继承性,即子队列的列表会继承父队列的列表。配置该属性时,用户之间或用户组之间用“,”分割,用户和用户组之间用空格分割,比如“user1, user2 group1,group2”。

aclAdministerApps:该队列的管理员列表。一个队列的管理员可管理该队列中的资源和应用程序,比如可杀死任意应用程序。

2、禁止跨队列kill job

2.1、现状

a、yarn.admin.acl的value值为'*',表示所有的用户都可以kill其他用户的job。

2.2、解决方案

2.2.1、禁止跨队列kill job,保证除了超级用户,其他用户只能kill自己对应的队列job。
2.2.2、修改配置步骤

a、mapred_site.xml 文件增加以下参数

mapreduce.cluster.acls.enabled
true

b、yarn-site.xml 文件增加以下参数

yarn.acl.enable
true
yarn.admin.acl
hadp

c、core-site.xml文件注入如下参数 -----防止前端的appcluser UI 出现访问权限问题

hadoop.http.staticuser.user
hadp

3、存储隔离

3.1、现状

a、不同用户只能对自己用户下的目录有写的权限,但目录大小没有上限。可能导致有些用户无止境的写,而另一些用户,没有空间写。

3.2、解决方案

3.2.1、根据业务大小,对用户对应的目录大小进行配置。

a、未设置配额的文件属性

[dd001[@test_12123](/user/test_12123) ~]$hdfs dfs -count -q hdfs://ns1/user/dd001/warehouse/test_lh
none inf none inf 1 0 0 hdfs://ns1/user/dd_edw/warehouse/test_lh

文件数限额 可用文件数 空间限额 可用空间 目录数 文件数 总大小 文件/目录名

b、设置配额命令

[dd001[@test_12123](/user/test_12123) ~]$hdfs dfsadmin -setSpaceQuota 400 hdfs://ns1/user/dd001/warehouse/test_lh

c、设置配额后的属性值

[dd001[@test_12123](/user/test_12123) ~]$hdfs dfs -count -q hdfs://ns1/user/dd001/warehouse/test_lh
none inf 400 400 1 0 0 hdfs://ns1/user/dd_edw/warehouse/test_lh

d、测试目录超过配额后,出现什么结果

[dd001[@test_12123](/user/test_12123) ~]$hdfs dfs -cp hdfs://ns1/user/dd001/warehouse/000026_0.lzo hdfs://ns1/user/dd001/warehouse/test_lh
14/10/04 17:54:14 WARN hdfs.DFSClient: DataStreamer Exception
org.apache.hadoop.hdfs.protocol.DSQuotaExceededException: The DiskSpace quota of /user/dd_edw/warehouse/test_lh is exceeded: quota = 400 B = 400 B but diskspace consumed = 402653184 B = 384 MB
at org.apache.hadoop.hdfs.server.namenode.INodeDirectoryWithQuota.verifyQuota(INodeDirectoryWithQuota.java:191)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyQuota(FSDirectory.java:2054)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.updateCount(FSDirectory.java:17)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.updateCount(FSDirectory.java:17)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.addBlock(FSDirectory.java:357)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.saveAllocatedBlock(FSNamesystem.java:2847)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2508)
at org.apache.hadoop.hd
cp文件时候报错,文件比配额来的大。

e、配额删除命令

[dd001[@test_12123](/user/test_12123) ~]$hdfs dfsadmin -clrSpaceQuota hdfs://ns1/user/dd001/warehouse/test_lh

3.3、监控

增加配额只是一条命令的事情,存储不是目的,是手段。最终目的还是为了资源更充分的得到利用,防止超过配额,而不是任务报错。因此做好监控是首要任务。

3.3.1、资源分配

队列名 用户机器数 机器总配额(T) 集群机器分配总数 平均配额=(总配额/集群机器分配总数)(T) 硬盘预留值(T) 实际配额=(平均配额-硬盘预留值 )*机器数
dd001 20 21 20 20.9715 0.0488 418.454
a、平均配额=总配额/集群机器分配总数。

实际配额=(平均配额-硬盘预留值 )*机器数。

b、报警值=实际配额 * 0.8。

3.3.2、磁盘报警后处理

a、删除冗余数据。

b、加机器。

在加机器的时候,内存、cpu也需要相对的调整。

401 mb,19vcores
401 mb,19vcores

两个参数做相应的调整,而配额的调整命令如下:

a、hdfs dfsadmin –clrSpaceQuota hdfs://ns1/user/dd001/warehouse/test_lh ---删除配额

b、hdfs dfsadmin -setSpaceQuota ‘实际配额’ hdfs://ns1/user/dd001/warehouse/test_lh ---增加新的配额。

c、增加多少配额,即增加多少机器

c.1、目录存储量使用平均日增长=sum(日增长)/count(1)

c.2、机器数 =(磁盘可用存储天数 * 目录存储量使用平均日增长)/(平均配额-硬盘预留值)

c.3、实例:

假设'目录存储量使用平均日增长'=0.5T

机器数=(90*0.5)/ (18.4279-0.0488)= 3台

参考文档:

http://blog.csdn.net/caizhongda/article/details/7468363

http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-fair-scheduler/

http://www.yufan-liu.com/blog/?p=291

http://blog.itpub.net/122978/viewspace-1119883/

http://www.07net01.com/zhishi/520762.html

http://f.dataguru.cn/thread-103012-1-1.html

下载本文
显示全文
专题