互联网如何海量存储数据

在互联网时代,由于海量数据处理操作非常频繁,很多研究者在从事支持海量数据处理的编程模型方面的研究。

以互联网为计算平台的云计算,将会更广泛地涉及海量数据处理任务。海量数据处理指的是对大规模数据的计算和分析,通常数据的规模可以达到TB甚至PB级别。在互联网时代,互联网数据的统计和分析很多是海量数据级别的,一个典型的例子就是搜索引擎。由于数据量非常大,一台计算机不可能满足海量数据处理的性能和可靠性等方面的要求。以往对于海量数据处理的研究通常是某种并行计算模型和计算机集群系统。并行计算模型可以支持高吞吐量的分布式批处理计算任务和海量数据,计算机集群系统则在通过互联网连接的机器集群上建立一个可扩展的可靠的计算环境。

在互联网时代,由于海量数据处理操作非常频繁,很多研究者在从事支持海量数据处理的编程模型方面的研究。例如,Remzi等人在1999年设计了River编程模型,开发人员可以基于该编程模型开发和执行计算任务。River编程模型的设计目的就是使得大规模计算机集群的编程和计算更加容易,并且获得极佳的计算性能。River编程模型有两个核心设计特性:高性能的分布式队列和一个存储冗余机制。因此,River需要对磁盘和网络的数据传输进行非常精心的调度。当今世界最流行的海量数据处理的编程模型可以说是由Google公司的Jeffrey Dean等人所设计的MapReduce编程模型。MapReduce编程模型将一个任务分成很多更细粒度的子任务,这些子任务能够在空闲的处理节点之间调度,使得处理速度越快的节点处理越多的任务,从而避免处理速度慢的节点延长整个任务的完成时间。下面我们将介绍MapReduce框架的工作原理和设计原则,从而加深读者对海量数据处理系统的理解。

MapReduce框架从Lisp及很多其他类似的语言获得灵感,研究人员发现大多数分布式运算可以抽象为Map和Reduce两个步骤,从而实现可靠、高效的分布式应用。Map步骤负责根据输入的key/value(键值)对生成中间结果,中间结果同样采用key/value对的形式。Reduce步骤则将所有的中间结果根据key进行合并,然后生成最终结果。开发者只需要实现Map和Reduce函数的逻辑,然后提交给MapReduce远行环境,计算任务便会在由大量计算机组成的集群上被自动、并行地调度执行。运行环境负责将输入数据进行分割、调度任务、自动处理运行过程中的机器失效,以及协调不同节点之间的数据通信。

MapReduce的运行环境由两种不同类型的节点组成:Master和Worker。Worker,负责数据处理,Master,负责任务调度及不同节点之间的数据共享。

本文来自信息化观察者网,转载请注明出处。


微信扫码加入本站知识星球下载6000+最新精选行业报告

发表评论