2013-11-01 50 views
3

我對servicemix和osgi相當陌生,我想知道是否有人在servicemix中使用帶有hadoop 2.x羣集的camel hdfs組件。在Hadoop 2中使用camel-hdfs組件

我試過這個,但得到了一個IPC版本的misatch問題。爲了解決這個問題,我分叉了camel-hdfs組件,修改了hadoop依賴關係,並且在組件發生很少變化時,它在作爲獨立應用程序進行部署並且所有測試都通過時得到了工作。

現在面臨的挑戰是在servicemix中運行它,即使我使用wrap:*命令將依賴的hadoop庫打包爲一個包,初始化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) 

回答

1

camel-hdfs支持Hadoop 1.1或1.2(取決於正在使用的Camel版本)。 此組件尚未升級到支持Hadoop 2.

而當您在ServiceMix中運行時,則需要OSGi捆綁包用於Hadoop 2.將它們作爲包裝安裝並非總是可行。

所以答案是,Hadoop還沒有被camel-hdfs支持。