什么是云计算?摘抄一段wikipedia上的权威解释:
云计算 (cloud computing ,台湾译作云端运算 ),是一种基于互联网 的计算新方式,通过互联网上异构、自治的服务为个人和企业用户提供按需即取的计算。由于资源是在互联网上,而在计算机流程图中,互联网 常以一个云状图案来表示,因此可以形象地类比为云计算,‘云’同时也是对底层基础设施的一种抽象概念。
云计算的资源是动态易扩展 而且虚拟化 的,通过互联网 提供。终端用户不需要了解“云”中基础设施的细节,不必具有相应的专业知识,也无需直接进行控制,只关注自己真正需要什么样的资源以及如何通过网络来得到相应的服务。
云计算可以认为包括以下几个层次的服务:基础设施即服务(IaaS),平台即服务 (PaaS)和软件即服务 (SaaS)。云计算服务通常提供通用的通过浏览器访问的在线商业应用,软件和数据可存储在数据中心。
怎么样?晕菜了吧。咱们搞IT的,就喜欢把简单的事情说得玄里八乎,以增加小MM对偶们的崇拜是吧?反正微软关于技术方面的宣传广告,我是从来没看懂过。
让我这个老土来告诉你什么是云计算:
云计算,就是把一堆乱七八糟的机器连在一起,同时执行任务。即然是好多机器,自然速度会快好多,存储空间会大好多。机器数量多了,免不了有混水摸鱼的,死机的,断线的,冒烟的,抽风的……总不能因为一个老鼠坏了一锅汤吧,所以数据要分散开存多份,缺了丫几台,地球照样转。这样,任何一台机器想玩了就进来,不想玩了立马闪人,来去自由。机器多了,就可以同时跑很多不同的任务,小机群的机头就可以按任务收money。
云计算的几个特点:
小机来去自由���—易扩展
小机机们同时干事——并行化
你并不知道某一小机现在执行的是哪个任务,也不需要知道——虚拟化
小机机挂了,断掉或换掉就行了,不影响任务执行——容错性
小机群可以很多人共享,运行不同的任务,小机头可以根据任务收money——平台化,软件即服务
这么多机器,需要一个平台软件来管理,hadoop出场!(聚光灯,掌声……)
官腔就免了,详细的官方介绍自己去google。这里我只说几点实用的:
- 分布式系统既然能让小机机们同时做事,必然要把一个常规的任务分解为很多可以并行执行的子任务,发给小机机们,还要把各个子任务的中间结果汇总,形成最终的结果。这就是著名的Map/Reduce机制。hadoop提供了一个完整的框架进行任务的分配和调度,开发人员只需要实现相应的Map和Reduce算法即可。
- 分布式系统的数据存储是分散和冗余的,所以要有一个全新的文件系统。hadoop提供了HDFS文件系统,所有的分布式的文件操作,都要通过HDFS的函数和命令进行。
- hadoop是一个Java平台的程序,需要jdk1.6以上版本
- hadoop中使用了很多Linux的特性,如shell脚本,SSH等,所以它最好的运行环境是Linux。在Windows环境下,可以作为单机开发平台,也可以在Cygwin下勉强运行分布式任务。(具体cygwin下的配置后文有专门介绍)
今天先讲这么多,后面将会有专题讨论Map/Reduce, HDFS等问题。