设为首页 收藏本站
查看: 1349|回复: 0

[经验分享] Hadoop虚拟化扩展(HVE)之资源扩展技术

[复制链接]

尚未签到

发表于 2018-10-31 11:15:53 | 显示全部楼层 |阅读模式
背景
  在虚拟化的云环境中,Hadoop可以有更好的“弹性”,这是云计算的一个重要优势,例如亚马逊的EMR(ElasticMapReduce)服务, 用户可以迅速的在云中根据需求部署一个Hadoop集群,运行计算任务,并且用户可以向集群动态的添加或删除计算节点。
  这里存在着一个潜在问题,Haodop的数据节点并非天生的“有弹性”,删除一个数据节点意味着需要重新复制存储在这个节点的数据,这是一个缓慢的过程,并且占用网络带宽。
DSC0000.png

  图1:存储计算分离
  存储计算分离可以很好的解决这个问题,如上图所示,我们可以静态的为每个物理结点部署一个数据节点,动态的部署和调整每个物理节点上的计算节点。另外可以利用虚拟机更好的隔离性,为每个租户提供单独的计算节点,提供多租户(Multi-Tenancy)服务。
  HVE的资源扩展技术就是对Hadoop计算层的扩展,通过增加Hadoop垂直扩展和水平扩展的动态性,配合资源共享,最终达到优化资源利用的目的。
技术
资源过量配置(Resource Overcommitment)
  虚拟机之间的资源共享通常是通过资源过量配置来实现的。大多数的虚拟机Hypervisor,比如VMware和Xen,都支持资源过量配置。以VMware ESX为例,他允许为每个虚拟机配置预留资源(Reservation),最大资源(Limit)和共享(Share)来控制同一物理机上多个虚拟机之间的资源共享,以及资源不足时的分配策略。
DSC0001.png

  图2:资源过量配置
  有了这个技术,多个应用之间就可以共享资源,比如在其他应用繁忙的时候,可以使Hadoop计算节点少占用一部分资源,而在其他应用空闲的时候,Hadoop节点可以分配到更多资源。
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中,社区正在开发任务抢占功能,有了抢占功能后,预计可以提高资源回收的速度
DSC0002.png

  图3:MRv1的动态资源调整
DSC0003.png

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

  图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
  关于vSphere Big Data Extensions:
  VMware vSphere Big Data Extensions(简称BDE)基于vSphere平台支持大数据和Apache Hadoop作业。BDE以开源Serengeti项目为基础,为企业级用户提供一系列整合的管理工具,通过在vSphere上虚拟化Apache Hadoop,帮助用户在基础设施上实现灵活、弹性、安全和快捷的大数据部署、运行和管理工作。了解更多关于VMware vSphere Big Data Extensions的信息,请参见http://www.vmware.com/hadoop。
  作者介绍
DSC0005.jpg

  常冰琳(Binglin Chang)
  VMware开发工程师
  Hadoop 代码贡献者,参与开发Hadoop虚拟化扩展。在VMware之前,就职于百度,长期从事Hadoop以及其他分布式系统的设计和开发工作。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-628896-1-1.html 上篇帖子: 提升Hadoop计算能力的并行框架 下篇帖子: 集算器如何在Hadoop框架下实现关联计算
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表