zwan0518的专栏

本来是发表到科技论在线的,谁知道被退稿了,那就发到这里来吧。

0引言

随着互联网的发展,web2.0时期[1]的到来,,人类正式进入了信息爆炸时期的。海量的信息在很多应用都会出现,比如一些社交网络应用中记录用户行为日志通常都是以GB甚至是TB为单位的。常规的单机计算模式已经不能支撑如此巨大的数据量。所以,计算必须以分布式的把巨大的计算任务分成小的单机可以承受的计算任务,在这种情况下分布式计算框架与云计算[2]出现。

1分布式计算框架背景介绍

我们的互联网从Web 1.0迈入到如今的Web 2.0时期,互联网中的信息量以指数的速度增长着。每天互联网产生的数据量都是以TB的数据量不断生长。相对于传统的关系型数据的存储和计算,这些每天产生的数据大多都是非关系性的、而且没有固定格式的数据。这就对传统的基于关系型的数据存储与计算产生了挑战[3]。

相对于传统的数据计算,在Web2.0时期之前,在一个机器上对数据进行计算对于机器的配置完全是可以支撑的。相对于常见的服务器内存是100G,把所有计算数据都缓存进内存进行科学计算是可以实现的。但是在如今,对于一些应用的用户日志都是以TB为单位的,这些数据是不可能一次性的全部缓存进内存,即使可以对服务器的内存进行扩充,但是运算代价还是非常大。在这个时候必须有一定的运算机制可以把计算任务分担到多台机器上,让每台机器都承担一部分的计算和数据存储的任务。这就降低了对单机的配置要求,可以使用普通的机器进行科学计算。

但是对于分布计算的开发和维护中需要考虑的情形是非常复杂和多变的。在进行分布式计算过程中对计算过程中的控制信息的通信,每个任务的数据获取,对计算结果的合并和对错误计算的回滚,在分布式计算的时候都是需要保证运行正常[4]。如果这些任务全部都由开发人员负责,这对程序员的要求是非常高的。分布式计算框架的出现是为了解决这种瓶颈,通过分布式框架封装计算细节,完成分布式计算程序的开发。

通过使用分布式计算框架,程序员可以很容易的享受到分布式计算的带来的高速计算的好处,而且还不必对分布式计算过程中各种问题和计算异常进行控制。这就让程序员的开发效率成倍的提高。

本文就对当前的分布式计算框架进行了系统的回顾与总结。

2分布式框架2.1Hadoop分布式计算框架2.1.1框架介绍

Hadoop计算框架是出现比较早的一个分布式计算框架,它主要是基于Google提出的MapReduce的开发模式[5]下一个开源实现功能非常强大的分布式计算框架,由Java开发完成。Hadoop分布式计算框架包括两个部分,计算框架MapReduce与用来存储计算数据的存储框架HDFS(HadoopDistributed File System)。

2.1.2Hadoop任务执行介绍

MapReduce是一种计算架构设计,利用函数式编程思想把一个计算分成map与reduce两个计算过程。MapReduce把一个大的计算任务划分为多个小的计算任务,然后把每个小的计算任务分配给集群的每个计算节点,并一直跟踪每个计算节点的进度决定是否重新执行该任务,最后收集每个节点上的计算结果并输出。

MapReduce架构是基于JobTracker与TaskTracker的主从结构设计。JobTracker负责具体的任务划分和任务监视,并决定某个任务是否需要回滚;TaskTracker则是负责具体的任务执行,对每个分配给自己的任务进行数据获取,保持与JobTracker通信报告自己状态,输出计算结果等计算过程。

对任务输入,框架会首先通过JobTracker进行任务的切分,划分结束就发送到每个TaskTracker进行执行Map任务,Map结束之后为了让性能更加均衡会执行洗牌Shuffle操作,最后执行Reduce操作,输出结果。具体的任务执行如下图所示:

2.1.3HDFS介绍

分布式文件系统HDFS,它是一个基于分布式的对大文件进行存储的文件系统。HDFS具有高容错性[6]和对机器设备要求比较低等特点。HDFS对每个大文件分成固定大小的数据块,均衡的存储在不同的机器上,然后对每个数据文件进行备份存储,保证数据不会出现丢失。

HDFS集群也是基于名称节点NameNode与数据节点DataNode展开的主从架构设计。主节点名称节点负责整个集群的数据存储信息的存储,一个集群中只有一个名称节点,而从节点数据节点负责具体的数据存储,一般会有多个在集群中。如下图所示:

2.2Storm框架2.2.1框架介绍

Storm分布式计算框架是由Twitter提出由类Lisp语言开发推出的一个用来处理实时的大数据的基于流式计算的分布式框架。它的出现在一定程度上结局了Hadoop框架中的延迟比较大,后期程序运维复杂等特点,而且它还有Hadoop所不能支持的实时性、流式计算等特点。对一些实时性的数据分析,Storm具有非常高的效率。

Storm相比较于Hadoop,Storm拥有更多的功能组件,但是其主要功能是基于Nimbus和Supervisor两个功能组件展开,通过Zookeeper对组件进行生命周期的监视。Nimbus类似于Hadoop的JobTracker负责任务的分配与监视每个任务的状态;Supervisor是在每个工作机器上都部署,它负责监视这台机器并负责这台机器上工作进程启动。

2.2.2Storm任务执行介绍业精于勤,荒于嬉;行成于思,毁于随。

zwan0518的专栏

相关文章:

你感兴趣的文章:

标签云: