Estaba intentando hacer esto también (estaba usando la seguridad de Kerberos). Esto me ayudó después de una pequeña actualización: https://hadoop.apache.org/docs/r1.0.4/webhdfs.html#OPEN
Ejecutar directamente curl -L -i --negotiate "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=OPEN"
no funcionó para mí, explicaré por qué.
Este comando va a hacer dos pasos:
encontrar un archivo que desea descargar y crear un vínculo temporal - volver 307 Temporary Redirect
desde este enlace se descargará un conjunto de datos - volver HTTP 200 OK
.
El conmutador -L
está diciendo que él toma un archivo y continuar con el aserrado directamente. Si agrega al comando curl -v
, se registrará en la salida; si es así, verás dos pasos descritos en la línea de comando, como dije. PERO - porque debido al enrollamiento de la versión anterior (que no puedo borrar) no funcionará.
solución para esto (en Shell):
LOCATION=`curl -i --negotiate -u : "${FILE_PATH_FOR_DOWNLOAD}?op=OPEN" | /usr/bin/perl -n -e '/^Location: (.*)$/ && print "$1\n"'`
Esto conseguirá enlace temporal y guardarla en $LOCATION
variable.
RESULT=`curl -v -L --negotiate -u : "${LOCATION}" -o ${LOCAL_FILE_PATH_FOR_DOWNLOAD}`
Y esto lo guardará en su archivo local, si se agrega -o <file-path>
.
Espero que haya sido útil.
J.
¿Podría su servidor de archivos conectarse directamente a su namenode? –
No. Por ahora, no se conecta. Pero me gustaría saber tu sugerencia. – dipeshtech
Haría un simple túnel SSH a su namenode y se conectaría desde su servidor de archivos. –