近几日写的Storm集群应用需要用到java本地调用,调用中科院的分词工具统计微博信息。当然,很简单的一个应用,但是在本地调用Native Method上面出现了各种问题,解决后还有第三方库的调用问题。
当然,用eclipse进行storm本地模式的编译运行基本是没什么问题的,因为可以手动添加classpath。但是一旦倒出jar包,那么在storm集群上的运行可能就会出现第三方jar包找不到的问题。可以试一下以下几种方式。
- 如果你只需要一个第三方库(或者不多),那么之间将集群的每台节点上面的CLASSPATH添加上你需要的jar的路径。
- 将jar拷贝到storm lib中。一般是 $STORM_HOME/lib。
- 如果还不行,不妨试一下编辑$STORM_HOME/conf下面的storm.yaml文件,加入 java.library.path: “/usr/local/lib:/opt/local/lib:/usr/lib:你的lib目录”。
注意,”:”后面有一个空格,java.library.path前面也有空格。
不管怎样,我经过N次调试,算是成功了。
PS,尽量还是不要做用java调c这样麻烦的事情最好!