Transférer le fichier depuis HDFS
Je veux transférer des fichiers à partir de HDFS pour le système de fichiers local d'un autre serveur qui n'est pas dans le cluster hadoop, mais dans le réseau.
J'aurais pu faire:
hadoop fs -copyToLocal <src> <dest>
and then scp/ftp <toMyFileServer>.
Que les données est énorme et en raison de l'espace limité sur le système de fichiers local de hadoop à l'ordinateur de la passerelle, je voulais éviter cela et les données envoyées directement à mon serveur de fichiers.
S'il vous plaît aider avec quelques conseils sur la façon de traiter ce problème.
source d'informationauteur dipeshtech
Vous devez vous connecter pour publier un commentaire.
Donc, vous avez probablement un fichier avec un tas de pièces que pour la sortie de votre hadoop programme.
Donc permet de faire une partie à un moment?
Vous pourriez avoir à chercher le mot de passe modificateur de scp
C'est la façon la plus simple de le faire:
Il fonctionne pour les fichiers binaires.
Je pense que la solution la plus simple serait de montage réseau ou SSHFS pour simuler serveur de fichiers local directory local.
Vous pouvez également monter un serveur FTP à un répertoire local:
http://www.linuxnix.com/2011/03/mount-ftp-server-linux.html
Vous pourriez faire usage de webHDFS API REST pour le faire. Faire un
curl
de l'ordinateur où vous souhaitez télécharger les fichiers.Une autre approche pourrait être d'utiliser le
DataNode API
parwget
pour ce faire :Mais, de la façon la plus pratique, à mon humble avis, serait d'utiliser le NameNOde webUI. Depuis cette machine fait partie du réseau, vous pouvez simplement pointer votre navigateur web pour
NameNode_Machine:50070
. Après que naviguer à travers le HDFS, ouvrez le fichier que vous souhaitez télécharger et cliquez surDownload this file
.J'ai essayé de le faire aussi (j'ai été en utilisant de sécurité Kerberos). Cela m'a aidé après la petite mise à jour: https://hadoop.apache.org/docs/r1.0.4/webhdfs.html#OPEN
Exécuter directement
curl -L -i --negotiate "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=OPEN"
n'a pas fonctionné pour moi, je vais vous expliquer pourquoi.Cette commande fera en deux étapes:
trouver un fichier que vous souhaitez télécharger et de créer un lien temporaire - retour
307 Temporary Redirect
à partir de ce lien, il va télécharger les données de retour
HTTP 200 OK
.Le commutateur
-L
dit qu'il prend un fichier et de continuer avec le sciage directement. Si vous ajouter à la commande curl-v
il va connecter à la sortie; si oui, vous verrez décrite en deux étapes en ligne de commande, comme je l'ai dit. MAIS - parce qu'en raison de l'ancienne version de curl (dont je ne udpate), ça ne marchera pas.SOLUTION POUR CELA (en Coque):
Cette obtiendrez de liaison temporaire et l'enregistrer sur
$LOCATION
variable.Et cela permettra d'économiser votre fichier local, si vous ajoutez
-o <file-path>
.J'espère que cela a aidé.
J.