上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 53 下一页

Storm-源码分析- timer (backtype.storm.timer)

摘要: mk-timer timer是基于PriorityQueue实现的(和PriorityBlockingQueue区别, 在于没有阻塞机制, 不是线程安全的), 优先级队列是堆数据结构的典型应用 默认情况下, 按照自然顺序(其实就是默认comparator的定义), 最小的元素排在堆头 当然也可以自己重新实现comparator接口, 比如timer就用reify重新实现了comp... 阅读全文
posted @ 2013-07-02 14:39 fxjwind 阅读(1096) 评论(0) 推荐(0)

Storm-源码分析-Topology Submit-Supervisor

摘要: mk-supervisor (defserverfn mk-supervisor [conf shared-context ^ISupervisor isupervisor] (log-message "Starting Supervisor with conf " conf) (.prepare isupervisor conf (supervisor-isupervisor-dir con... 阅读全文
posted @ 2013-06-28 17:13 fxjwind 阅读(1896) 评论(0) 推荐(0)

Storm-源码分析- Multimethods使用例子

摘要: 1. storm通过multimethods来区分local和distributed模式 当调用launch-worker的时候, clojure会自动根据defmulti里面定义的fn来判断是调用哪个版本的launch-worker (defmulti launch-worker (fn [supervisor & _] (cluster-mode (:conf supervis... 阅读全文
posted @ 2013-06-28 16:39 fxjwind 阅读(707) 评论(0) 推荐(0)

Storm-源码分析- Storm中Zookeeper的使用

摘要: 在backtype.storm.cluster.clj中, 定义了storm对于Zookeeper的使用 ClusterState 首先定义操作Zookeeper集群的interface (defprotocol ClusterState (set-ephemeral-node [this path data]) (delete-node [this path]) (cre... 阅读全文
posted @ 2013-06-26 10:11 fxjwind 阅读(4708) 评论(0) 推荐(0)

Storm-源码分析-EventManager (backtype.storm.event)

摘要: Protocol and DataType 大体结构, 定义protocol EventManager, 其实就是定义interface 函数event-manager, 主要做2件事 1. 启动event queue的处理线程, 不断从queue中取出event-fn并执行 2. 返回实现EventManager的匿名record(reify部分, 实现protocol) ... 阅读全文
posted @ 2013-06-24 17:37 fxjwind 阅读(969) 评论(0) 推荐(0)

Storm-源码分析-Topology Submit-Nimbus

摘要: Nimbus Server Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus”来启动 看下源码, 此处和上面client不同, jvmtype="-server", 最终调用"backtype.storm.daemon.nimbus"的main nimbus是用clojure实现的, 但是clojure是基于JVM的, 所以在... 阅读全文
posted @ 2013-06-19 15:28 fxjwind 阅读(3056) 评论(5) 推荐(0)

Storm-源码分析-Topology Submit-Nimbus-mk-assignments

摘要: 什么是"mk-assignment”, 主要就是产生executor->node+port关系, 将executor分配到哪个node的哪个slot上(port代表slot, 一个slot可以run一个worker进程, 一个worker包含多个executor线程) 先搞清什么是executor, 参考Storm-源码分析- Component ,Executor ,Task之间关系 ;;... 阅读全文
posted @ 2013-06-19 15:22 fxjwind 阅读(2929) 评论(7) 推荐(0)

Storm-源码分析- Component ,Executor ,Task之间关系

摘要: Component包含Executor(threads)的个数 在StormBase中的num-executors, 这对应于你写topology代码时, 为每个component指定的并发数(通过setBolt和setSpout) Component和Task的对应关系, (storm-task-info) 默认你可以不指定task数, 那么task和exec... 阅读全文
posted @ 2013-06-18 15:43 fxjwind 阅读(4188) 评论(3) 推荐(0)

Storm-源码分析- Scheduler (backtype.storm.scheduler)

摘要: 首先看看IScheduler接口的定义, 主要实现两个接口, prepare和schedule 对于schedule的参数注释写的非常清楚, topologies包含所有topology的静态信息, 而cluster中包含了topology的运行态信息 根据他们就可以来判断如何assignment package backtype.storm.scheduler;impor... 阅读全文
posted @ 2013-06-14 17:41 fxjwind 阅读(2567) 评论(3) 推荐(0)

Storm-源码分析-Topology Submit-Client

摘要: 1 Storm Client 最开始使用storm命令来启动topology, 如下 storm jar storm-starter-0.0.1-SNAPSHOT-standalone.jar storm.starter.WordCountTopology 这个storm命令是用python实现的, 看看其中的jar函数, 很简单, 调用exec_storm_class, 其中jv... 阅读全文
posted @ 2013-06-05 15:52 fxjwind 阅读(3539) 评论(0) 推荐(0)
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 53 下一页