Hadoop a le paramètre de configuration hadoop.tmp.dir
qui, selon la documentation, est `" Une base pour d'autres répertoires temporaires. " Je suppose que ce chemin fait référence au système de fichiers local.
J'ai défini cette valeur sur /mnt/hadoop-tmp/hadoop-${user.name}
. Après avoir formaté le namenode et démarré tous les services, je vois exactement le même chemin créé sur HDFS.
Est-ce à dire, hadoop.tmp.dir
fait référence à un emplacement temporaire sur HDFS ?
C'est déroutant, mais hadoop.tmp.dir
est utilisé comme base pour les répertoires temporaires localement, et aussi dans HDFS . Le document n'est pas génial, mais mapred.system.dir
est défini par défaut sur "${hadoop.tmp.dir}/mapred/system"
, et cela définit le Chemin sur le HDFS où le framework Map/Reduce stocke les fichiers système.
Si vous souhaitez que ces éléments ne soient pas liés, vous pouvez modifier votre mapred-site.xml
telle que la définition de mapred.system.dir n'est pas liée à ${hadoop.tmp.dir}
Permettez-moi d'ajouter un peu plus à la réponse de kkrugler:
Il existe trois propriétés HDFS qui contiennent hadoop.tmp.dir
dans leurs valeurs
dfs.name.dir
: répertoire où namenode stocke ses métadonnées, avec la valeur par défaut ${hadoop.tmp.dir}/dfs/name
.dfs.data.dir
: répertoire où sont stockés les blocs de données HDFS, avec la valeur par défaut ${hadoop.tmp.dir}/dfs/data
.fs.checkpoint.dir
: répertoire où le namenode secondaire stocke ses points de contrôle, la valeur par défaut est ${hadoop.tmp.dir}/dfs/namesecondary
.C'est pourquoi vous avez vu le /mnt/hadoop-tmp/hadoop-${user.name}
dans votre HDFS après formatage du namenode.
J'ai jeté un coup d'œil aux informations sur celui-ci. La seule chose que j'ai pu trouver était ce post sur le Amazon Elastic MapReduce Dev Guide :
Dans hadoop-site.xml, nous avons défini hadoop.tmp.dir sur/mnt/var/lib/hadoop/tmp./mnt est l'endroit où nous montons les volumes EC2 "supplémentaires", qui peuvent contenir beaucoup plus de données que le volume par défaut. (Le montant exact dépend du type d'instance.) RunJar.Java de Hadoop (le module qui décompresse les fichiers JAR d'entrée) interprète hadoop.tmp.dir comme un chemin d'accès au système de fichiers Hadoop plutôt que comme un chemin local, il écrit donc dans le chemin d'accès dans HDFS d'un chemin local. HDFS est monté sous/mnt (en particulier/mnt/var/lib/hadoop/dfs /. Vous pouvez donc y écrire de nombreuses données.