Проблема несовместимости Hadoop и Druid с библиотекой Jackson

Я запускаю druid 0.9.0 в кластере Azure с пониманием HDP 2.4.1.1-3. Клиент Hadoop 2.7.1. После бесчисленных попыток решить проблему с Джексоном, в частности:

Error: class com.fasterxml.jackson.datatype.guava.deser.HostAndPortDeserializer overrides final method deserialize.

Я пробовал все обходные пути, описанные здесь

https://github.com/druid-io/druid/blob/master/docs/content/operations/other-hadoop.md

но безрезультатно.

Перекомпиляция не удалась после затенения зависимости Джексона, как предложил другой пользователь, столкнувшийся с той же проблемой.

Последний случай, который я пробовал, это добавление

"mapreduce.job.user.classpath.first": "true"

к свойству jobProperties моей задачи индексирования со следующими результатами:

Diagnostics: Exception from container-launch.
Container id: container_e02_1461544451524_0047_05_000001
Exit code: 1
Stack trace: ExitCodeException exitCode=1:
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:576)
    at org.apache.hadoop.util.Shell.run(Shell.java:487)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:753)
    at org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.launchContainer(LinuxContainerExecutor.java:371)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:303)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Shell output: main : command provided 1
main : run as user is nobody
main : requested yarn user is druid

Мы пытаемся запустить задание индексации.

Любая помощь будет оценена. Кто-нибудь добился успеха в той же настройке?


person Stelios Savva    schedule 27.04.2016    source источник


Ответы (1)


Происходит то, что версия jackson-datatype-guava имеет другую младшую версию, чем jackson-databind; наверное гуава одна новее. Версии должны совпадать, хотя некоторые комбинации будут работать; тот, который у вас есть, не имеет. Что, вероятно, происходит, так это то, что некоторые более ранние версии jackson-databind имеют определенный метод как final, но ограничения были ослаблены в более поздних версиях.

person StaxMan    schedule 06.05.2016