(4)你不知道的Hadoop和传统大数据处理方式的差别

更新于 2026年10月13日 版权声明
(4)你不知道的Hadoop和传统大数据处理方式的差别

传统大数据处理一般来说,有两个问题。

第一,硬盘越多,故障概率越高。如何解决硬盘故障是一个问题。

第二,如果把数据分开存储到100块硬盘上,那么我们使用的时候必须要合并使用。

在Hadoop中,我们可以采用MapReduce来解决这个问题。Hadoop中最核心的设计是MapReduce和HDFS,HDFS的主要功能是实现海量存储,MapReduce的主要功能是对海量数据进行分析处理。简单来说,Hadoop能提供一个稳定可靠的共享存储和分析系统。Hadoop还有其他功能,但是这两部分是我们所需要知道的,最重要的。

首先,Hadoop和其他系统的比较体现为:解放了以前存储在磁盘上的数据,能在短时间内处理以前很长时间才能获得的结果;使用Hadoop处理用户日志,即席查询找出用户的地理分布,通过整合大量数据,并使用MapReduce分析;可以了解到我们以前不曾留意的数据,运用这些数据可以改善我们现有的服务。

其次,将Hadoop和关系型数据库比较,HDFS和传统的RDBMS各自的优缺点见表13-1。HDFS采用流式数据读取模式,流式数据读取模式主要取决于数据的传输速率。RDBMS采用传统的B树,RDBMS中使用的B树结构,受限制于寻址的比例。一般来说,对于大数据量的读取,流式读取的效率要远远高于B树。但是只更新一小部分数据的话,传统的B树则更有优势。

表13-1 RDBMS与MapReduce之间的区别

图示

(续)

图示

MapReduce和RDBMS之间的另外一个区别在于他们所操作的数据集的结构化程度。

MapReduce可以非常有效地读取非结构化或半结构化数据,因为它只有在读取数据时才对数据进行解释。也就是说,MapReduce输入的key和value并不是固定的属性,而是由分析数据的用户来指定的,就像object map。(https://www.daowen.com)

RDBMS的数据往往是规范的,以保持其数据的完整性且不含冗余。但是这种规范的数据却给MapReduce的读取带来了麻烦,因为它使用异地操作进行记录的读取工作,并且MapReduce的核心价值之一就是可以进行高速流式读写操作。

例如,web server上的日志就是一种典型的非结构化、非规范化的数据记录,所以MapReduce非常适合分析各种这样的日志,比如用户登录日志。MapReduce是一种线性可伸缩的编程模式。

另外,如果输入的数据量是原来的两倍,那么运行的时间也是原来的两倍。但是,如果把集群的大小扩大到原来的两倍,那么运行的时间就和原来一样了。这个特性倒是比RDBMS好,不过现在很多RDBMS开始向着这方面发展,而MapReduce也开始具备了关系型数据库的一些特性。

再次,将Hadoop与其他传统工作方式进行比较,大概可以粗略地讲到网格计算。

专注于高性能计算(High Performance Computing,HPC)和网格计算(Grid Computing)的相关组织,多年来一直在研究大数据处理方法。一般主要采用类似于消息传递接口MPI(Message Passing Interface)的API。

HPC的方法是将任务分散到集群中的各台计算机上,这些计算机访问由存储区域网络[1](Storage Area Network,SAN)组成的共享文件系统。

MapReduce可以实现计算节点数据的本地化,无须考虑底层数据控制,也无须考虑节点失效。

最后,Hadoop和志愿计算的比较体现为志愿计算就是很多志愿者将自己的计算机空闲出来的CPU时间志愿贡献出来,用来协助计算一些大型的计算事务。

比较有名的项目有加利福尼亚大学的SETI@ home,该项目全称为Search for Extra-Terrestrial Intelligence(搜索外星智慧)。志愿者把自己计算机的CPU空闲时间贡献出来分析无线天文射电望远镜的返回数据,借此寻找外星智慧生命信号。

MapReduce的设计目标在于服务于那些只需要数分钟或者几小时就可以完成的即时任务,并运行于内部通过高速网络相互连接的系统内,并且这个系统内的计算机需要由可靠的,定制的硬件构成。此外,志愿计算需要在接入互联网的不可信的计算机上长时间运行,这些计算机具有不同的带宽,而且对数据本地化没有太多要求。

✍AI写作