Executando o shell script no cluster em paralelo

0

Eu achei que dsh (Shell distribuído) seria uma boa opção, mas quando executei meu shell script em meus nós, não obtive minha saída esperada,

dsh -aM -c bash /home/cloudera/bash_script.sh
[email protected]: files in folder
[email protected]: server2
[email protected]: server1
[email protected]: sleep time................
[email protected]: server3
[email protected]: sleep time................
[email protected]: sleep time................

bash_script.sh

#!/bin/bash

while true;
do

shopt -s nullglob
#shopt -s dotglob # To include hidden files
files=(/home/cloudera/MyFolder/*)
echo "files in folder" $files[@]

if [  ${#files[@]} -gt 0 ];
then
        for entry in "/home/cloudera/EcoAxis"/*
    do
      cp $entry /home/cloudera/EcoBackup
      var='basename $entry'
      var1='echo ${var//[.csv]/}'
      echo $var1
      gawk -f abc.awk $entry
      rm -r -f $entry

    done
fi
 echo "server2" 
sleep 5s
 echo "sleep time................"
 sleep 10s
done

Meu script está funcionando corretamente se eu o executar sem o dsh; por que esse comportamento anormal? Por padrão, o dsh pode executar até 64 comandos em paralelo. O dsh suporta todos os comandos bash? Qual é a melhor opção para o processamento paralelo de scripts shell?

    
por Aashu 29.08.2014 / 13:17

1 resposta

1

Antes de começar a portar, experimente com o GNU Parallel:

parallel -j0 --tag --line-buffer ssh {} bash /home/cloudera/bash_script.sh ::: server1 server2 server3

Você precisa da versão 20130822 ou posterior para o buffer de linha.

    
por 29.08.2014 / 20:09