大数据时代面临着生态系统的不断更新迭代。程序猿和攻城狮们绞尽脑汁地想要降低硬件成本、开发出能保罗万象的系统。
先是系统分身——虚拟机的出现,宿主系统和虚拟镜像灵活切换,十分酷炫!随着GO语言这位***王者的出现,又有“神猿”编写出了docker这个貌似鲸鱼的可爱工具。服务器的资源共享进入了容器时代。如今很多头部的IT公司基于docker不断拓展新业务。随着微服务架构的横空出世,docker迅速与之组成战队,就更加飘飘然了。
这几年,容器将取代“虚拟化”的言论甚嚣尘上。事实上,没有绝对的技术,大数据的生态系统是鲜活的,不断更新且多向兼容。虚拟化和容器必将经历短期共存的过程,最终的生死存亡只能交给“生态圈”自主筛选。
就目前而言,容器比虚拟机更敏捷迅速,且容器支持混合和多云的采用。最重要的一点是容器具有很强的适应性:它可以轻松地集成于现有的IT实践当中。同时,容器化应用程序因其灵活共享的特性,大大提高了VM的CPU利用率,降低了硬件成本。但另一方面,每一个虚拟机都有自己的操作系统,驱动程序和应用程序,具有更强的隔离性。
VMs
二十年前,一家名为VMware的创业公司通过提供创建非物理机器虚拟化平台(如Linux,Windows等)来引入业务。
随着服务器处理能力的提高,基本应用程序无法***限度地利用所有丰富的新资源。而虚拟机(VM)的出现,可以在物理服务器上运行软件,并模拟特定的硬件系统。其中管理程序是可以创建和运行虚拟机的软件或硬件。
使用不同操作系统的虚拟机可以在同一服务器上运行。例如,一个Unix虚拟机可以同时在能够运行Linux虚拟机的服务器上运行。每个虚拟机都有自己的应用程序、二进制文件和库。因此,企业可以保留旧计算机,添加新软件,无需重新购买能够运行Unix软件的新计算机。对于组织不断变化的需求而言,这是一个更简单、更便宜的解决方案。
服务器虚拟化是在虚拟化软件的帮助下,将物理服务器划分为若干个小型虚拟服务器的技术。在这个系统中,每个虚拟服务器将同时运行多个操作。Wikibon的***分析师James Kobielus在最近的一次Dataversity®采访中说:
服务器虚拟化的巨大优势在于可以更好地利用所投资的硬件资源。其面临的问题是:在不同平台的不同虚拟机中,管理不同的机器映像相当复杂,这可能会造成相应的管理负担。
容器(Containers)
即使有可用的工具,虚拟机技术也很难被使用。例如,在虚拟世界中很难分离特定的、消耗资源的应用程序。微服务和容器化提供了一个更简单的选择。一个特定的应用程序代码(例如查询处理器和数据库索引逻辑中的后端数据)可以通过微服务的容器来分割不同的工作负载。
容器类似于虚拟机,来自其他系统的软件也可以在不同的服务器上运行。容器还允许应用程序与库和依赖项一起运行。也就是说,当虚拟机模拟硬件系统时,容器能够以核心操作系统为基础来运输自己的软件系统。
相较于虚拟机而言,容器占用空间更少。“虚拟机可能需要大量的资源开销,例如网络输入、输出、内存和磁盘。因为单个虚拟机运行自己的操作系统,而容器则不运行。”Kobielus说道。容器共享称为操作系统(OS)内核的东西,它访问操作系统核心。另外,支持容器的操作系统可以更小,并且具有比虚拟机的操作系统更少的特征。容器启动速度更快,仅使用启动整个操作系统所用内存的一小部分。显然,容器是下一个进化的步骤。Kobielus评论说:
容器化在过去五年里开始流行。这是一种做微服务、分发与平台无关的虚拟化服务器环境的方法,并且此方法有效。容器不仅可以在服务器中运行,还可以在客户机设备等上运行。容器化实际上是通常所谓的云计算的核心。
容器化技术长期以来一直是Linux的一部分。Kobielus表示,目前Docker是***的容器之一,其他容器化技术,都被插入到Linux中了。基本上,Linux是操作系统,Linux容器可以通过Docker、Mesos和其他各种方式实现。“可以在Docker容器中运行应用程序逻辑,然后独立地扩展它们。”
Docker支持在大多数Linux平台上都可用,可以轻松运行这些容器及其应用程序。它们基本上可以在任何Linux平台以及其他非Linux平台上运行。通过使用容器,可以在操作系统和底层硬件平台之间灵活地移动微服务。
Kubernetes
Kubernetes是一个开源的容器编排系统,旨在自动扩展、部署和管理容器化应用程序。容器编排系统最初由Google开发,但现在由Cloud Native计算基金会保存和维护。NetApp现在使用Kubernetes发行版,该发行版嵌入在其环境中,并在整个分布式云架构中协调存储资源和存储容器化。
StackPointCloud开发了一个基于Kubernetes的控制平面,用于管理联合可信存储集群,并在公共云服务提供商之间同步持久性存储容器。之后,大型数据存储供应商NetApp采用该技术并将其转变为NetApp Kubernetes服务,该服务允许客户在仅仅三次点击的情况下启动Kubernetes集群或存储集群。
“它可以扩展到被数百个用户使用,客户能够部署可以从单个用户界面扩展的容器,”Kobielus评论道。这就是存储的容器化。容器化的大部分过程都集中发生在应用程序和中间设备功能上。
据Kobielus说:“Kubernetes或Docker以及Linux容器的一个传统弱点就是它们不适合存储或不具有持久性。但是,在利用kubernetes和容器、docker等工具在云环境中实现数据持久性方面,wikibon提供了大量关于存储空间的创新。”
目前已有多个将存储容器化的例子(存储有时被描述为大数据分析的核心)。NetApps称其新的Kubernetes服务可以在AWS,Google Compute平台和Microsoft Azure中运行StackPoint引擎。(它还支持DigitalOcean,Packetclouds等)此外,Cloud Native Computing Foundation还有Rook,它用于非结构化数据的存储容器化和底板的编排。
Hadoop存储
大数据分析平台正在形成一种趋势。这与被用于存储的Hadoop有关。它被用于数据存储、数据存档和数据转换。同时也被用于数据治理。Hadoop是一个开源核心平台,许多企业将其与大数据一起使用,以达到各种目的。因此,Hadoop分布式文件存储已经变得非常流行。Hadoop目前被用于内部云、公共云和混合云中。Hadoop生态系统现在正处于容器化过程中。Red Hat是Kubernetes云中的主要实施者之一。Kobielus说道:
创新者基本上将Hadoop生态系统的所有组成部分纳入他们的计划,然后对其进行容器化,以便后期独立部署、扩展和管理。然后使用Kubernetes将它们以各种组合形式进行编排。
如今,很多企业都在应用这些数据分析的开源平台技术。“他们正在以各种各样的方式将它们结合起来,很多独立开源项目的原始开发人员并没有完全预料到这一点。”Kobielus评论道。所有这些平台都得到了容器化,这种趋势将会持续,在短期内不会很快改变。