共计 1931 个字符,预计需要花费 5 分钟才能阅读完成。
这篇文章主要讲解了“Storm 编程入门知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“Storm 编程入门知识点有哪些”吧!
Storm 是什么?什么是流式计算
Storm 是一个分布式实时计算框架,适应于流式计算。所谓流式计算,你可以把它想像成你家的电表,电在流过电表时,电表就要计算耗用量,电表对耗用量的计算就是典型的流式计算。
下面介绍编程过程中需要用到的 Storm 的几个概念:
Topology
Topology 似于 Hadoop 中的 MapReduce Job,是一个用来编排、容纳一组计算逻辑组件(Spout、Bolt)的对象(Hadoop MapReduce 中一个 Job 包含一组 Map Task、Reduce Task),这一组计算组件可以按照 DAG 图的方式编排起来(通过选择 Stream Groupings 来控制数据流分发流向),从而组合成一个计算逻辑更加强大的对象,那就是 Topology。一个 Topology 运行以后就不能停止,它会无限地运行下去,除非手动干预(显式执行 bin/storm kill)或意外故障(如停机、整个 Storm 集群挂掉)让它终止。
Spout
Spout 是一个 Topology 消息源头,是一个可持续不断生产消息的组件,例如,它可以是一个 Socket Server 在监听外部 Client 连接并发送消息,可以是一个消息队列(MQ)的消费者、可以是用来接收 Flume Agent 的 Sink 所发送消息的服务,等等。Spout 生产的消息在 Storm 中被抽象为 Tuple,在整个 Topology 的多个计算组件之间都是根据需要抽象构建的 Tuple 消息来进行连接,从而形成流。
Bolt
Storm 中消息的处理逻辑被封装到 Bolt 中,任何处理逻辑都可以在 Bolt 里面执行,处理过程和普通计算应用程序没什么区别,只是需要根据 Storm 的计算语义来合理设置一下组件之间消息流的声明、分发、连接即可。Bolt 可以接收来自一个或多个 Spout 的 Tuple 消息,也可以来自多个其它 Bolt 的 Tuple 消息,也可能是 Spout 和其它 Bolt 组合发送的 Tuple 消息。
Stream Grouping
Storm 中用来定义各个计算组件(Spout、Bolt)之间流的连接、分组、分发关系。Storm 定义了如下 7 种分发策略:Shuffle Grouping(随机分组)、Fields Grouping(按字段分组)、All Grouping(广播分组)、Global Grouping(全局分组)、Non Grouping(不分组)、Direct Grouping(直接分组)、Local or Shuffle Grouping(本地 / 随机分组),各种策略的具体含义可以参考 Storm 官方文档、比较容易理解。
示例代码 storm-demo
storm-demo 是一个包含完整的 storm topology 的代码示例,有详尽的注释。
源码见: https://git.oschina.net/HuQingmiao/storm-demo.git
怎么把 storm 程序跑起来
### 本地模式 在本地开发时,不需要部署 storm,直接在 eclipse 或 IntelliJ idea 下运行即可,便于调试。 也可以通过命令行执行:java -jar jar 文件名 main 入口类
### 生产模式 先将你的应用程序打成 jar 包,但 jar 包中不要含有 storm 及相关日志包,即将 storm 及相关日志包的 scope 设为 provided 即可:
dependency
groupId org.apache.storm /groupId
artifactId storm-core /artifactId
version 0.9.5 /version
scope provided /scope
/dependency
再把应用程序 jar 包上传到 storm 结点(Nimbus),然后在结点上执行指令:
storm jar 你的应用程序.jar Main 入口类 参数 (topologId)
或
jstorm jar 你的应用程序.jar Main 入口类 参数 (topologId)
若要在在生产模式下停止这个 topology,则执行以下命令即可:
storm kill 参数 (topologId)
jstorm kill 参数 (topologId)
感谢各位的阅读,以上就是“Storm 编程入门知识点有哪些”的内容了,经过本文的学习后,相信大家对 Storm 编程入门知识点有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!