总第8期
2016年12月刊
Lecture Hall    讲堂
Lecture Hall    讲堂
大数据集群如何部署,虚拟机还是物理机?
文/洪福成
分享

摘要:云计算虚拟化的主要一个目的是解决资源利用率问题,即把利用率较低的物理资源虚拟化成多个更小的逻辑资源,按需分配给多个应用,提升资源的使用效率;大数据技术对资源的需求与虚拟化技术方向正好相反,单台物理服务器资源无法满足大数据对存储容量和计算性能的要求,需要多台物理服务器资源组成集群实现分布式框架来提升储存容量和计算能力,本文将重点分析大数据集群部署在物理机和虚拟机的性能差别。

Hadoop是一个运行于大规模集群上的分布式并行计算框架,其核心技术包括:分布式存储(HDFS)和分布式计算(MapReduce)。

HDFS是建立在Linux操作系统上的一个虚拟分布式文件系统,可以将一个大数据集切割成多个较小的数据块(Block),并按照哈希分片(Hash Partition)、虚拟桶(Virtual Buckets)等算法将数据块有序存储在集群中的不同数据节点上,以提高容错性和分布式能力。

MapReduce包含Map和Reduce两个操作。MapReduce框架把一个计算任务拆分成若干个Map任务,然后分配到不同的主机节点上去执行,每一个Map任务处理输入数据中的一部分,当Map任务完成后,它会生成一些中间文件,这些中间文件将会作为Reduce任务的输入数据,Reduce对数据进行汇总处理并输出最终结果。

MapReduce计算需要大规模的读写数据,大容量网络I/O也就成为影响MapReduce计算性能的关键点之一。降低网络I/O有多种方式,与传统计算模式“moving data to jobs”不同,Hadoop提出“moves jobs to data”,即把计算任务推到数据所在的节点,实现本地计算,减少跨节点数据读取来提升性能。

在大数据集群部署环境选择方面,用户对构建物理机集群还是虚拟机集群会有很多疑惑,而正确理解Hadoop的基本原理,特别是“Moving jobs to data”降低网络I/O提升计算性能,可以有助于用户做出正确的选择。

一、 大数据物理机集群

图1 大数据物理机集群

如图1所示,大数据物理机集群构建于X86服务器硬件,具备本地计算资源和本地硬盘资源,可以实现计算节点和数据节点部署在同一个节点,满足“Moving jobs to data”的原则,计算过程中减少数据在服务器之间的移动,降低网络I/O,实现快速数据读取和计算。此外,大数据物理机集群还具有下列优点:

  • 大数据物理机集群采用share-nothing技术架构,可以实现Scale out横向扩展,集群主机数量从几台到几千台规模,支持PB、EB级海量数据存储和计算能力的线性扩展。
  • 每台物理服务器节点可以配置多块硬盘,每块硬盘采用独立挂载方式,即每块硬盘具备独立的I/O能力,可以支持数据并行读写,实现高速数据吞吐能力。
  • 大数据物理机集群主机节点之间存在数据交换,通常会要求网卡满负荷运作,物理机可以通过多网卡负荷分担来提高网络I/O性能。

二、 大数据虚拟机集群

图2 大数据虚拟机集群

如图2所示,虚拟化技术以提升物理服务器CPU、内存等资源利用率为目标,把一台物理服务器CPU、内存和存储等资源虚拟化成多组逻辑资源,每一组逻辑资源对应一个虚拟机VM,一台物理服务器虚拟化成多个VM,以VM为单元分配给多个APP使用可以达到服务器资源利用效率最大化要求。

与大数据物理机集群相比,大数据虚拟机集群存在下列问题:

  • 虚拟机集群计算能力极大地降低。Hadoop采用分布式计算框架,需要通过大数据集群的多个主机分担执行同一个计算任务,主机的CPU、内存和磁盘I/O能力越强则处理性能就越快。虚拟化技术把服务器物理资源虚拟化成多个逻辑资源,不仅没有提升大数据集群的CPU、内存和磁盘的I/O能力,而且hypervisor等虚拟化处理还会带来额外的资源消耗,致使单台物理服务器的处理性能会下降10%左右。
  • 虚拟机集群I/O效率极大地降低。大数据集群每次执行计算任务时,需要大量的读写数据,虚拟机采用共享存储或统一存储,Hadoop要求的“Moving jobs to data”的原则无法实现,网络I/O将会大幅增加,I/O效率极大地降低。此外,多个虚拟机网卡会共用一个物理网卡,虚拟网卡带宽在大数据量交换的情况下也会成为瓶颈。
  • 虚拟机集群无法支持计算和存储的线性扩展。共享存储或统一存储在多虚拟机并发读写时会面临严重的I/O冲突问题,集群主机规模将受到限制。

三、 大数据物理机集群和虚拟机集群性能对比测试

为了证明上述对大数据物理机集群和虚拟机集群的理论分析正确性,我们以一个标准的大数据分布式计算任务Terasort排序来做性能对比测试。Terasort的Map和Reduce都会产生大量的中间数据,需要大规模的读写硬盘,能够有力的证明物理机集群和虚拟机集群的性能差异。

图3 Terasort排序

如图3所示,Terasort是基于Hadoop的一个排序作业,把要排序的数据先划成K个数据块。在Map阶段,每个Map Task都会将数据划分成R个数据块,其中R为Reduce Task个数,而且第i(i>0)个数据块的所有数据都会比第i+1个中的数据大;在Reduce阶段,第i个Reduce task处理(进行排序)所有map task的第i块,这样第i个Reduce task产生的结果均会比第i+1个大,最后将1~R个Reduce task的排序结果顺序输出,即为最终的排序结果。

采用相同服务器配置,构建大数据物理机集群和大数据虚拟机集群,环境及测试结果如下:

  • 3台物理服务器组成大数据物理机集群配置如表1所示。

表1大数据物理机集群配置

用途

CPU

内存

系统盘

数据硬盘

网络

节点一

4路8核

128G

1*600G

4*600G

10GbE

节点二

4路8核

128G

1*600G

4*600G

10GbE

节点三

4路8核

128G

1*600G

4*600G

10GbE

  • 6台虚拟机组成大数据虚拟机集群配置如表2所示

表2大数据虚拟机集群配置

用途

CPU

内存

系统盘

数据硬盘

网络

节点一

2路8核

62G

1*600G

1.2T

10GbE

节点二

2路8核

62G

1*600G

1.2T

10GbE

节点三

2路8核

62G

1*600G

1.2T

10GbE

节点四

2路8核

62G

1*600G

1.2T

10GbE

节点五

2路8核

62G

1*600G

1.2T

10GbE

节点六

2路8核

62G

1*600G

1.2T

10GbE

  • 测试结果对比如表3所示

表3测试结果

测试项目

物理机集群性能

虚拟机集群性能

虚拟机集群/物理机集群

100G 数据生成

295秒

395秒

133.9%

100G数据Terasort排序

3006秒

4342秒

144.4%

从上面的结果可以看出,大数据虚拟集群主机数量虽然比大数据物理集群主机数量的一倍,但处理性能却低40%。由此可见,大数据物理集群比大数据虚拟集群在性能上具备较大优势。

结束语

大数据对计算能力、存储资源、可扩展性都要求很高,单台物理服务器的CPU、内存和存储资源不足以支撑Hadoop对数据存储容量和计算效率的要求,要求把多台服务器构建统一的集群进行分布式存储和计算,即N:1。而虚拟化技术以提升资源利用效率为目标,把一台物理服务器CPU、内存和存储等资源虚拟化成多组逻辑资源,即1:N。虚拟化1:N的技术特点实际上与大数据集群N:1的技术要求相背离,虚拟机构建的大数据集群处理性能和可扩展性都会在实际生产环境中遇到较多问题。

综上所述,对大数据量和高性能要求的生产环境,建议采用物理服务器集群部署大数据;对于小数据量、性能要求不高的实验环境,可以采用虚拟机集群部署大数据。

分享到
关闭