确定云平台中通信代理节点和虚拟机的映射关系的方法
技术领域
本发明涉及云平台大数据处理。
背景技术
基于云平台的大数据处理集群由于其弹性可伸缩的计算框架以及“按需获取”的新型业务模式正逐渐的被工业界采纳。
从OpenStack Grizzly版开始,为了改善虚拟网络的性能和可靠性,可以允许租户在多主机上部署通信代理节点。但是,虚拟网络组件Neutron只实现了虚拟网络的通信功能,并没有进一步关注虚拟网络通信性能的提升。也就是说,没有提供有效的通信代理节点部署分配策略。而针对基于OpenStack的Hadoop集群,我们需要如何去设计通信代理分配策略来优化虚拟网络的性能以提升集群大数据处理的能力是我们亟需解决的问题。具体来说,就是为基于OpenStack的虚拟网络优化部署提供解决方案,而其中一个关键问题就是要确定云平台中通信代理节点和虚拟机的映射关系。
发明内容
本发明的目的是解决现有技术没有确定云平台中通信代理节点和虚拟机的映射关系的问题。
为实现本发明目的而采用的技术方案是这样的,一种确定云平台中通信代理节点和虚拟机的映射关系的方法,构建一个包括一台控制节点服务器和X台计算节点服务器的云平台,X为大于或等于1的自然数。每一台所述的计算节点服务器上构建若干台虚拟机。所述云平台基于OpenStack Havana版搭建。在所述云平台的部分或全部计算节点服务器上一共构建有Y个通信代理节点,1≤Y≤X。所述通信代理节点用于管理虚拟机,每一个通信代理节点映射若干虚拟机。通信代理节点与虚拟机的映射关系通过以下步骤确定:
1)测试云平台中所有虚拟机的数据处理性能大小,将云平台中所有虚拟机按数据处理性能大小排序。
2)找出当前未分配给通信代理节点的虚拟机中,数据处理性能最大的虚拟机作为待分配虚拟机。
3)测试云平台中所有通信代理节点的负载百分比大小,找出负载百分比最小的通信代理节点,并将步骤2)找出的待分配虚拟机分配给该通信代理节点。
4)重复步骤2~3),直到步骤1)测试过的虚拟机全部分配给通信代理节点。
本发明的技术效果是毋庸置疑的。基于上述方法,为基于OpenStack的虚拟网络优化部署提供了解决方案,解决了其中一个关键问题――确定云平台中最优通信代理节点与虚拟机的映射关系。
附图说明
图1为本发明的流程图;
图2为实施例3的小效果图;
图3为实施例4的小效果图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明,但不应该理解为本发明上述主题范围仅限于下述实施例。在不脱离本发明上述技术思想的情况下,根据本领域普通技术知识和惯用手段,做出各种替换和变更,均应包括在本发明的保护范围内。
实施例1:
一种确定云平台中通信代理节点和虚拟机的映射关系的方法,构建一个包括一台控制节点服务器和X台计算节点服务器的云平台,X为大于或等于1的自然数。每一台所述的计算节点服务器上构建若干台虚拟机。所述云平台基于OpenStack Havana版搭建。在所述云平台的部分或全部计算节点服务器上一共构建有Y个通信代理节点,1≤Y≤X。所述通信代理节点用于管理虚拟机,每一个通信代理节点映射若干虚拟机。通信代理节点与虚拟机的映射关系通过以下步骤确定:
1)测试云平台中所有虚拟机的数据处理性能大小,将云平台中所有虚拟机按数据处理性能大小排序。云平台中所有虚拟机将要通过以下步骤逐个分配给通信代理节点,即确定通信代理节点与虚拟机的映射关系。
2)找出当前未分配给通信代理节点的虚拟机中,数据处理性能最大的虚拟机作为待分配虚拟机。
值得说明的是,步骤2)~3)需要循环运行多次,首次运行步骤2)时,步骤1)中测试的所有虚拟机均未分配给通信代理节点,所以,云平台中所有的虚拟机均为“未分配给通信代理节点的虚拟机”。
3)测试云平台中所有通信代理节点的负载百分比大小,找出负载百分比最小的通信代理节点,并将步骤2)找出的待分配虚拟机分配给该通信代理节点。
4)重复步骤2~3),直到步骤1)测试过的虚拟机全部分配给通信代理节点,即确定了通信代理节点与虚拟机的映射关系。
值得说明的是,步骤2)~3)需要循环运行多次,每一次步骤3)结束后,还没有被分配给通信代理节点的云平台中的虚拟机即为下一次运行步骤2)时的“未分配给通信代理节点的虚拟机”。
实施例2:
本实施例的各个步骤与实施例1对应。首先,构建一个包括一台控制节点服务器和X台计算节点服务器的云平台,X为大于或等于1的自然数。每一台所述的计算节点服务器上构建若干台虚拟机,即第i台计算节点服务器上构建有ni台虚拟机,其中,i=1、2……X,ni为大于或等于1的自然数。所述云平台基于OpenStack Havana版搭建。在所述云平台的部分或全部计算节点服务器上一共构建有Y个通信代理节点,1≤Y≤X。所述通信代理节点用于管理虚拟机,每一个通信代理节点映射若干虚拟机。
通信代理节点与虚拟机的映射关系通过以下步骤确定:1)测试云平台中所有虚拟机的数据处理性能大小,第i台服务器上的第j台虚拟机的数据处理性能表示为Aij,j=1、2……ni,得到云平台中所有虚拟机的数据处理性能大小集合S={A11,……,A21,……Ai1,……Aij,……}。
2)云平台中,所有未分配给通信代理节点的虚拟机的数据处理性能大小集合为S’,
求得集合S’中的最大值。即选出所有未分配的虚拟机中,数据处理性能最大的虚拟机作为待分配虚拟机。
3)测试云平台中所有通信代理节点的负载百分比大小,第k个通信代理节点的负载百分比大小表示为Bk,得到云平台中,所有通信代理节点负载百分比大小集合F={B1,B2,……,Bk,……,By}。将待分配虚拟机分配给负载百分比最小的通信代理节点。
4)重复步骤2~3)
实施例3:
本实施例通过一个具体的例子来说明实施例1和2。即一种确定云平台中通信代理节点和虚拟机的映射关系的方法,构建一个包括一台控制节点服务器和3台计算节点服务器的云平台,即X=3。每一台所述的计算节点服务器上构建若干台虚拟机,即第1台计算节点服务器上构建有2台虚拟机,第2台计算节点服务器上构建有1台虚拟机,第3台计算节点服务器上构建有1台虚拟机。所述云平台基于OpenStack Havana版搭建。在所述云平台的部分计算节点服务器上一共构建有2个通信代理节点,即第1台和第3台计算节点服务器上各有1个通信代理节点,第2台计算节点服务器上没有通信代理节点。所述通信代理节点用于管理虚拟机,每一个通信代理节点映射若干虚拟机,但具体哪个通信代理节点映射哪个虚拟机是通过以下步骤确定:
1)使用vSphere测试云平台中所有虚拟机的数据处理性能大小,第1台服务器上的第1台虚拟机的数据处理性能表示为A11=2.46GHz,A12=2.72GHz,A21=2.55GHz,A31=2.50GHz;
得到云平台中所有虚拟机的数据处理性能大小集合S={A11=2.46GHz,A12=2.72GHz,A21=2.55GHz,A31=2.50GHz};
2)云平台中,所有未分配的虚拟机的数据处理性能大小集合为S’,本步骤中:S’=S;
求得集合S’中的最大值A=A12=2.72GHz。即选出所有未分配的虚拟机中,数据处理性能最大的虚拟机为第1台计算节点服务器上的第2个虚拟机,将其作为待分配虚拟机。
3)使用vSphere测试云平台中所有通信代理节点的负载百分比大小,第k个通信代理节点的负载百分比大小表示为Bk,得到云平台中,所有通信代理节点负载百分比大小集合F={B1=2%,B2=6%};
4)将待分配虚拟机分配给负载百分比最小的通信代理节点;即,将第1台计算节点服务器上的第2个虚拟机分配给第1台计算节点服务器上的通信代理节点;
5)云平台中,所有未分配的虚拟机的数据处理性能大小集合为S’,本步骤中:S’={A11=2.46GHz,A21=2.55GHz,A31=2.50GHz};
求得集合S’中的最大值A21=2.55GHz。即选出所有未分配的虚拟机中,数据处理性能最大的虚拟机为第2台计算节点服务器上的第1个虚拟机,将其作为待分配虚拟机。
6)使用vSphere测试云平台中所有通信代理节点的负载百分比大小,第k个通信代理节点的负载百分比大小表示为Bk,得到云平台中,所有通信代理节点负载百分比大小集合F={B1=21%,B2=6%};
7)将待分配虚拟机分配给负载百分比最小的通信代理节点;即,将第2台计算节点服务器上的第1个虚拟机分配给第3台计算节点服务器上的通信代理节点;
8)云平台中,所有未分配的虚拟机的数据处理性能大小集合为S’,本步骤中:S’={A11=2.46GHz,A31=2.50GHz};
求得集合S’中的最大值A31=2.50GHz。即选出所有未分配的虚拟机中,数据处理性能最大的虚拟机为第3台计算节点服务器上的第1个虚拟机,将其作为待分配虚拟机。
9)使用vSphere测试云平台中所有通信代理节点的负载百分比大小,第k个通信代理节点的负载百分比大小表示为Bk,得到云平台中,所有通信代理节点负载百分比大小集合F={B1=21%,B2=29%};
10)将待分配虚拟机分配给负载百分比最小的通信代理节点;即,将第3台计算节点服务器上的第1个虚拟机分配给第1台计算节点服务器上的通信代理节点;
11)云平台中,只有第1台计算节点服务器上的第1个虚拟机未分配,即S’={A11=2.46GHz};
12)使用vSphere测试云平台中所有通信代理节点的负载百分比大小,第k个通信代理节点的负载百分比大小表示为Bk,得到云平台中,所有通信代理节点负载百分比大小集合F={B1=38%,B2=29%};
13)将待分配虚拟机分配给负载百分比最小的通信代理节点;即,将第1台计算节点服务器上的第1个虚拟机分配给第3台计算节点服务器上的通信代理节点。
选用经典的MapReduce程序:WordCount,测试数据通过网络爬虫在Wikipedia上爬取21G的文本数据。在WordCount程序运行完之后,得出整个MapReduce阶段的总时间。如图2所示。从图中可以看到采用本方法进行通信代理节点与虚拟机的映射耗时明显低于随机映射方法。
实施例4:
本实施例采用实施例1的方法,基于OpenStack Havana版搭建云平台。构建了一个包含21台服务器的云计算IaaS平台,其中包括1台控制节点,20台计算节点。具体服务器配置和每台服务器上的虚拟机如表1所示。该平台以虚拟资源的方式为用户提供虚拟资源的使用,提供的虚拟资源的模板种类如表2所示。选用统一的微型主机模板。然后在IaaS平台中分配了246台虚拟机,搭建了基于云计算的并行计算集群。其中配置一台虚拟机作为Hadoop的master节点,其他245台作为Hadoop的slave节点。为了对本方法进行评估,以计算机程序设计语言对方法进行了实现,并整合到OpenStack平台中,在实际的IaaS应用场景中,对本方法进行详细的评估。
表1云计算IaaS平台服务器配置
表2云计算IaaS平台提供的虚拟资源种类
基于采集到的实际用户在利用Hadoop的MapReduce过程中稳定时达到的作业大小,我们对实际的云平台上的大数据处理场景进行了模拟。我们选用了经典的MapReduce程序:WordCount,而测试数据是我们在通过网络爬虫在维基百科上爬到的43G的文本数据。在WordCount程序运行完之后,我们统计每个slave上的时间,进而得出整个MapReduce阶段的总时间。
图3显示Map阶段的虚拟机分配通信代理策略对最终实验结果造成的影响。实验结果显示,利用了本方法的分配策略的实验结果明显优于随机的分配的结果。