java - 在 Hadoop 2 中使用 camel-hdfs 组件

标签 java hadoop apache-camel hdfs apache-servicemix

我是 servicemix 和 osgi 的新手,我想知道是否有人在 servicemix 中将 camel hdfs 组件与 hadoop 2.x 集群一起使用取得了成功。

我尝试过此操作,但遇到了 IPC 版本不匹配问题。为了解决这个问题,我 fork 了 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)

最佳答案

camel-hdfs 支持 Hadoop 1.1 或 1.2(取决于使用的 Camel 版本)。 此组件尚未升级以支持 Hadoop 2。

当您在 ServiceMix 中运行时,您将需要 Hadoop 2 的 OSGi bundle 。将它们作为包装安装并不总是可行的。

所以答案是,camel-hdfs 尚不支持 Hadoop。

关于java - 在 Hadoop 2 中使用 camel-hdfs 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19725849/

相关文章:

hadoop - Hortonworks CREATE-USER FAILURE密码不符合密码策略要求

java - 如何在java unicode中读取€字符

java - 运行汉诺塔时的奇怪行为

java - 最后批量更新: connection. commit(),使用setAutoCommit(false),但数据没有回滚

hadoop - Cloudera无法识别主机

hadoop - 在 MapReduce Hadoop 中排序

java - 将 Java 文本框链接到外部类中的字符串

java - 如何在 Android 中禁用 NumberPicker 元素外部的滚动

java - Camel : Write Message to WMQ

mysql - Fuse ide如何定义数据库表端点