云计算的目标是:按需服务,提供的服务可以是基础设施,也可以是平台,也可以是软件,即:
IaaS、PaaS、Saas
公共云服务一般来说包括:IaaS、PaaS、SaaS 三类服务。 即:Infrastructure(基础设施)-as-a-
Service,Platform(平台)-as-a-Service,Software(软件)-as-a-Service。
如下图:
IaaS是
基础设施类的服务,将成为未来互联网和信息产业发展的重要基石。互联网乃至其他云计算服务的部署和应用将会带来对IaaS 需求的增长,进而促进IaaS
的发展;同时,大数据对海量数据存储和计算的需求,也会带动IaaS 的迅速发展。IaaS
也是一种“重资产”的服务模式,需要较大的基础设施投入和长期运营经验的积累,单纯出租资源的IaaS服务盈利能力比较有限。
PaaS
服务被誉为未来互联网的“操作系统”,也是当前云计算技术和应用创新最活跃的领域,与IaaS服务相比,PaaS
服务对应用开发者来说将形成更强的业务粘性,因此PaaS 服务的重点并不在于直接的经济效益,而更着重于构建和形成紧密的产业生态。
SaaS 服务是发展最为成熟的一类云服务。传统软件产业以售卖拷贝为主要商业模式,SaaS 服务采用Web
技术和SOA
架构,通过互联网向用户提供多租户、可定制的应用能力,大大缩短了软件产业的渠道链条,使软件提供商从软件产品的生产者转变为应用服务的运营者。
在云计算细分市场中,SaaS规模仍然最大,IaaS
市场增长最快。2013年,IaaS、PaaS 和SaaS 的市场规模分别达到91.7亿、15.7亿和226亿美元,SaaS 市场规模是IaaS
和PaaS 市场规模总和的一倍还多;但从年增长率来看则分别为45.2%、28.8%和24.4%,IaaS 和PaaS
的市场规模增速都超过SaaS,
Hadoop,OpenStack,Storm
Hadoop
Hadoop
仿照的是Google的云,它注重的是海量的数据分析和处理。Hadoop是负责分布式计算和分布式存储。就是把一个执行任务分开,放到不同的节点(物理机)去跑,最后汇总。
Hadoop确实是处理海量离线数据的利器,当然,凡是一个东西有优点必定也有缺点,hadoop的缺点也很多,比如对流式计算,实时计算,DAG具有依赖关系的计算,支持都不友好,所以,由此诞生了很多新的分布式计算框架,Storm,Spark,Tez,impala,drill,等等,他们都是针对特定问题提出一种解决方案,新框架的的兴起,并不意味者他们就可以替代hadoop,一手独大,HDFS和MapReduce依旧是很优秀的,特别是对离线海量数据的处理。
hadoop在如下的几种应用场景里,用的还是非常广泛的,1,搜索引擎建索引,2,topK热关键词统计,3,海量日志的数据分析等等。
http://qindongliang1922.iteye.com/blog/1974415
Storm
Storm
是最火的流式处理框架。Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。
- Nimbus负责在集群里面发送代码,分配工作给机器,并且监控状态。全局只有一个。
- Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。每一个要运行Storm的机器上都要部署一个,并且,按照机器的配置设定上面分配的槽位数。
- Zookeeper是Storm重点依赖的外部资源。Nimbus和Supervisor甚至实际运行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根据Zookeerper上的心跳和任务运行状况,进行调度和任务分配的。
- Storm提交运行的程序称为Topology。
- Topology处理的最小的消息单位是一个Tuple,也就是一个任意对象的数组。
- Topology由Spout和Bolt构成。Spout是发出Tuple的结点。Bolt可以随意订阅某个Spout或者Bolt发出的Tuple。Spout和Bolt都统称为component。
OpenStack
OpenStack
仿照的是Amazon的云,注重的是虚拟化/虚拟机及其配套的服务。简单的说(不严谨)OpenStack是管理虚拟机的,比如xen,kvm等。它所谓的云就是一堆的虚拟机。
它主要目的是做一整套的云计算基础构架。包括 云计算(Compute), 网络(Network),对象存贮(Object
Store),镜像文件存储 (Image),身份认证(Authentication),BlockStorage 以及 前端UI
。OpenStack的每个模块都对外提供API,可以独立供云用户调用,在OpenStack内部,每个模块之间的相互调用也是用这些API.
OpenStack和Hadoop的关系:
OpenStack是IaaS的,更底层的,属于OS层面;而Hadoop是PaaS的,比较上层。Hadoop可以运行在OpenStack之上。
参考资料:
http://www.zhihu.com/question/20475470