2010-01-14 4 views
1

Hadoop est actuellement livré avec commons-httpclient-3.0.1.jar dans son dossier lib. Si j'ai une tâche map/reduce qui nécessite commons-httpclient-3.1.jar, il ne semble pas suffisant de regrouper ce jar dans le dossier lib de mon hadoop jar (comme on le ferait avec n'importe quel externe normal jar dependencies), comme hadoop semble charger le jar précédent depuis son dossier lib et ne pas utiliser celui que j'ai fourni.Comment utiliser une version plus récente d'un hadoop/lib jar dans ma map/réduire les tâches?

Il n'est pas possible d'utiliser différentes versions de pots que hadoop utilise également?

Répondre

0

Si tout le reste échoue, utilisez le plugin maven-shade pour renommer le paquet de commons-httpclient afin que vous ayez le vôtre et hadoop a le sien.

0

Pour la version cdh4 hadoop, l'ajout du code ci-dessous dans l'objet de configuration hadoop devrait le résoudre.

S'il vous plaît noter que cela pas résoudre l'enfer jar dans le code principal (le code qui est exécuté avant la soumission), afin de résoudre, je suppose que nous devrions ajouter -D ou l'ajouter à Hadoop fichiers de configuration mais je ne l'ai pas encore vérifié

conf.set("mapreduce.task.classpath.user.precedence", "true"); 
conf.set("mapreduce.user.classpath.first", "true"); 
conf.set("mapreduce.job.user.classpath.first", "true"); 
Questions connexes