- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于案例讲解Storm实时流计算
基于案例讲解Storm实时计算目录Storm的应用场景举例Storm简介Storm的主要特点Storm组件Storm编程模型Storm安装Storm实例讲解Storm的应用场景举例电商实时推荐车辆7*24小时监控淘宝双十一实时销售额统计电信行业重大节假日实时保障监控Storm简介1. Storm是一个分布式的、容错的实时计算系统,它采用Clojure编写的2. Storm可被用于“流处理”之中,实时处理消息并更新数据库3. Storm可以进行连续查询并把结果即时反馈给客户,比如将Twitter上的热门话题发送到客户端4. Storm可以用来并行处理密集查询,Storm的拓扑结构是一个等待调用信息的分布函数,当它收到一条调用信息后,会对查询进行计算,并返回查询结果。Storm的主要特点1.简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。2.可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。3.水平扩展。计算是在多个线程、进程和服务器之间并行进行的。4.可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。5.快速。系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其底层消息队列。6.本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。Storm组件首先我们通过一个 storm 和hadoop的对比来了解storm中的基本概念。hadoopstorm系统角色JobtrackerNimbusTasktrackerSupervisorChildWorker应用名称JobTopology组件接口M/RSpout/Bolt运行状态数据处理完就结束一旦运行,根本停不下来。。。Nimbus:负责资源分配和任务调度。Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。Worker:运行具体处理组件逻辑的进程。Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,同一个spout/bolt的task可能会共享一个物理线程,该线程称为executor。Storm组件下面这个图描述了以上几个角色之间的关系。SupervisorzookeeperSupervisor主控节点,用于提交任务,分配集群任务,监控集群状态WorkerSupervisorWorker具体的处理逻辑组件NimbuszookeeperWorkerSupervisorSupervisorzookeeper接受Nimbus分配的任务,管理自己的Worker进程Supervisor协调,存放集群的公共数据(心跳,集群状态,配置信息),Nimbus分配给Supervisor的任务Storm组件在storm中,应用程序的实现实时处理的逻辑被封装在Topology中一个Topology是由Spout组件(数据源)和Bolt组件(数据操作)通过Stream Groupings进行连接的Topology=120实时监控超速车辆在高速上,速度是否120120存入超速数据库Spout数据源是否在高速上80不在高速上,速度是否80=80Storm组件简而言之,Spout从来源处读取数据并放入topology。Spout分成可靠和不可靠两种;当Storm接收失败时,可靠的Spout会对 tuple(元组,数据项组成的列表)进行重发;而不可靠的Spout不会考虑接收成功与否只发射一次。而Spout中最主要的方法就是 nextTuple(),该方法会发射一个新的tuple到topology,如果没有新tuple发射则会简单的返回一个Topology是由Spout组件(数据源)和Bolt组件(数据操作)通过Stream Topology中所有的处理都由Bolt完成。Bolt可以完成任何事,比如:连接的过滤、聚合、访问文件/数据库、等等。Bolt从Spout中接收数据并进行处理,如果遇到复杂流的处理也可能将tuple发送给另一个Bolt进行处理。而Bolt中最重要的方法是execute(),以新的tuple作为参数接收。不管是Spout还是Bolt,如果将tuple发射成多个流,这些流都可以通过declareStream()来声明。SpoutBoltStorm组件Stream Grouping定义了一个流在Bolt任务间该如何被切分。随机分组(Shuffle grouping):随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。字段分组(
文档评论(0)