hadoop资源隔离

资源隔离目前有2种,静态隔离和动态隔离。

所谓静态隔离是以服务隔离,是通过cgroups(LINUX control groups) 功能来支持的。比如HADOOP服务包含HDFS, HBASE, YARN等等,那么我们固定的设置比例,HDFS:20%, HBASE:40%, YARN:40%, 系统会帮我们根据整个集群的CPU,内存,IO数量来分割资源,先提一下,IO是无法分割的,所以只能说当遇到IO问题时根据比例由谁先拿到资源,CPU和内存是预先分配好的。

上面这种按照比例固定分割就是静态分割了,仔细想想,这种做法弊端太多,假设我按照一定的比例预先分割好了,但是如果我晚上主要跑mapreduce, 白天主要是HBASE工作,这种情况怎么办? 静态分割无法很好的支持,缺陷太大,对这种隔离模型我表示无感。


动态隔离只要是针对 YARN以及impala, 所谓动态只是相对静态来说,其实也不是动态。 先说YARN, 在HADOOP整个环境,主要服务有哪些? mapreduce(这里再提一下,mapreduce是应用,YARN是框架,搞清楚这个概念),HBASE, HIVE,SPARK,HDFS,IMPALA, 实际上主要的大概这些,很多人估计会表示不赞同,oozie, ES, storm , kylin,flink等等这些和YARN离的太远了,不依赖YARN的资源服务,而且这些服务都是单独部署就OK,关联性不大。 所以主要和YARN有关也就是HIVE, SPARK,Mapreduce。这几个服务也正式目前用的最多的(HBASE用的也很多,但是和YARN没啥关系)。

根据上面的描述,大家应该能理解为什么所谓的动态隔离主要是针对YARN。好了,既然YARN占的比重这么多,那么如果能很好的对YARN进行资源隔离,那也是不错的。如果我有3个部分都需要使用HADOOP,那么我希望能根据不同部门设置资源的优先级别,实际上也是根据比例来设置,建立3个queue name, 开发部们30%,数据分析部分50%,运营部门20%。 

设置了比例之后,再提交JOB的时候设置mapreduce.queue.name,那么JOB就会进入指定的队列里面。 非常可惜的是,如果你指定了一个不存在的队列,JOB仍然可以执行,这个是目前无解的,默认提交JOB到YARN的时候,规则是root.users.username , 队列不存在,会自动以这种格式生成队列名称。 队列设置好之后,再通过ACL来控制谁能提交或者KIll job。


从上面2种资源隔离来看,没有哪一种做的很好,都是半桶水,如果非要选一种,我会选取后者,隔离YARN资源, 第一种固定分割服务的方式实在支持不了现在的业务。


HBASE的资源问题在这里也提一下,HBASE通过set quota资源限制以及多队列服务来控制。

看到set quota大家一定不会陌生,LINUX系统,数据库都有这种控制功能,HBASE的set quota 就是控制某个用户,某个操作速度及数量。 比如我想控制user1再get 某个表的时候最多1M/S,那么就可以使用set quota。 

所谓多队列服务就是默认只有一个队列,所有的IPC请求都将进入这个队列。 默认算法是FIFO,这是有问题的,如果我有一个超大的SCAN用来了所有资源,那么所有的其他请求都将等待这个SCAN结束, 因为没有资源啊。 因此HBASE新增了Deadline算法,这个算法具体怎么样的大家去GOOGLE参考资料,这里不做描述。 

另外再设置 get, scan, put 等queue的比例数,例如,我设置的HBASE IPC 总数为100个, 设置好各个queue的比例数,以后你get就只会进入get队列,scan就会进入scan队列,大家互不相干,至于IPC的个数根据设置的比例数,总数100,如果get占10%,那么队列就有10个IPC, 这个和上面YARN的隔离类似。


HBASE还有一个功能,那就是region server group, 就是对HASE集群的server进行分组,这个功能是依赖  coprocessor的. 假设我分了2个组,A表在一个组,B表在另外一个组,访问的时候只会使用固定组的资源,  group和一群server进行绑定,建立表的时候指定GROUP即可。 大家觉得这种方法进行资源隔离怎么样? 


HADOOP天生设计就没有考虑用户权限以及隔离问题,后续打了N多patch去实现这些功能,一个功能做的比一个烂,没有一个方案是让我们觉得完美的,一群写出HADOOP的超高们,设计出这些能用又不能使用的功能,真是脑子进狗屎了,太烂了。 看看上面这几个功能,有哪一个能用? 


FYI:我经常玩一个游戏,帝国时代,以前水平一般,非常敬佩那些所谓的超高,后来我水平慢慢长进,和他们一起对战,发现他们就是个挫货。 我说这句话的目的是想说,所谓的超高,实际没有你想的那么超,他们也就是个人而已。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tom_fans

谢谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值