storm学习1

视频学习的摘录

案例

统计用户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)


参考:http://www.chinahadoop.cn/course/57/learn#lesson/643

你可能感兴趣的:(storm)