我对 servicemix 和 osgi 还很陌生,我想知道是否有人在 servicemix 中使用带有 hadoop 2.x 集群的 camel hdfs 组件取得了任何成功。
我尝试了这个,但遇到了 IPC 版本不匹配问题。为了解决这个问题,我分叉了 camel-hdfs 组件,修改了 hadoop 依赖项,并且对组件进行了很少的更改,当部署为独立应用程序并通过所有测试时,它就可以正常工作。
现在的挑战是在 servicemix 中运行它,初始化 hadoop 类存在问题,即使我使用 wrap:* 命令将依赖的 hadoop 库包装为一个包。我得到的一个示例异常是
Exception in thread "SpringOsgiExtenderThread-78" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/HdfsBlockLocation
at
org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:125)
.....
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.fs.HdfsBlockLocation not found by wrap_mvn_org.apache.hadoop_hadoop-common_2.0.0-cdh4.2.0 [441]
at
org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:812)