J'écris un script Shell pour mettre les données dans hadoop dès qu'elles sont générées. Je peux ssh sur mon nœud maître, copier les fichiers dans un dossier là-bas, puis les mettre dans hadoop. Je recherche une commande Shell pour se débarrasser de la copie du fichier sur le disque local sur le nœud maître. pour mieux expliquer ce dont j'ai besoin, vous trouverez ci-dessous ce que j'ai à ce jour:
1) copiez le fichier sur le disque local du nœud maître:
scp test.txt username@masternode:/folderName/
J'ai déjà configuré la connexion SSH à l'aide de clés. Aucun mot de passe n'est donc nécessaire pour ce faire.
2) Je peux utiliser ssh pour exécuter à distance la commande hadoop put:
ssh username@masternode "hadoop dfs -put /folderName/test.txt hadoopFolderName/"
ce que je recherche, c'est comment diriger/combiner ces deux étapes en une seule et ignorer la copie locale du fichier sur le disque local de masterNode.
merci
En d'autres termes, je veux diriger plusieurs commandes d'une manière que je peux
Essayez ceci (non testé):
cat test.txt | ssh username@masternode "hadoop dfs -put - hadoopFoldername/"
J'ai utilisé des astuces similaires pour copier des répertoires:
tar cf - . | ssh remote "(cd /destination && tar xvf -)"
Cela envoie la sortie de local -tar
dans l'entrée de remote -tar
.
Le nœud sur lequel vous avez généré les données est-il capable d'atteindre chacun de vos nœuds de cluster (le nœud de nom et tous les nœuds de données).
Si vous disposez d'une connectivité aux données, vous pouvez simplement exécuter la commande hadoop fs -put à partir de la machine sur laquelle les données sont générées (en supposant que les binaires hadoop y soient également installés):
#> hadoop fs -fs masternode:8020 -put test.bin hadoopFolderName/
(non testé)
Étant donné que le nœud où vous créez vos données a accès à Internet, vous pouvez peut-être installer le logiciel de nœud client hadoop, puis l'ajouter au cluster - après la sortie fs hadoop normale, puis déconnecter et supprimer votre nœud temporaire - le système hadoop devrait alors faire automatiquement la réplication de vos blocs de fichiers à l'intérieur de votre cluster hadoop