1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
jstorm分享

Jstorm分享索引Jstorm背景介绍Jstorm架构及数据模型Jstorm分配策略Jstorm Ack机制Jstorm实例及讨论背景介绍Storm是开源的分布式容错实时计算系统,核心采用Clojure实现Jstorm是阿里巴巴中间件团队用Java重新实现的类Storm,在网络IO、线程模型、资源调度、可用性及稳定性上做了持续改进,可被用于“连续计算”,对数据流做连续处理,在计算时就将结果以流的形式输出给用户。 Jstorm架构及数据模型 JStorm通过一系列基本元素实现实时计算的目标,其中包括了Topology、Stream、Spout、Bolt等等。 计算任务Topology是由不同的Spout和Bolt通过Stream连接起来的。下面是一个典型Topology的结构示意图:Jstorm架构及数据模型 Jstorm架构及数据模型 JStorm在模型上和MapReduce有很多相似的地方,下表从不同维度对JStorm和MapReduce进行了比较。Jstorm架构及数据模型对象介绍topology:一个拓扑是一个个计算节点组成的图,每个节点包换处理的逻辑,节点之间的连线表示数据流动的方向spout:表示一个流的源头,产生tuplebolt:处理输入流并产生多个输出流,可以做简单的数据转换计算,复杂的流处理一般需要经过多个bolt进行处理tuple:表示流中一个基本的处理单元,可以包括多个field,每个filed表示一个属性Jstorm架构及数据模型nimnus:主控节点,负责在集群中发布代码,分配工作给机器,并且监听状态supervisor:一个机器,工作节点,会监听分配给的工作,根据需要启动和关闭工作进程。woker:执行topology的工作进程,用于生成tasktask:每个spout和bolt都可以作为task在storm中运行,一个task对应一个线程Jstorm架构及数据模型实时计算任务需要打包成Topology提交,和MapReduce Job相似,不同的是,MapReduce Job在计算完成后结束,而JStorm的Topology任务一旦提交永远不会结束,除非显式停止。Jstorm 架构图Topology 流程图Jstorm分配策略Jstorm提供了6种stream group模型随机分组(Shuffle grouping):随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。字段分组(Fields grouping):根据指定字段分割数据流,并分组。例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。全部分组(All grouping):tuple被复制到bolt的所有任务。这种类型需要谨慎使用。Jstorm分配策略全局分组(Global grouping):全部流都分配到bolt的同一个任务。明确地说,是分配给ID最小的那个task。无分组(None grouping):你不需要关心流是如何分组。目前,无分组等效于随机分组。直接分组(Direct grouping):这是一个特别的分组类型。元组生产者决定tuple由哪个元组处理者任务接收。Custom Grouping:用户自定义分组策略,需要实现的接CustomStreamGrouping是自定义分组策略时用户口。Jstorm ACK机制 为保证无数据丢失,JStorm使用了非常漂亮的可靠性处理机制,当定义Topology时指定Acker,JStorm除了Topology本身任务外,还会启动一组称为Acker的特殊任务,负责跟踪Topolgogy DAG中的每个消息。每当发现一个DAG被成功处理完成,Acker就向创建根消息的Spout任务发送一个Ack信号。Topology中Acker任务的并行度默认parallelism hint=1,当系统中有大量的消息时,应该适当提高Acker任务的并行度。Jstorm ACK机制Jstorm ACK机制Acker任务保存了数据结构MapMessageID,Map TaskID, ValueMessageID: Acker 知道Spout任务的哪个消息被成功处理完成TaskID:Acker 当消息树处理完成后通知的Spout任务Value:一个64bit的长整型数字,是树中所有消息的随机 ID的异或结果。表示了整棵树的的状态,无论这棵树多大,只需要这个固定大小的数字就可以跟踪整棵树。当消息被创建和被应答的时候都会有相同的MessageID发送过来做异或。当Acker发现一棵树的Value值为0的时候,表明这棵树已经被成功处理完成。Jstorm ACK机制boltCspoutAboltBboltDA发

文档评论(0)

整理王 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档