摘要:
storm集群在生产环境部署之后,通常会是如下的结构。从图中可以看出zookeeper和supervisor都是多节点,任意1个zookeeper节点宕机或supervisor节点宕机均不会对系统整体运行造成影响,但nimbus和ui都是单节点。ui的单节点对系统的稳定运行没有影响,仅提供storm-ui页面展示统计信息。但nimbus承载了集群的许多工作,如果nimbus单节点宕机,将会使系统整体的稳定运行造成极大风险。因此解决nimbus的单点问题,将会更加完善storm集群的稳定性。 阅读全文
摘要:
Storm的源码共分为三个不同的层次。
首先,Storm在设计之初就考虑到了兼容多语言开发。Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用。
其次,Storm的所有接口都是Java语言来定义的。因此,尽管Storm中的很多功能实现都是Clojure代码,但是使用这些功能都必须通过Java API。这意味着Storm的所有特性对于Java来讲都是可用的。
第三,Storm的很大一部分实现都是Clojure代码。从代码行来看,差不多是一半Java代码,一半Clojure代码。但是由于Clojure在表达能力上更为见长,因此,实际上绝大多数逻辑的实现都是Clojure来做的。
接下来的小节里将会逐个详细解释这三个层次。 阅读全文
摘要:
Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:
1. Worker(进程)
2. Executors(线程)
3. Tasks 阅读全文
摘要:
相信很多使用Intellj IDE的朋友对其split screen功能赞赏有加!其实在eclipse中也可以方便地代码编辑多windows、多views!但是隐藏的有点深,很多朋友不常用到,甚至以为eclipse不支持。。。搜索引擎也很少相关的设置技巧,下面介绍下如何设置。 阅读全文
摘要:
实现了java代码中不import Assignment类即可从zookeeper获取clojure序列化的master_code_dir属性值。storm源码是clojure、java、python的混合体。在解决storm-0.8.2的nimbus单点问题的过程中需要从zookeeper上读取目前storm集群中正在运行的assignments信息,以获取其代码在nimbus机器上的绝对路径(PS:通过java代码实现自定义的storage)。 阅读全文
摘要:
twitter storm是由backtype公司创始人nathanmarz一手研发和开源的流计算(实时计算)框架,堪称实时计算领域的hadoop。nathanmarz也是在mac os x环境下开发和编译,因此本文介绍下如何在mac os x上编译twitter storm源码,希望对storm深入进行源码级学习和开发的朋友可以参考,本文以master上的0.9.0-wip21版本为例,其他旧版本大体类似。 阅读全文