Fork me on GitHub

hadoop + kafka + storm开发笔记

export 可执行jar包,在Launch Configuration找不到启动类:需要把启动类先执行一遍

hadoop 无法上传文件,提示没有datanode节点
a.关闭所有hadoop服务 b.删除/usr/hadoop/hdfs/下的data目录与name目录(此方法会导致数据丢失) c.重新格式化namenode节点 d.启动服务

Server IPC version 9 cannot communicate with client version 4错误 :原因是依赖了老版本的hadoop-core包,改为依赖hadoop-hdfshadoop-commonhadoop-client即可

<dependency>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
            <version>1.8</version>
            <scope>system</scope>
            <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
      </dependency>




java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder,pom添加依赖后依旧抛出此异常
将$HADOOP_HOME/share/hadoop/hdfs/lib 目录下htrace-core-3.1.0-incubating.jar拷贝到项目lib目录

jar包冲突,会导致不能向kafka发送消息,在相关依赖下添加:
<exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
 </exclusions>



storm中bolt会重复处理消息
处理完成后未向storm反馈,因此spout会重新发送数据
在bolt中添加collector.ack(input)


storm启动时抛出异常:backtype.storm.generated.InvalidTopologyException: null
一般都是定义输入、输出时有错误,目前遇到两种情况导致该异常:
a.需要向下一级输入时,没有declarer.declare(new Fields(...)) 定义相关的域
b.builder在setBolt方法后,指定上一级组件id时id写错,例如builder.setBolt("ruleBolt", new RuleBolt(), 1).shuffleGrouping("KafkaSpout") 中KafkaSpouot与上一级指定的id名不一致

 

posted @ 2017-01-11 14:20  夏天海岸线  阅读(207)  评论(0)    收藏  举报