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

1) copiar el archivo en el nodo maestro del disco local:

scp test.txt [email protected]:/folderName/

Ya he instalación de una conexión SSH usando las teclas. Así que no se necesita contraseña para ello.

2) puedo utilizar ssh para ejecutar de forma remota la hadoop comando put:

ssh [email protected] "hadoop dfs -put /folderName/test.txt hadoopFolderName/"

lo que estoy buscando es cómo tubería/combinar estos dos pasos en uno y omitir la copia local del archivo en masterNode el disco local.

gracias

En otras palabras, quiero tubería de varios comandos en una manera que yo pueda

  • Tuberías problema está resuelto. Sin embargo, el rendimiento de la tubería es mucho más lento que la copia de archivos en el disco local del nodo maestro y, a continuación, copiarlos a Hadoop. Alguna idea?
InformationsquelleAutor reza | 2012-06-30

4 Comentarios

  1. 39

    Probar esto (no probado):

    cat test.txt | ssh [email protected] "hadoop dfs -put - hadoopFoldername/"
    

    He usado trucos para copiar directorios:

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

    Este envía la salida de los locales-tar en la entrada de la distancia-tar.

    • nope, esto no funciona. por 2 razones: 1) hadoop dfs -poner /dev/stdin no existe 2) mis archivos están en formato binario. de hecho es la prueba.de reciclaje en lugar de test.txt
    • Binario no importa — ssh no destrozar 8 bits contenido. Trate de - en lugar de /dev/stdin?
    • así que en ese caso, el único problema es que hadoop dfs -poner /dev/stdin no funciona. De hecho, acabo de intentar y fallar:(
    • dice: pon: /dev/stdin ( No el dispositivo o dirección)
    • ¿- En lugar de /dev/stdin?
    • (y qué clase de horrible sistema no tiene /dev/stdin?)
    • oh, genial. el uso de – en lugar de /dev/stdin resuelto el problema. Así que estoy usando el siguiente código y funciona bien: cat test.txt | ssh [email protected] «hadoop dfs -poner – hadoopFolderName/test.txt»
    • Tuberías problema está resuelto. Sin embargo, el rendimiento de la tubería es mucho más lento que la copia de archivos en el disco local del nodo maestro y, a continuación, copiarlos a Hadoop. Alguna idea?
    • Lo que es más lento? Toda la operación o el específico put?
    • los específicos del puesto. copiar un solo archivo maestro del nodo local de la unidad y, a continuación, ponerlo en hadoop mediante ssh remoto es más rápido que el de la tubería de la cat | ssh remoto.
    • No es una buena solución aquí : [una-línea -.blogspot.dk/2013/05/…
    • es que hay un límite de tamaño para la transferencia de archivos utilizando este enfoque?
    • No sé si hadoop tiene un límite de entrada en esta moda. ssh sin duda no, pero el no la conexión ssh se mantiene abierta, la más probable es que la conexión puede estar disminuido debido a errores. Muchos de nosotros hemos conexiones ssh o irc conexiones abiertas durante meses, pero en algún punto de una interrupción de un stateful firewall puede provocar una falla en el conjunto. rsync sabría cómo reanudar una cosa, si tanto la fuente y el destino son los archivos o directorio de los árboles. Usted puede obtener mejores resultados pidiendo una nueva pregunta, sin embargo, con los detalles de su problema. Gracias.

  2. 10

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

    Si usted tiene conectividad de datos a continuación, puede simplemente ejecutar la hadoop fs -puesto de comando de la máquina donde se generan los datos (suponiendo que tiene la hadoop binarios instalados allí también):

    #> hadoop fs -fs masternode:8020 -put test.bin hadoopFolderName/
    
    • por desgracia, el nodo puedo crear los datos no tiene acceso directo a la curva de clúster.
    • ¿Sabes lo que es la mínima de hadoop instalación requiere?
    • He probado de esta manera, se está trabajando
  3. 0

    (no probado)

    Desde el nodo donde crear tus datos tiene acceso a internet, entonces tal vez usted podría instalar hadoop nodo cliente de software, a continuación, añadir el clúster después de lo normal en hadoop fs -poner, a continuación, desconecte y retire su temporal del nodo de la hadoop sistema debe entonces realizar automáticamente la replicación de sus archivos de bloques en el interior de su clúster hadoop

Dejar respuesta

Please enter your comment!
Please enter your name here