应用例子。
本文帮助读者快速实现一个jstorm 例子。
example 源码。
map conf = new hashmp();
/topology所有自定义的配置均放入这个map
topologybuilder builder = new topologybuilder();
/创建topology的生成器。
int spoutparal = get(""1);
/获取spout的并发设置。
spoutdeclarer spout =
new sequencespout(),spoutparal);
/创建spout, 其中new sequencespout() 为真正spout对象, 为spout的名字,注意名字中不要含有空格。
int boltparal = get(""1);
/获取bolt的并发设置。
boltdeclarer totalbolt = new totalcount(),boltparal).shufflegrouping(
/创建bolt, 为bolt名字,totalcount 为bolt对象,boltparal为bolt并发数,/shufflegrouping(
/表示接收的数据,并且以shuffle方式,/即每个spout随机轮询发送tuple到下一级bolt中。
int ackerparal = get(""1);
ackerparal);
/设置表示acker的并发数。
int workernum = get(""10);
workernum);
/表示整个topology将使用几个worker
"distributed");
/设置topolog模式为分布式,这样topology就可以放到jstorm集群上运行。
conf,/提交topology
irichspout 为最简单的spout接口。
irichspout
@override
public void close()
@override
public void activate()
@override
public void deactivate()
@override
public void nexttuple()
@override
public void ack(object msgid)
@override
public void fail(object msgid)
@override
public void declareoutputfields(outputfieldsdeclarer declarer)
@override
public map getcomponentconfiguration()
其中注意:spout对象必须是继承serializable, 因此要求spout内所有数据结构必须是可序列化的。
spout可以有构造函数,但构造函数只执行一次,是在提交任务时,创建spout对象,因此在task分配到具体worker之前的初始化工作可以在此处完成,一旦完成,初始化的内容将携带到每一个task内(因为提交任务时将spout序列化到文件中去,在worker起来时再将spout从文件中反序列化出来)。
open是当task起来后执行的初始化动作。
close是当task被shutdown后执行的动作。
activate 是当task被激活时,触发的动作。
deactivate 是task被deactive时,触发的动作。
nexttuple 是spout实现核心, nextuple完成自己的逻辑,即每一次取消息后,用collector 将消息emit出去。
ack, 当spout收到一条ack消息时,触发的动作,详情可以参考 ack机制
fail, 当spout收到一条fail消息时,触发的动作,详情可以参考 ack机制
declareoutputfields, 定义spout发送数据,每个字段的含义。
getcomponentconfiguration 获取本spout的component 配置。
irichbolt
@override
public void execute(tuple input)
@override
public void cleanup()
@override
public void declareoutputfields(outputfieldsdeclarer declarer)
@override
public map getcomponentconfiguration()
其中注意:bolt对象必须是继承serializable, 因此要求spout内所有数据结构必须是可序列化的。
bolt可以有构造函数,但构造函数只执行一次,是在提交任务时,创建bolt对象,因此在task分配到具体worker之前的初始化工作可以在此处完成,一旦完成,初始化的内容将携带到每一个task内(因为提交任务时将bolt序列化到文件中去,在worker起来时再将bolt从文件中反序列化出来)。
prepare是当task起来后执行的初始化动作。
cleanup是当task被shutdown后执行的动作。
execute是bolt实现核心, 完成自己的逻辑,即接受每一次取消息后,处理完,有可能用collector 将产生的新消息emit出去。 *在executor中,当程序处理一条消息时,需要执行 详情可以参考 ack机制 **在executor中,当程序无法处理一条消息时或出错时,需要执行 ,详情可以参考 ack机制
declareoutputfields, 定义bolt发送数据,每个字段的含义。
getcomponentconfiguration 获取本bolt的component 配置。
在m**en中配置。
jstorm-core
provided
打包时,需要将所有依赖打入到一个包中。
m**en-shade-plugin
packageshade
10 高级应用
1 在下面的空白位置插入数学公式 本部分提示 插入 对象 对象类型 microsoft 公式 3.0 1 在下面的 中计算出每位同学的总分 2 按照总分对 的行进行排序 本部分提示 公式 和 排序 1 设置正文中一级标题 二级标题的大纲级别 本部分提示 选中一级标题 二级标题,格式 段落 大纲级别 ...
写景作文例子
石头口门水库的月落。柔波万顷的湖畔静得可以听见呼吸的声音。月夜与水波便随着这一呼一吸而涌动着各自的柔情。远山黛色,在夜的背景下稀疏地静默着,也将人的目光延伸拉扯到很远很远。而那不甚明亮的月,在此刻,竟风情万种得让人怦然心动。犹如一块埋藏于地下千年之久的琥珀,灵性已蕴含于天地之间。内敛得如此从容淡定,...
写景作文例子
作文的具体要求。注 本篇作文是本册书最重要的一篇,我在讲课时用了好几节课详细地讲了写景文章地结构,观察顺序和写作方法。孩子书上都有批注。希望家长认真看习作要求,避免不合格返工。作文要求 1 要求写生活中的一处景物。景物范围不要过大,可以是一片小树林,或一条小河,一个街心花园,一棵大槐树,一个小公园,...