1上午学习了JStorm数据流组
spout和bolt都可以并发的执行多个任务,因此必须有一种方法指定哪个数据流路由到哪个spout/bolt,数据流组用来指定一个拓扑内的路由过程。
1) 随机数据流组,是比较常用的一种方式,它指定了一个参数——数据源组件,然后该数据源会向随机选择的bolt发送tuple,当然,JStorm会保证每个bolt接到任务的均衡性。实现方法:shuffleGrouping(“数据源ID”)。
2) 域数据流组,能保证拥有相同域组合的值集发送给同一个bolt。比如要统计一个单词在一个句子中出现的次数,就要用到域数据流组这种路由方式,因为,我们要保证把相同的单词发送给同一个bolt实例来做统计。实现方法:fieldsGrouping(“数据源Id”,new fields(“域名”)。
3) 全部数据流组,这种路由方式用于向所有bolt发送信号和命令。这种方式的适用场景和需求,我现在还不是特别理解,后面会继续学习研磨。实现方法:allGrouping(参数)。
4) 直接数据流组,数据源可以根据条件指定哪个bolt来接受tuple,它与域数据流组的区别在于它的条件是可以根据业务多变的,比如我们根据单词首字母或者尾字母决定由哪个bolt来接受这个tuple,而域数据流组一般是具有相同域的同一个bolt实例来接接收内容相同的tuple。实现方法:directGrouping(“数据源ID”)。
5) 全局数据流组,所有元祖到达拥有最小ID的bolt。
6) 自定义数据流组:用户可以通过实现CustormStreamGrouping接口创建自定义数据流组,根据业务需求来自定义哪些bolt接受哪些tuple,比较灵活。
2下午根据curator官方文档和API实现了用curator框架管理zookeeper的一个小demo。包括创建节点、修改、删除结点,查看数据等操作。根据导师安排,后面会用zookeeper自己的技术来实现以下这些基本功能,将两者做一对比。
spout和bolt都可以并发的执行多个任务,因此必须有一种方法指定哪个数据流路由到哪个spout/bolt,数据流组用来指定一个拓扑内的路由过程。
1) 随机数据流组,是比较常用的一种方式,它指定了一个参数——数据源组件,然后该数据源会向随机选择的bolt发送tuple,当然,JStorm会保证每个bolt接到任务的均衡性。实现方法:shuffleGrouping(“数据源ID”)。
2) 域数据流组,能保证拥有相同域组合的值集发送给同一个bolt。比如要统计一个单词在一个句子中出现的次数,就要用到域数据流组这种路由方式,因为,我们要保证把相同的单词发送给同一个bolt实例来做统计。实现方法:fieldsGrouping(“数据源Id”,new fields(“域名”)。
3) 全部数据流组,这种路由方式用于向所有bolt发送信号和命令。这种方式的适用场景和需求,我现在还不是特别理解,后面会继续学习研磨。实现方法:allGrouping(参数)。
4) 直接数据流组,数据源可以根据条件指定哪个bolt来接受tuple,它与域数据流组的区别在于它的条件是可以根据业务多变的,比如我们根据单词首字母或者尾字母决定由哪个bolt来接受这个tuple,而域数据流组一般是具有相同域的同一个bolt实例来接接收内容相同的tuple。实现方法:directGrouping(“数据源ID”)。
5) 全局数据流组,所有元祖到达拥有最小ID的bolt。
6) 自定义数据流组:用户可以通过实现CustormStreamGrouping接口创建自定义数据流组,根据业务需求来自定义哪些bolt接受哪些tuple,比较灵活。
2下午根据curator官方文档和API实现了用curator框架管理zookeeper的一个小demo。包括创建节点、修改、删除结点,查看数据等操作。根据导师安排,后面会用zookeeper自己的技术来实现以下这些基本功能,将两者做一对比。