分布式的概念
所谓分布式,狭义的指代以Google的三驾马车,GFS、Map/Reduce、BigTable为框架核心的分布式存储和计算系统。Hadoop是一个基于Java实现的,开源的,分布式存储和计算的项目。作为这个领域最富盛名的开源项目,Hadoop实现的是分布式的文件系统HDFS,和分布式的计算(Map/Reduce)框架。
分布式架构关键技术主要有分布式文件系统、分布式存储和分布式数据库。
分布式文件系统
分布式文件系统,在整个分布式系统体系中处于最低层最基础的地位。分布式文件系统包含是分布式和文件系统这两个方面的内涵。
从文件系统的客户使用的角度来看,它就是一个标准的文件系统,提供了一系列API,由此进行文件或目录的创建、移动、删除,以及对文件的读写等操作。
从内部实现来看,分布式的系统则不再和普通文件系统一样负责管理本地磁盘,它的文件内容和目录结构都不一定存储在本地磁盘上,而是可能通过网络传输到远端系统上。同时,同一个文件存储不只是在一台机器上,而是在一簇机器上分布式存储,协同提供服务,即所谓“分布式”。
分布式计算狭义的指代“按GoogleMap/Reduce框架所设计的分布式框架”。分布式文件系统是为各种分布式计算需求所服务的。从分布式的角度上看,分布式计算的输入文件往往规模巨大,且分布在多个机器上,单机计算完全不可支撑且效率低下,因此Map/Reduce框架需要提供一套机制,将此计算扩展到无限规模的机器集群上进行。它将复杂的运行于大规模集群上的并行计算过程高度的抽象到了两个函数,Map和 Reduce。。适合用 MapReduce 来处理的数据集(或任务)有一个基本要求:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
MapReduce的计算过程就是将大数据集分解为成百上千的小数据集,每个(或若干个)数据集分别由集群中的一个结点(一般就是一台普通的计算机)进行处理并生成中间结果,然后这些中间结果又由大量的结点进行合并,形成最终结果。 计算模型的核心是 Map 和 Reduce 两个函数,这两个函数由用户负责实现,功能是按一定的映射规则将输入的<key, value> 对转换成另一个或一批<key, value> 对输出。 基于 MapReduce计算模型编写分布式并行程序非常简单,程序员的主要编码工作就是实现 Map 和 Reduce函数,其它的并行编程中的种种复杂问题,如分布式存储,工作调度,负载平衡,容错处理,网络通信等,均由 MapReduce框架负责处理,程序员完全不用处理。
分布式数据库具备高可用、高扩展等特点,解决了传统数据库无法解决的问题。
分布式数据库解决方案具备两个特点:第一、具有弹性可扩展性;第二、单点不可靠、但整个集群是可靠。分布式数据库是未来数据库或者互联网应用比较青睐的数据库。
分布式数据库和传统的关系型数据库还有一定的区别。传统的数据库有非常强的事务能力,因其一致性高导致它的扩展性非常复杂;对于互联网企业来讲它更多关注的不是一致性,只需要在最终的数据一致性就可以,这样导致出现传统的数据库解决不了企业应用的问题,然后就会出现分布式数据库解决方案。
分布式的数据库解决方案不代表传统数据库的终结,因为传统的数据库有它的用武之地,分布式的数据库在它的应用场景当中会应用起来。未来,分布式数据库和传统的关系型数据库它们应该是互相弥补、互相结合的。