Использование компонента camel-hdfs с Hadoop 2
Я довольно новичок в servicemix и osgi, мне было интересно, имел ли кто-нибудь какой-либо успех, используя верблюжий компонент hdfs с кластером hadoop 2.x в servicemix.
Я попытался это сделать, но у меня возникла проблема с ошибкой версии IPC. Чтобы обойти это, я разветвил компонент camel-hdfs, изменил зависимости hadoop и, практически не изменив компонент, начал работать при развертывании в качестве автономного приложения со всеми прохожденными тестами.
Теперь задача состоит в том, чтобы запустить его в servicemix, есть проблемы с инициализацией классов hadoop, хотя я оборачиваю зависимые библиотеки hadoop в пакет, используя команду wrap:*. Пример исключения, которое я получаю,
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.