常见分布式计算框架特点

Hadoop

Hadoop在使用原理上基本上遵照了MapReduce这种一种模式进行项目的实际开发与交互。将一个个任务分解成映射与合并两种方式。然而通过映射进行分类与简化,从而产生部分归并结果,然后对同类结果进行归并计算;

因为Hadoop的中间结果须要依托于hdfs,从而须要经历硬盘及网络io的过程所以在实时性方面表现稍差;

Hadoop主要处理hdfs上的文本文件。而文本文件内容本身也是半结构化的。

之前的资源调度就是靠当中的master,之后hadoop2.0之后引入yarn进行资源的统一管理。

Spark

Spark的原理是将任务进行分解。而且在每一步任务上进行对应的操作处理,同一时候依据操作处理顺序构建DAG图,从而应用DAG引擎进行相关操作。

因为Spark在进行处理时主要使用内存所以基本能够做到实时性。同一时候,在进行DAG引擎优化方面对速度也有一定程度提升;

Spark本身是通过DAGSchedulerTaskScheduler实现任务调度以及计算节点切换,如今mesosyarn都对spark进行了一定程度的支持;

Spark的数据模型使用RDD这样的弹性的存储,而且基于该数据模型构建了对应的数据依赖,从而实现一定的容错机制。

Spark基本上都执行在内存中,能够使用yarn或者mesos进行资源的统一管理。然后在上面进行spark的相关任务调度;

Storm

Storm是基于消息源(spout)获取数据发送信息,而且将信息发送到bolt形成对应的tuple,之后在此基础上继续构建数据的处理规则。处理规则须要觉得变成实现。

Storm本身是流式数据处理,所以在实现实时性方面有一定的优势;

Storm的数据模型没有体现依赖关系。没有进行特别的存储结构设计,同一时候在数据模型处理方面只进行结构设计而没有进行优化。

资源调度以及使用方面直接依照用户的i自己定义方式进行,须要用户编写大量的流程控制问题,同一时候没有在资源啊隔离放main做些谢智导致可能出现局部任务影响全局的问题。

LinkedIn Samza

领英出品,主要结合kafka的设计思想将数据进行分块,同一时候保证数据的局部有序性,而任务调度方面进行简单操作后进行输入与输出。

进行实时数据流处理。而且综合了Kafka这种消息队列;

通过类似于Kafka的数据结构。实现消息的分区、局部有序以及消息的重读机制,同一时候配合持久化方法可实现滑动窗体;

资源的管理主要借助于Yarn,利用消息队列的方式显现消息处理,同一时候通过备份方式显示数据局部容错;

Yahoo Apache S4

Yahoo出品。与Storm比較类似,基于每一个节点处理不同的功能,相同是组成了一个DAG图去描写叙述数据处理工作。

在雅虎内部使用。完毕每秒数以千计的搜索查询。

以事件没基础进行设计,将每一次数据当成是一个事件来处理

使用ZooKeeper进行分布式数据的管理。在内部实现了负载均衡、容错、分发、路由等功能;

posted @ 2016-01-09 14:35  zfyouxi  阅读(318)  评论(0编辑  收藏  举报