08、Storm入门-Storm实战常见问题总结(持续更新)

一、本地环境log级别设置问题

storm-core-1.1.0.jar下面有个log4j2.xml文件,默认log级别是info。

<configuration monitorInterval="60">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
     <PatternLayout pattern="%-4r [%t] %-5p %c{1.} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="org.apache.zookeeper" level="WARN"/>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</configuration>

可以maven工程main/resources下面新建一个log4j2.xml文件,调整log级别。

<configuration monitorInterval="60">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
     <PatternLayout pattern="%-4r [%t] %-5p %c{1.} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="org.apache.zookeeper" level="WARN"/>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</configuration>

二、IRichBolt和IBasicBolt/BaseBasicBolt对比

对于spout,有ISpout,IRichSpout,BaseRichSpout

对于bolt,有IBolt,IRichBolt,BaseRichBolt,IBasicBolt,BaseBasicBolt

IBasicBolt,BaseBasicBolt不用每次execute完成都写ack/fail,因为已经帮你实现好了。

三、配置

storm里面有一堆参数可以配置来调整nimbus, supervisor以及正在运行的topology的行为, 一些配置是系统级别的, 一些配置是topology级别的。所有有默认值的配置的默认配置是配置在default.xml里面的。你可以通过定义个storm.xml在你的 classpath厘米来覆盖这些默认配置。并且你也可以在代码里面设置一些topology相关的配置信息 – 使用StormSubmitter。当然,这些配置的优先级是: default.xml < storm.xml < TOPOLOGY-SPECIFIC配置。