tail的特性
Tail适合文本源
不仅读取数据源,而且监听 一旦有变化,会把增量数据读取
类似与tomcat的日志输出
如果是Message Queue源的话,该特性没必要。
Storm-starter
官方提供的例子包
最好的学习资料
https://github.com/nathanmarz/storm-starter 下载地址
Maven:打包程序,比ant强大
mvn eclipse:eclipse
Fatjar eclipse 插件,特点: 慢,而且只能设一个main类
Maven的安装配置
下载maven直接解压
配置conf/setting
<localRepository>D:/Program Files/apache-maven-3.0.5-bin/maven_repo</localRepository>
<activeProfiles>
<activeProfiles>local</activeProfiles>
</activeProfiles>
<pluginGroups>
<pluginGroups>org.mortbay.jetty</pluginGroups>
</pluginGroups>
并添加到path中去
与Eclipse整合指定目录
指定配置文件
下载的项目中没有.classpath 可以通过mvn生成
mav eclipse:eclipse
下载所需jar包 并生成eclipse所需要的文件
-----------------------------
stream grouping就是用来定义一个stream应该如果分配给Bolts上面的多个Tasks。
storm里面有6种类型的stream grouping:
1. Shuffle Grouping: 随机分组, 随机派发stream里面的tuple, 保证每个bolt接收到的tuple数目相同。轮询,平均分配。
2. Fields Grouping:按字段分组, 比如按userid来分组, 具有同样userid的tuple会被分到相同的Bolts, 而不同的userid则会被分配到不同的Bolts。
3. All Grouping: 广播发送, 对于每一个tuple, 所有的Bolts都会收到。
4. Global Grouping: 全局分组, 这个tuple被分配到storm中的一个bolt的其中一个task。再具体一点就是分配给id值最低的那个task。
5. Non Grouping: 不分组, 这个分组的意思是说stream不关心到底谁会收到它的tuple。目前这种分组和Shuffle grouping是一样的效果,不平均分配。
6. Direct Grouping: 直接分组, 这是一种比较特别的分组方法,用这种分组意味着消息的发送者举鼎由消息接收者的哪个task处理这个消息。 只有被声明为Direct Stream的消息流可以声明这种分组方法。而且这种消息tuple必须使用emitDirect方法来发射。消息处理者可以通过TopologyContext来或者处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)