综合百科

Storm原理和架构是什么

案例

统计用户ip所在地域的统计值

典型应用场景

请求应答(同步)

流式理 (异步)

-逐条处理

数据之间无关系:如实时日志格式标准化入库。

-分析处理

数据之间有关系(聚合等):如日志pv/uv统计、访问热点统计

DGA计算模型

tuple:数据处理单元

stream:持续的tuple流

spout:从外部获取数据,输出原始tuple

bolt:接收spout/bolt输出的tuple,处理、输出新tuple

grouping:tuple从上游到某个下游多个并发task的分组方式

--shuffleGrouping:随机发给某个下游task

--fieldsGrouping:按照某几个字段做hash取模,发给对应task

--allGrouping:发给下游全部task

Topology:一个应用的spout,bolt,grouping组合

Storm原理和架构

nimbus:集群的master,负责管理supervisor、调度topology

supervisor:负责运行topology的worker

worker:负责实际的计算和网络通信

zookeeper:负责存储以上模块的状态,做到高可用。

work是进程,是分配资源的单位,一个worker可以有多个executor,executor是线程,是处理的单位

executor执行spout.nextTuple()或bolt.execute(),调用emit生成新的tuple,放到executor的transfer queue

executor transfer thread 把自己transfer queue里面的tuple放到worker transfer queue

worker transfer thread 把transer queue里面的tuple发送到远程的worker

worker receive thread 分别从网络收数据,把tuple放到对应executor的receive queue

executor receive thread 从自己的reveive queue取出tuple,调用bolt.execute()

storm实战

启动drpc: bin/storm drpc

启动logviewr: bin/storm viewer

JavaAPI

-spout

nextTuple() 回调函数,循环触发

ack(id) 回调函数,消息成功处理时触发

fail(id) 回调函数,消息超时时触发

-bolt

execute(Tuple input) 回调函数,数据触发

collector.emit(tuple):通过collector向下游发送tuple

collector.ack(tuple):通过collector确认已经成功处理输入tuple

不一定要用java,有shellBolt

DAG图:无回路有向图(Directed Acyclic Graph)

到此,相信大家对“Storm原理和架构是什么”有了更深的了解,不妨来实际操作一番吧!这里是本站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!