Apache Storm是一个免费的开源分布式实时计算系统。 Storm可以轻松可靠地处理无限数据流,实现Hadoop对批处理所做的实时处理。 Storm非常简单,可以与任何编程语言一起使用,并且使用起来很有趣!
Storm有许多用例:实时分析,在线机器学习,连续计算,分布式RPC,ETL等。 风暴很快:一个基准测试表示每个节点每秒处理超过一百万个元组。 它具有可扩展性,容错性,可确保您的数据得到处理,并且易于设置和操作。
Storm集成了您已经使用的排队和数据库技术。 Storm拓扑消耗数据流并以任意复杂的方式处理这些流,然后在计算的每个阶段之间重新划分流。 阅读教程中的更多内容。
离线计算时什么?
批量获取数据,批量的传输数据,批量的存储数据,周期性计算数据,数据可视化
flume批量获取数据,sqoop批量传输,HDFS/hive/hbase批量存储,mr/hive计算数据,BI
实时计算:
数据实时产生(flume),数据实时传输(kafka),数据实时计算(storm/Jstorm),实时展示(dataV/quickBI/echart)
角色: hadoop storm
jobTracker nimbus
taskTracker supervisor
child worker
应用名称:job topology
编程接口:mapper/reducer spout/Bolt
数据流图如下:
tuple:元组 是消息传输的基本单元
Spout:水龙头 核心抽象,拓扑的流的来源,通常从外部获取数据转换为内部的源数据
主要方法:nextTuple->发出一个新的元组到拓扑
ack和fail。当Storm检测到一个从Spout吐出的元组在拓扑中成功处理完时调用ack,没有成功处理完时调用fail。只有可靠型的Spout会调用ack和fail函数
Bolt:过滤,业务、连接运算
topology:拓扑,是一个实时的应用程序,永远运行除非被杀死
spout到bolt是一个连接流。。。
spout<==>mapper
bolt<==>reducer
topolpy<==>driver
集群部署
apache-storm-1.2.1.tar.gz
配置参数
########### These MUST be filled in for a storm configuration
storm.zookeeper.servers:
- "192.168.8.128"
- "192.168.8.131"
- "192.168.8.132"
#设置主节点的主机名称
nimbus.seeds: ["192.168.8.128"]
ui.port: 9211 #### 8080
#storm.zookeeper.port:
# - 2181
supervisor.slots.ports:#Work的端口号
- 6700
- 6701
- 6702
- 6703
#数据存储路径
storm.local.dir: "/opt/storm-1.2.1/data"
#
同步到其他主机scp。。。
启动nimbus
storm nimbus &
启动supervisor
storm supervisor &
启动ui
storm ui &
192.168.8.128:9211
命令行操作
storm help --帮助
storm list --查看运行拓扑以及状态
storm version 查看版本
storm jar *.jar 全类名 拓扑名称
storm kill 【拓扑名称】 --终止拓扑程序
storm activate【拓扑名称】 激活拓扑程序
storm deactivate【拓扑名称】禁止拓扑名称