Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2214109
  • 博文数量: 436
  • 博客积分: 9833
  • 博客等级: 中将
  • 技术积分: 5558
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-29 10:27
文章存档

2013年(47)

2012年(79)

2011年(192)

2010年(118)

分类: 云计算

2011-09-25 14:02:35

基于hadoop大规模数据排序算法-万虎组-第一次报告

有关云计算相关核心技术的初步学习

组长:万虎
成员:万虎、牛庆亚、宋思梦、文滔、胡海砷


本次提交:牛庆亚

写在前面:

本次报告将介绍我们小组在这个项目中的前期进展,有关云计算涉及到的相关核心技术(传统)的学习情况。设计的内容是传统的技术,下面的内容仅是粗略的介绍,会在后期将有关的实现实例等陆续进行介绍,以便我们能够更加深入的理解云计算的(技术)基础。

在云计算初期,“云计算”有炒作概念的嫌疑,但是时间过去这么久了,各大商业公司的实际行动证明云计算并不是“虚”的,这些在云计算背后的技术基础上面也可以体现出来。“云计算”并不是一个全新的技术,我感觉它其实就是一种概念的整合,一种商业上的实现。
 
 

虚拟技术

    虚拟化技术是指计算任务在虚拟的基础上而不是真实的硬件基础上运行。虚拟化技术可以扩大硬件的

容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个

操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

完全虚拟化:

    使用名为hypervisor的一种软件,在虚拟服务器和底层硬件之间建立一个抽象层。VMware和微软的

Virtual PC是代表该方法的两个商用产品,而基于核心的虚拟机(KVM)是面向Linux系统的开源产品。

准虚拟化:

    完全虚拟化是处理密集型技术,因为它要求hypervisor管理各个虚拟服务器,并让它们彼此独立。减

轻这种负担的一种方法就是,改动客户操作系统,让它以为自己运行在虚拟环境下,能够与hypervisor协

同工作。这种方法就叫准虚拟化(para-virtualization)。

    Xen是开源虚拟化技术的一个例子。操作系统作为虚拟服务器在Xen hypervisor上运行之前,它必须在核心层面进行某些改变。因此,Xen适用于BSD、Linux、Solaris及其他开源操作系统,但不适合对 像Windows这些专有的操作系统进行虚拟化处理,因为它们无法改动。

分布式技术

分布式计算:

分布式计算是一种把需要进行大量计算的工程数据分割成小块,由多台计算机分别计算,在上传运算结果后,将结果统一合并得出数据结论的科学。分布式计算的概念和内涵上与集群技术有重叠,可参见集群相关技术内容。

分布式数据库:

分布式数据库是用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库。每个被连接起来的数据库单元称为站点或结点。分布式数据库有一个统一的数据库管理系统来进行管理,称为分布式数据库管理系统。

分布式数据库的基本特点包括:物理分布性、逻辑整体性和站点自治性。从这三个基本特点还可以导出的其它特点有:数据分布透明性、集中与自治相结合的控制机制、适当的数据冗余度和事务管理的分布性。

分布式文件系统( Distributed File System ):

    分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计应满足透明性、并发控制、可伸缩性、容错以及安全需求等。目前活跃的分布式文件系统项目有:Hadoop,GFS,DFS等。

集群技术

它通过一组松散集成的计算机软件和/或硬件连 接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。

高可用性集群:

    一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。这类集群典型的软件是著名的Heartbeat项目。

负载均衡集群:

     负载均衡集群运行时,一般通过一个或者多个前端负载均衡器,将工作负载分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。这样的计算机集群有时也被称为服务器群(Server Farm)。 一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。

     Linux虚拟服务器(LVS)项目在Linux操作系统上提供了最常用的负载均衡软件。

高性能计算/并行计算
      高性能计算集群采用将计算任务分配到集群的不同计算节点提高计算能力,因而主要应用在科学计算领域。比较流行的HPC采用Linux操作系统和其它一些免费软件来完成并行运算。这一集群配置通常被称为Beowulf集群。这类集群通常运行特定的程序以发挥HPC cluster的并行能力。这类程序一般应用特定的运行库, 比如专为科学计算设计的MPI库。

    HPC集群特别适合于在计算中各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果或影响到其它节点计算结果的情况。

网格计算

    网格计算或网格集群是一种与集群计算非常相关的技术。网格与传统集群的主要差别是网格是连接一组相关并不信任的计算机,它的运作更像一个计算公共设施而不是一个独立的计算机。还有,网格通常比集群支持更多不同类型的计算机集合。

    网格计算是针对有许多独立作业的工作任务作优化,在计算过程中作业间无需共享数据。网格主要服务于管理在独立执行工作的计算机间的作业分配。资源如存储可以被所有结点共享,但作业的中间结果不会影响在其他网格结点上作业的进展。

 

   除此之外,因为云计算是一种新型的超级计算方式,以数据位中心,我们在学习的过程中,也应该以学习它的数据存储、数据管理、编程模式为主。

数据存储

    为保证高可用、高可靠、和经济性,云计算采用分布式存储的方式来存储数据,采用冗余存储的方式来保证存储数据的可靠性,即为同一份数据存储多个副本。另外,云计算系统需同时满足大量永和的需求,它的数据存储技术必须具有较高的吞吐率和传输率的特点。基于这些要求,主要的数据存储技术有谷歌的非开源的GFS(Google File System)和Hadoop 开发团队开发的GFS的开源实现HDFS(Hadoop Distributed File System)。

数据管理技术

    鉴于其数据量的巨大,数据管理技术必须能够高效地管理大量数据。其次,如何在海量数据中找到特定数据也是云计算数据管理技术所必须剞劂的问题。由于对数据的读操作的频率远远大于数据的更新操作的频率,所以,云系统采用的是数据库领域中列存储的数据管理模式。将表按列划分后存储。最著名的技术是谷歌提出的BingTable数据管理技术。

编程模式

    云计算大部分采用Map-Reduce的编程模式。程序员在map函数中指定对各分块数据的处理过程,在Reduce函数中指定如何对分块数据处理的中间结果进行归约。用户只需指定map和reduce函数来编写分布式的并行程序。当在集群上运行Map-reduce程序是,程序员不需要关心如何将输入的数据分块、分配和调度,同时系统还将处理集群内节点失败以及节点间通信的管理等。如下图


下次报告预告
 第二次报告会继续按照第零次报告中的规划,继续介绍云计算背后的基础技术。然后会正式转入Hadoop的学习实践。敬请期待。

参考资料:

由于本次参考的内容比较零乱,未能一一整理。请见谅,会在后期陆续补上。

阅读(1233) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~