hadoop vs 其它系统

hadoop作为数据存储、分析的分布式系统对比其它系统(如SQL数据库、网格计算等)有哪些优势。那么下面各自介绍一些它们的不同点。


SQL数据库

我们知道hadoop是一个大数据处理的框架,但是当下数据处理与查询的主力依然是各个厂家的关系型数据库(SQL数据库)。那么对比SQL数据库hadoop有什么优势:

1、SQL数据库处理的都是结构化数据,而hadoop是支持非结构化数据的处理,比如文本、图像等。从这个角度讲,hadoop对比SQL数据库多了一个通用的模式。

2、向外扩展替代向上扩展。原理上hadoop和SQL数据库是可以互相做弥补的,因为SQL只是一种查询语言,它可以把hadoop做为它的一个引擎支持。但是现阶段,SQL数据库通俗的讲就是几个主要产商的关系型数据库产品(如Oracle、mysql、SQLserver等)。他们这些产品现阶段无法做到满足hadoop的分布式设计方面的需求。所以SQL数据库现阶段只能更适合业务系统当中数据集的点查询、更新以及数据的插入。而hadoop更适合那种一次写入,多次进行批处理的大数据集的应用。

在性能扩展上,关系型数据库更容易进行向上扩展,通过提升机器的性能,容量,计算速率来适应更大量的数据集。而Hadoop通过可以通过增加集群的机器进行向外扩展,从而提高整体的计算性能。

3、利用键值对替换表关系。关系型数据库的数据都是按照特定的表结构存储在表中,而Hadoop中,数据来源不管是结构化数据或者非结构化数据,最后都转换为键值对进行处理。

4、利用MapReduce函数编程来替代SQL语句查询获取数据结果。我们知道关系型数据库是利用编写SQL语句,然后数据库引擎解析语句后获取想要数据的一个过程。而hadoop则是利用编程和脚本对数据进行相应的处理后返回结果,在这处理过程中,你可以根据实际需求建立一些复杂的统计模型。

但是在实际应用中会发现,MapReduce计算模型并不适合那种对数据集中几条数据进行随机读写的在线事务处理模式。它更适合进行离线大数据集的数据分析。因此,它们两者是互补的关系,可以利用hadoop作为关系型数据库的数据仓库,来提高大数据分析的能力。


网格计算

网格计算的概念:它是分布式计算当中的一种,它研究如何把一个需要非常大计算能力的任务划分成一个个子任务,然后分配给许多计算机进行处理,然后把这些计算结果综合起来得到最终结果。比如现在利用网格计算使用世界成千上万志愿者的闲置的CPU进行计算,通过互联网来分析外太空的电讯号,寻找隐藏黑洞,搜索外星生命体。

Hadoop是在近几年开始快速发展起来的一种分布式框架。在它出现之前,网格计算一直是处理大数据集问题上使用的主要方法和工具。它常用消息传递接口提供的API来处理大数据计算。它的设计思想是将计算任务分散到各个集群的计算机上,集群计算机节点通过访问共享文件系统中进行数据的获取,然后在各自节点进行计算,最后再汇总结果。

乍一看,它的设计思路怎么和MapReduce模型一样。但是当数据集达到PB级别时,网格计算的一个弊端就出现了,那是网格计算的数据集都存放在一个共享文件系统当中,那么获取大数据集时会受到网络带宽的限制,读取数据变慢,导致很多集群节点只能空闲等待数据。而hadoop却不存在这种问题,因为hadoop增加了一个HDFS的分布式的文件系统。所有的计算的数据都在本机节点上,即可在集群节点上完成本地化计算。

而且,Hadoop 的MapReduce 却是一个高度抽象的并行编程模型,它将分布式并行编程抽象为两个原语操作,即map 操作和reduce 操作,开发人员只需要简单地实现相应的接口即可,完全不用考虑底层数据流、容错、程序的并行执行等细节。这种设计无疑大大降低了开发分布式并行程序的难度。