下面是自己的理解,希望能通俗的表达出来:
要了解Hadoop和spark,以及它们所依托的云计算,就要先了解这些分布式计算(distributed computing)软件出现的历史背景。
就拿一个too young too simple版的网络聊天软件来举个栗子吧:
比如说有一款火爆的聊天软件叫OOXX,拥有用户A和B。OOXX软件公司有一台自己的服务器。用户A向用户B发一句“约吗”,整个流程大概这样:
于是乎,AMAZON搞出了他们的云计算服务,把自己闲置的计算资源出租给其他人来使用。有的客户什么都不懂,你把计算资源直接给他,他毛也不会用,于是有的云计算提供商就直接把一些软件运行在自己的集群上,这些客户直接上网使用这些软件就好啦,这就是SaaS(Software as a Service)。Salesforce的企业级软件就是这样一种服务。
有的用户不想用云计算服务商提供的软件,想自己打造自己的云服务软件,于是云计算服务商用一些技术直接整个服务器暴露给用户,用户可以远程自定义这个服务器(调整各种机器配置文件,运行各种程序,完全就和自己的电脑一样),这就是IaaS(Infrastructure as a Service)了,给用户提供了更多的把玩空间。AMAZON的EC2就是这样一个服务
还有些用户,又想运行自己的程序,又觉得配置服务器太麻烦了,于是云计算服务商就只提供一个平台供用户去上传和部署自己的软件,外加一些适当的可配置内容,但是整个底层的服务器配置还是由云计算服务商来做,这样用户省心。这就是PaaS(Platform as a Service),GOOGLE最开始的云服务(google app engine)就是这样一种模式。
云计算有三种服务模式,它们分别是IaaS、PaaS和SaaS。IaaS对应的英文是Infrastructure as a Service,翻译成中文是基础设施即服务。PaaS对应的英文是Platform as a Service,翻译过来是平台即服务。SaaS对应的英文是Software as a Service,翻译过来是软件即服务。从云计算的架构来看,IaaS、PaaS和SaaS是依次向前依赖的关系。即,SaaS的构建依赖PaaS,PaaS的构建依赖IaaS。
接下来,我将以一个生活中的场景作为例子,来帮助大家理解什么是IaaS、SaaS和PaaS。
小明是一位应届毕业生,成功入职到一家500强公司做文案工作。大家知道,文案工作离不开电脑的Word软件。所以入职的第一天,公司的IT部门就给小明发了一台电脑显示器和一台电脑主机。小明把电脑显示器和电脑主机搬到自己的座位上,把数据线连接好,打开电脑就看到经典的Windows开机画面。接着小明在电脑上安装了Word软件,然后就可以办公写文章了。
在上面的场景当中,小明使用的电脑显示器和电脑主机是公司的IT部门提前采购好保存在仓库中的。在有了云计算以后,公司不再需要采购电脑显示器和电脑主机。而是采购一种很便宜的长得类似电脑显示器的设备,我们把它叫做瘦客户端。于是,流程发生了改变。
入职的第一天,公司的IT部门发给小明一台瘦客户端并告诉他一个云上的账号和密码。小明把瘦客户端搬到自己的座位上,把网线连接到瘦客户端。然后打开瘦客户端,输入云账号和密码,小明看到了经典的Windows开机画面。小明在电脑上面安装了Word软件,然后就可以用办公写文章了。
我们发现,有了云计算以后。公司的IT部门只要缴纳一定的费用,就可以通过网络使用位于云上的电脑主机,而不再需要繁琐的流程去采购硬件设备。其实,电脑就是一种典型的IT基础设施。我们把云计算提供IT基础设施的能力叫做IaaS,即基础设施即服务。
IaaS的使用极大的方便了公司IT部门的工作效率。但是一段时间之后,IT部门发现,由于公司是做咨询分析业务的,员工的主要工作是写分析报告,所以每个员工在领到电脑之后都会首先安装Word软件。那么是否有可能在云上做一个超级大的Word软件,提供给所有的员工使用呢?这样员工就不再需要自己安装Word软件了。事实上,这样的做法是可行的。于是小明使用Word的流程发生了改变。
小明不需要在自己的电脑上安装Word软件,而是每次需要写文档时,就打开浏览器到指定的页面,输入云账号和密码,然后就可以使用位于云上的超级Word软件。使用云上的Word软件的好处就是,云服务提供商会负责升级维护位于云上的那个超级Word软件,而小明的公司仅仅需要支付一定的费用就可以让所有员工持续的使用到最新版本的Word软件了。像这种云服务商通过网络提供应用软件给用户使用的方式叫做SaaS,即软件即服务。
在使用了SaaS一段时间之后,公司的员工普遍反应,希望云上的Word能够新增某些功能。但是,云服务提供商并不打算支持这些功能,可是又不想失去一个500强企业客户。于是云服务提供商给小明所在公司一个建议,建议他们自己开发一套Word软件。在开发的过程中,云服务提供商可以把云上Word已有的功能以API的形式提供给IT部门调用。(考虑到有非计算机专业的听众,这里我解释下API。在计算机领域,如果A需要使用B的某些功能,我们就说A调用B的API)
在上面的场景中,即便小明公司的IT部门自己开发一套Word软件,也不需要完全从零开始,而是可以调用云上已经存在的某些功能。类似这种云服务商通过网络提供特定业务功能的API给用户的服务模式叫做PaaS,即平台即服务。
上面的例子中,我描述了云计算场景中最常见的的三种服务模式,用我自己的话总结一下:
IaaS,原本使用硬件计算机,现在使用云上虚拟出来的计算机。我把它概括为:基础硬件虚拟化。
PaaS,原本我们需要从零开始开发一个软件,现在可以以API的形式重复使用云上已有的功能模块,我把它概括为:开发环境接口化。
SaaS,原本我们需要先把软件安装在电脑上才能开始使用,现在可以打开浏览器直接使用云端的超级软件。我把它概括为:应用软件网页化。
至于Hadoop和Spark则很好理解,Hadoop可以简单理解为能够把多个计算机组织起来统一的对外提供计算能力和存储能力的软件框架,Spark则可以理解为对海量数据进行处理分析的软件框架。