手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Hadoop虚拟化扩展(HVE)之资源扩展技术

[日期:2013-11-06] 来源:Linux社区  作者:vbigdata [字体: ]

Hadoop计算节点垂直扩展

仅仅通过Hypervisor的资源调度并不能很好的达到资源共享的目的,目前Hadoop的资源配置是静态的:

1. 在MapReduce v1中,资源通过每个TaskTracker的槽位数配置项配置,槽位就是一定量CPU和内存资源抽象

2. 在MapReduce v2中,资源通过每个NodeManager的CPU和内存配置项直接配置

这些配置已经启动是无法动态调整的,这样在计算节点虚拟机资源不足的情况下,Hadoop仍然会分配过量的任务到这个节点,任务的执行速度会大幅度降低,从而影响整个集群的性能。

HVE的资源扩展技术通过动态化Hadoop资源配置来解决这个问题:

1. 在计算节点运行过程中,用户可以动态设置每个计算节点的槽位数(MRv1)或者资源数(MRv2)

2. 当计算节点资源不足时,用户或者VHM(Virtual Hadoop Manager)可以自动调整其资源配置,尽量避免资源竞争导致的性能下降

在MRv1中,调整槽位后,正在运行的任务如果超过了槽位数,任务也不会被杀死,而是不再接受新任务,直至多余的任务完成,所以资源回收的速度可能会比较慢

在MRv2中,社区正在开发任务抢占功能,有了抢占功能后,预计可以提高资源回收的速度

图3:MRv1的动态资源调整

图4:MRv2的动态资源调整

Hadoop计算节点水平扩展

除了对每个计算节点内部的垂直式的资源伸缩,Hadoop广为人知的还是其良好的水平可扩展性,Hadoop可以动态的上线或者下线(Decommission)计算节点。在虚拟化环境中,为支持更好的弹性,计算节点的上下线操作会更加频繁。

图5:虚拟化环境下的Hadoop水平扩展

这样引发一个问题,就是在下线计算节点时,其上正在运行的任务会被杀死,已经完成的Map任务的中间结果也会丢失,所以强制下线节点会导致大量任务重新执行,延迟整个作业的执行。

HVE的资源扩展技术通过增加安全下线(Graceful Decommission)功能来解决这个问题:

1. 用户发出安全下线计算节点命令后,先将该计算节点的槽位数或者资源配置为0,使其不再接受新任务

2. 等待该计算节点上任务都执行完毕,中间数据也都被使用过之后,再停止该计算节点。

总结

HVE的资源扩展技术通过对Hadoop核心添加动态资源特性,以支持对Hadoop集群计算层的动态的水品和垂直扩展,为Hadoop部署在虚拟化环境中增加了如下优点:

1. 能够使Hadoop与其他应用,或者多个Hadoop集群之间动态共享资源,可以根据资源需求动态的扩展或者收缩集群,提高资源利用率;

2. 更好的多租户支持,通过将不同的用户的作业隔离在不同的虚拟节点,可以在保证资源利用率的基础上提高隔离性和安全性。

本文简要介绍了HVE资源扩展技术,详细的设计实现可以参考参考文档中的相关JIRA。

参考文档

1.MemoryOvercommitment in the ESX Server: http://labs.vmware.com/vmtj/memory-overcommitment-in-the-esx-server

2.Dynamicresource configuration JIRA: YARN-291, MAPREDUCE-4900

3. Graceful Decommission JIRA: YARN-914, MAPREDUCE-5381

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

linux
相关资讯       虚拟化  Hadoop虚拟化 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款