大数据时代,Hadoop将会会大规模部署于企业之中。VMware新的vSphere Big Data Extensions (BDE) 将其开源项目Serengeti商业化,使企业管理员能够随心所欲地玩转虚拟Hadoop集群。
现在,VMware已经明确表示,将要全力支持虚拟化Hadoop在企业vSphere环境中的工作负载。
然而,Hadoop的所有工作是在大量的分布式数据之上智能地映射并行计算工作。群集部署和操作对虚拟化管理员来说变得非常容易。但在虚拟环境中存储可以有效地从计算客户端抽离,设计底层存储架构时有一些重要的复杂性和机会需要考虑。在虚拟环境中运行Hadoop的一些具体问题,包括考虑如何配置虚拟数据节点,如何最好地利用hypervisor服务器的本地DAS,以及何时考虑利用外部SAN/NAS。
大数据,虚拟化
虚拟化Hadoop背后的主要思想,是获得以虚拟机部署Hadoop scale-out(横向扩展)节点的优势,而不是折腾商品化的物理服务器。集群可以按需置备,弹性扩张或收缩。多个虚拟Hadoop的节点可以托管在hypervisor物理服务器,虚拟机可以很容易地为一个给定的应用程序分配更多或更少的资源。hypervisor级别的HA/FT能力,可以被带到承担生产的Hadoop应用程序。VMware的BDE甚至包括QoS算法,以帮助动态排序集群优先级,必要时收缩低优先级的集群,确保高优先级的集群的服务水平。
显然,虚拟化Hadoop的大问题之一性能。Hadoop的价值在于它如何有效地执行分布式数据块上的并行算法。Hadoop的优势,使用HDFS(Hadoop分布式文件系统)将大数据散布在多个节点,然后将并行计算任务放到每个数据节点进行初步的处理(MapReduce的“映射”部分由作业和任务跟踪器实现)。
这个设计,每个scale-out物理节点,承载本地计算和数据共享,意在支持如搜索这样的应用。这些应用可能经常需要抓取大量大型数据集的所有数据,这些数据集通常由低水平半或非结构化的文本和文件构成。
一般情况下,每个HDFS数据节点将由hypervisor直接分配物理主机服务器的DAS磁盘。然后HDFS将在数据节点上复制数据,默认复制两份到不同的数据节点上。在一个物理集群上,副本由定义放置在不同的服务器节点(每台服务器一个数据节点)。HDFS也知道,将第二个副本放在不同“机架”的节点,以帮助避免机架级的损失。
在虚拟化的世界中,Hadoop必须意识到虚拟节点的hypervisor分组,以保证良好的物理数据布局和后续工作/任务分配。这个虚拟的认识是通过Hadoop Virtual Extensions(HVE)实现,VMware将其贡献到Apache Hadoop 1.2。
Hadoop Virtual Extensions
Hadoop Virtual Extensions打破了应用和物理主机之间的虚拟抽象。但在某些方面,Hadoop平台可以看作是虚拟化的另一层,增加横向扩展的数据和计算管理到hypervisor。
HVE本质上是在Hadoop层级的节点和机架之间插入一个新级别的“节点组”。节点组代表了一套虚拟的Hadoop节点,在每个给定的hypervisor服务器上,帮助告知Hadoop和HDFS管理算法。
其效果是,即使在虚拟环境中,Hadoop也可以保持“数据局部性”的知识,以保持计算任务靠近所需的数据提高性能,并为容错确保最佳的复制位置。#p#
数据节点选项
当你虚拟化Hadoop节点,你也可以选择从数据节点分离计算(任务跟踪器,等等),并把他们分别放在不同的虚拟机。如果计算节点和数据节点的虚拟机仍然驻留在相同的hypervisor服务器,他们可以有效地在虚拟网络“内存”沟通,并不会受到任何显著的物理网络延迟的影响。 HVE可以确保数据保持本地的关系以提高性能。
计算节点和数据节点分离,为您提供了正交尺度和配置多个计算节点共享单一的数据节点的选项。这种新的灵活性,允许优化物理服务器主机的资源利用率,虽然为每个应用程序寻得合适的比值可能需要大量的实验。
虚拟化和分离数据节点还有其他的好处。不仅多个计算节点可以从一个群集访问给定的数据节点,而且虚拟化意味着可以托管和配置多个Hadoop集群访问相同的数据节点。
事实上,HDFS可以作为服务提供,当作一个更永久的数据存储库来管理,而各种计算“应用”可以动态地飘来飘去。通过这种方式,HDFS现在可以作为向外扩展的虚拟存储设备提供服务。
大数据SAN?
物理Hadoop架构的成本令人信服的理由之一是避免昂贵的SAN,尤其是数据集变得更加巨大。然而,在虚拟环境中,考虑用SAN存储一些大数据集可能是有意义的。
原因之一是,通过VMware的BDE GUI配置只计算的虚拟Hadoop集群是很简单的,但要环绕大数据集仍然是一个挑战。通过托管数据到外部共享存储上,配置虚拟Hadoop的托管变得几乎微不足道。并且hypervisor的功能,如DRS和HA也可以被充分利用。帕特·基辛格(Pat Gelsinger)在EMC World 2013大会上爽快地展示了使用外部的Isilon存储玩转虚拟Hadoop集群。
考虑SAN存储另一个原因是,如果你有数据治理的顾虑。HDFS是不容易备份、保护或审计的。而SAN建有强大的数据保护(RAID比一式三份的复制使用更少的磁盘)和快照功能。这很容易保护一些大数据应用至关重要的数据,如有必要可以回滚。关注确保高性能网络,从SAN 的性能当然也可以获得比DAS服务器提供更高的吞吐量。
这里还值得一提的是磁盘故障恢复,因为大数据在大量的磁盘上,故障变得相当普遍。
在一个正常的Hadoop集群,一个本地磁盘故障会关闭相应的节点,然后Hadoop在它周围继续工作。但在一个虚拟的环境中,磁盘故障可能会关闭数据节点,但多个虚拟数据节点可以配置于每个hypervisor服务器。磁盘发生故障,虚拟数据节点不会关闭hypervisor上任何的其他虚拟Hadoop节点。
利用SAN存储,高可用的Hadoop应用程序可能永远不会知道磁盘故障曾经发生。
虚拟化Hadoop很疯狂?
有许多理由为什么虚拟化Hadoop在很多使用场景有意义。作为一个虚拟的工作负载,Hadoop在一套广泛的使用场景可以实现堪比物理主机的预期性能,同时有助于进一步巩固和优化IT基础架构投资。
此时,一千节点群集,有多个PB级连续使用的数据,不太可能是虚拟化的候选者。不过,我们认为,大多数组织有一些大数据的机会,数据量在10-20TB之间,他们可以从这些数据中提取价值,如果他们的IT可以提供向外扩展(scale-out)的分析解决方案,作为具有成本效益的服务。
通过虚拟Hadoop的能力,一个单一的大数据集可以很容易地共享在多个虚拟Hadoop集群之间。这创造了一个相同的存储服务于多个客户端的机会。消除大数据集的多个副本,降低数据迁移量,并确保更高的可用性和数据保护,Hadoop变得更易于管理,并且易于作为支持企业生产的应用。
事实上,在企业Hadoop很多的预期使用场景,托管虚拟化Hadoop到更少但相对较贵的虚拟服务器,包括潜在的昂贵的存储选项,其总体拥有成本(TCO)仍然比采用商品化服务器构建专用的物理集群更加低廉。开源的人群开始把目光投向竞争的“Project Savannah”项目,希望把类似的功能引入OpenStack/ KVM。
共享和联合节点的因素,易于管理,弹性配置,灵活的服务,共享数据服务和更高的可用性,可以导致成本比较有利。但我们认为,创建一个完整的Hadoop集群on demand的能力,有效地“精简置备”是足够诱人,对于许多在现有的vSphere平台上低风险尝试vSphere Big Data Extensions的组织。我们相信这将导致显著的采纳。