unix ssh hadoop copying piping

unix - poner un archivo remoto en hadoop sin copiarlo en el disco local



ssh copying (4)

Estoy escribiendo un script de shell para poner datos en hadoop tan pronto como se generan. Puedo enviar ssh a mi nodo maestro, copiar los archivos a una carpeta de allí y luego ponerlos en hadoop. Estoy buscando un comando de shell para deshacerme de copiar el archivo en el disco local en el nodo maestro. Para explicar mejor lo que necesito, a continuación puede encontrar lo que tengo hasta ahora:

1) copie el archivo al disco local del nodo maestro:

scp test.txt username@masternode:/folderName/

Ya configuré la conexión SSH usando claves. Por lo tanto, no se necesita contraseña para hacer esto.

2) Puedo usar ssh para ejecutar remotamente el comando hadoop put:

ssh username@masternode "hadoop dfs -put /folderName/test.txt hadoopFolderName/"

Lo que estoy buscando es cómo conectar / combinar estos dos pasos en uno y omitir la copia local del archivo en el disco local de masterNode.

Gracias

En otras palabras, quiero canalizar varios comandos de una manera que pueda


(no probado)

Dado que el nodo donde crea sus datos tiene acceso a Internet, entonces quizás podría instalar el software de nodo de cliente hadoop y luego agregarlo al clúster, luego de la salida normal de hadoop fs, luego desconectar y eliminar su nodo temporal, entonces el sistema hadoop debería Haga automáticamente la replicación de sus bloques de archivos dentro de su cluster hadoop


El nodo donde ha generado los datos, es capaz de llegar a cada uno de los nodos del clúster (el nodo de nombre y todos los nodos de datos).

Si tiene conectividad de datos, puede ejecutar el comando hadoop fs -put desde la máquina donde se generan los datos (suponiendo que también tiene instalados los binarios de hadoop):

#> hadoop fs -fs masternode:8020 -put test.bin hadoopFolderName/


Hadoop proporciona un par de interfaces REST. Verifique Hoop y WebHDFS . Debería poder copiar el archivo sin copiar el archivo al maestro usándolos desde entornos que no son de Hadoop.


Pruebe esto (no probado):

cat test.txt | ssh username@masternode "hadoop dfs -put - hadoopFoldername/"

He utilizado trucos similares para copiar directorios en todo:

tar cf - . | ssh remote "(cd /destination && tar xvf -)"

Esto envía la salida de tar local en la entrada de tar remoto.