Para esclarecer alguns pontos da sua pergunta. Se você precisar adicionar jars ao classpath, poderá fazer isso de várias maneiras:
- Dure os potes no frasco do seu trabalho (a chamada abordagem jar-in-jar), onde cada um dos jarros de dependência é colocado em uma pasta lib do jar do job principal
- Faça o upload dos jars para o HDFS e altere sua configuração de trabalho para incluir esses jars no caminho de classe no mapa / reduzir o tempo de execução (
DistributedCache.addFileToClassPath(new Path("hdfs://namenode:8020/myapp/mylib.jar"), job);
) - Como acima, mas faça o cliente do trabalho fazer o trabalho de fazer upload do jar para o HDFS e configurar o cache distribuído (supondo que você esteja usando o ToolRunner.run () para iniciar seu trabalho):
hadoop jar myjar.jar org.MainClass -libjars dep1.jar,dep2.jar
LD_LIBRARY_PATH é usado para bibliotecas compartilhadas nativas (código C compilado). Se você quiser incluir as bibliotecas .so, pode usar a opção -files (semelhante ao exemplo anterior de libjars) para fazer com que o jobclient carregue o .so para o HDFS e configure cada tarefa de mapeamento / redução para incluí-lo no java .library.path propeerty: hadoop jar myjar.jar org.MainClass -files libIOProcs.so