简介
开放分布式计算架构是指以分布式计算技术为基础,用于解决大规模的问题开放式软件架构。开放分布式计算架构具有较好的伸缩性,特别在处理大数据问题时,开放分布式计算架构能提高处理速度。常见的开放分布式计算架构有:Hadoop、Spark。
特点可移植性。各种计算机应用系统可在具有开放结构特性的各种计算机系统间进行移植,不论这些计算机是否同种型号、同种机型。
可互操作性。如计算机网络中的各结点机都具有开放结构的特性,则该网上各结点机间可相互操作和资源共享,不论各结点机是否同种型号、同种机型。
可剪裁性。如某个计算机系统是具有开放结构特性的,则在该系统的低档机上运行的应用系统应能在高档机上运行,原在高档机上运行的应用系统经剪裁后也可在低档机上运行。
易获得性。在具有开放结构特性的机器上所运行的软件环境易于从多方获得,不受某个来源所控制。
实现为了全面实现上述开放系统的4个特性,首先要保证实现系统的可移植性和互操作性。
为实现可移植性,首先要建立起符合开放系统概念的开发平台,在这个开发平台上所开发的应用系统都可以在另一个符合开放系统概念的平台上,以同样的工作环境去编译和运行原应用系统,不必对源程序作任何修改。
为实现互操作性,首先应实现通信时的互操作性,即应实现开放系统互连环境(OSIE)。
软件架构软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。架构描述语言(ADL)用于描述软件的体系架构。现在已有多种架构描述语言,如Wright(由卡内基梅隆大学开发),Acme(由卡内基梅隆大学开发),C2(由UCI开发),Darwin(由伦敦帝国学院开发)1。ADL的基本构成包括组件、连接器和配置。软件体系结构是构建计算机软件实践的基础。与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,软件架构师或者系统架构师陈述软件架构以作为满足不同客户需求的实际系统设计方案的基础。从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟。一个软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计。软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作、逻辑和流程。
分布式计算在计算机科学中,分布式计算(英语:Distributed computing)。这个研究领域,主要研究分布式系统(Distributed system)如何进行计算。分布式系统是一组电脑(computer),通过网络相互链接传递消息与通信后并协调它们的行为而形成的系统2。组件之间彼此进行交互以实现一个共同的目标。把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,再上传运算结果后,将结果统一合并得出数据结论的科学。
分布式计算研究主要集中在分布式操作系统研究和分布式计算环境研究两个方面。在过去的 20 多年间出现了大量的分布式计算技术, 如中间件技术、 网格技术、 移动 Agent 技术、P2P 技术以及最近推出的 Web Service 技术等。每一种技术都得到了一定程度的认同, 在特定的范围内得到了广泛的应用。但是,所有分布式计算技术都没有得到全世界的公认, 没有一种技术能显示出是分布式计算技术的主流方向。技术的复杂性和多样性使得分布式计算机的研究十分活跃, 同时也使得分布式计算技术的普及非常困难。分布式系统的例子来自有所不同的面向服务的架构,大型多人在线游戏,对等网络应用。目前常见的分布式计算项目通常使用世界各地上千万志愿者计算机的闲置计算能力,通过互联网进行数据传输(志愿计算)。如分析计算蛋白质的内部结构和相关药物的Folding@home项目,该项目结构庞大,需要惊人的计算量,由一台电脑计算是不可能完成的。虽然现在有了计算能力超强的超级计算机,但这些设备造价高昂,而一些科研机构的经费却又十分有限,借助分布式计算可以花费较小的成本来达到目标。
HadoopHadoop是一款支持数据密集型分布式应用程序并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据谷歌公司发表的MapReduce和Google文件系统的论文自行实现而成。所有的Hadoop模块都有一个基本假设,即硬件故障是常见情况,应该由框架自动处理。
Hadoop框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce的编程范式:应用程序被分区成许多小部分,而每个部分都能在集群中的任意节点上运行或重新运行。此外,Hadoop还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。MapReduce和分布式文件系统的设计,使得整个框架能够自动处理节点故障。它使应用程序与成千上万的独立计算的电脑和PB级的数据。现在普遍认为整个Apache Hadoop“平台”包括Hadoop内核、MapReduce、Hadoop分布式文件系统(HDFS)以及一些相关项目,有Apache Hive和Apache HBase等等。
SparkApache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。Spark 主要有三个特点:首先,高级 API 剥离了对集群本身的关注,Spark 应用开发者可以专注于应用所要做的计算本身。其次,Spark 很快,支持交互式计算和复杂算法。最后,Spark 是一个通用引擎,可用它来完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。