- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Storm的工作流程1.掌握Storm的基本架构 2.掌握Storm的工作流程1. Storm的基本架构 2. Storm的工作流程Storm的基本架构 Storm的工作流程 Storm的工作流程 (二)Storm的工作流程 (三)stream groupings消息分发策略1、Shuffle Grouping:随机分组2、Fields Grouping:按字段分组3、All Grouping:广播发送,对于每一个tuple,所有的Bolts都会收到。4、Global Grouping: 全局分组5、Non Grouping:不分组6、Direct Grouping:直接分组Storm的工作流程 (四)Streams:消息流,消息流是一个没有边界的tuple序列,而这些tuples会被以一种分布式的方式并行创建和处理。 Spout(获取消息源的组件)spout是topology消息生产者。 Bolt(消息处理者)消息处理逻辑被封装在bolts里面,Bolts可以做很多事情:过滤,聚合,查询数据库等。1. Storm的基本架构Nimbus、Supervisor、Worker、Topology、Spout/Bolt2. Storm的工作流程Nimbus:主节点Supervisor:从节点Worker:任务工作进程,可以存在多个,不同的任务有不同的Worker。Child:在Child的main函数中通过TaskUmbilicalProtocol协议,从TaskTracker获得需要执行的Task,并调用Task的run方法来执行Executor:Worker进程在执行任务时,会启动多个Executor线程Topology:Task任务的拓扑结构,是一个DAG有向无环图Spout:抽取数据并将数据进行分发的阶段Bolt:将分发的数据进行具体操作的阶段客户端新建Topology,定义spout和bolt的初始并发度(初始executor的并发数),并定义各个组件之间的流分组策略。 2.客户端重写spout的方法,确定spout发送信息的可靠性原则(通过调用acker和fail方法),并保证信息流的发送的畅通(调用nextTuple方法)。 3.客户端重写bolt的方法,确定数据处理的具体原则,和最终的结果存储原则。 4.客户端提交整体Topology到Nimbus,主节点查询Zookeeper中子节点的资源信息,确定规则(随机分配/轮循分配/hash值固定分配等)开始分配任务,并将任务与子节点的对应关系存放在Zookeeper中。 5.子节点Supervisor查询Zookeeper中的信息领取任务,分配具体的Worker以及executors执行具体的tasks。 6.每个子节点运行Topology的子集,且整个Storm集群初始化后不会停止,连续运行,直到受到kill相应的守护进程。客户端新建Topology,定义spout和bolt的初始并发度(初始executor的并发数),并定义各个组件之间的流分组策略。 2.客户端重写spout的方法,确定spout发送信息的可靠性原则(通过调用acker和fail方法),并保证信息流的发送的畅通(调用nextTuple方法)。 3.客户端重写bolt的方法,确定数据处理的具体原则,和最终的结果存储原则。 4.客户端提交整体Topology到Nimbus,主节点查询Zookeeper中子节点的资源信息,确定规则(随机分配/轮循分配/hash值固定分配等)开始分配任务,并将任务与子节点的对应关系存放在Zookeeper中。 5.子节点Supervisor查询Zookeeper中的信息领取任务,分配具体的Worker以及executors执行具体的tasks。 6.每个子节点运行Topology的子集,且整个Storm集群初始化后不会停止,连续运行,直到受到kill相应的守护进程。stream groupings消息分发策略1、Shuffle Grouping:随机分组,随机派发stream里面的tuple,保证每个bolt接收到的tuple数目相同。2、Fields Grouping:按字段分组,比如按userid来分组,具有同样userid的tuple会被分到相同的Bolts,而不同的userid则会被分配到不同的Bolts。3、All Grouping:广播发送,对于每一个tuple,所有的Bolts都会收到。4、Global Grouping: 全局分组,这个tuple被分配到storm中的一个bolt的其中一个task。再具体一点就是分配给id值最低的那个task。5、Non Grouping:不分组,这个分组的意思是说stream不关心到底谁会收到它的tuple。目前这种分组
文档评论(0)