Maison  >  Article  >  base de données  >  HADOOP资源/存储隔离

HADOOP资源/存储隔离

WBOY
WBOYoriginal
2016-06-07 16:39:261841parcourir

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:1789)
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.updateCount(FSDirectory.java:1764)
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

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:使用 redis 做限流Article suivant:Redis cluster, no longer vaporware.