Stavo provando a fare anche questo (stavo usando la sicurezza Kerberos). Questo mi ha aiutato dopo il piccolo aggiornamento: https://hadoop.apache.org/docs/r1.0.4/webhdfs.html#OPEN
Eseguire direttamente curl -L -i --negotiate "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=OPEN"
non ha funzionato per me, spiegherò perché.
Questo comando farà due fasi:
trovare un file che si desidera scaricare e creare un link temporaneo - ritorno 307 Temporary Redirect
da questo link si scaricherà un data - tornare HTTP 200 OK
.
Lo switcher -L
sta dicendo che lui prende un file e continuare con segatura direttamente. Se aggiungi il comando arricciatura -v
, eseguirà il log in output; se è così, vedrai due passaggi descritti in linea di comando, come ho detto. MA - perché a causa di una versione più vecchia di arricciatura (che non riesco a udire) non funzionerà.
soluzione per questo (in Shell):
LOCATION=`curl -i --negotiate -u : "${FILE_PATH_FOR_DOWNLOAD}?op=OPEN" | /usr/bin/perl -n -e '/^Location: (.*)$/ && print "$1\n"'`
In questo modo ottenere link temporaneo e salvarlo $LOCATION
variabile.
RESULT=`curl -v -L --negotiate -u : "${LOCATION}" -o ${LOCAL_FILE_PATH_FOR_DOWNLOAD}`
E questo farà risparmiare al vostro file locale, se si aggiunge -o <file-path>
.
Spero che abbia aiutato.
J.
Il fileserver può collegarsi direttamente al proprio namenode? –
No. Per ora, non si connette. Ma mi piacerebbe conoscere il tuo suggerimento. – dipeshtech
Farebbe un semplice tunnel SSH al proprio namenode e si connetterà dal proprio server. –