Sto provando a eseguire il cluster Hadoop a 3 nodi sul cloud di Windows Azure. Ho completato la configurazione e l'avvio del test. Tutto sembra a posto, tuttavia, dato che usavo OpedJDK che non è consigliato come VM per Hadoop in base a ciò che ho letto, decido di sostituirlo con Oracle Server JVM. Rimossa la vecchia installazione di java con Yum, insieme a tutte le cartelle java in/usr/lib, installata la versione più recente di Oracle JVM, le variabili PATH e JAVA_HOME aggiornate; tuttavia, ora in fase di avvio ricevo i seguenti massegi:Script syntactics sed in script di avvio di hadoop dopo aver reinstallato JVM
sed: -e expression #1, char 6: unknown option to `s'
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
Server: ssh: Could not resolve hostname Server: Name or service not known
VM: ssh: Could not resolve hostname VM: Name or service not known
e.t.c. (in totale circa 20-30 stringhe con parole che non dovrebbero avere nulla in comune con i nomi degli host)
Per me sembra che stia cercando di passare parte del codice come Nome host a causa di un uso errato di sed nello script di avvio:
if [ "$HADOOP_SLAVE_NAMES" != '' ] ; then
SLAVE_NAMES=$HADOOP_SLAVE_NAMES
else
SLAVE_FILE=${HADOOP_SLAVES:-${HADOOP_CONF_DIR}/slaves}
SLAVE_NAMES=$(cat "$SLAVE_FILE" | sed 's/#.*$//;/^$/d')
fi
# start the daemons
for slave in $SLAVE_NAMES ; do
ssh $HADOOP_SSH_OPTS $slave $"${@// /\\ }" \
2>&1 | sed "s/^/$slave: /" &
if [ "$HADOOP_SLAVE_SLEEP" != "" ]; then
sleep $HADOOP_SLAVE_SLEEP
fi
done
Che sembra invariato, quindi la domanda è: in che modo il cambiamento di JVM potrebbe influenzare sed? E come posso risolvere il problema?
'l'opzione sconosciuta a 's'' indica che ci sono troppe barre. Uno dei valori '$ slave 'contiene una barra? –
'$ (cat" $ SLAVE_FILE "| sed 's /#.*$//;/^$/ d')' sigh ... – pfnuesel
Sarebbe ok. Ma l'errore potrebbe accadere qui: 'sed 's/^/$ slave: /" ' –