本篇内容主要讲解“Storm原理和架构是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“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原理和架构是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。