JVM

2013-11-04 43 views
9

yeniden yükledikten sonra hadoop başlangıç ​​komut dosyasında Messed up sed syntactics, Windows Azure bulutunda 3 düğüm Hadoop kümesi çalıştırmayı deniyorum. Yapılandırmadan geçtim ve lansmanı test ediyorum. Her şey iyi görünüyor, ancak okuduğum şeye göre Hadoop için VM olarak önerilmeyen OpedJDK'yi kullandığım için, Oracle Server JVM ile değiştirmeye karar verdim. Java ile eski Java kurulumunu Yum ile birlikte/usr/lib içindeki tüm java klasörleriyle birlikte kaldırdık, Oracle JVM'nin en son sürümünü yükledik, PATH ve JAVA_HOME değişkenlerini güncelledik; ancak, şu anda lansmanı takip ediyorum: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. (toplamda yaklaşık olarak 20-30 karakter dizisi ile ortak bir şey içermemesi gereken sözcükler)

Benim için başlangıç ​​kodu komut satırının yanlış kullanımı nedeniyle kodun bir kısmını Hostname olarak iletmeye çalışıyor gibi görünüyor:

 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 

Hangisi değişmeden görünüyor, bu yüzden soru şudur: JVM'nin değişimi sed'i nasıl etkileyebilir? Ve bunu nasıl düzeltebilirim?

+0

'S'' için bilinmeyen seçenek, çok fazla eğik çizginizin olduğunu gösterir. $ Slave' değerlerinden biri eğik çizgi içeriyor mu? –

+0

'$ (cat" $ SLAVE_FILE "| sed 's /#.*$//;/^$/ d') 's ... – pfnuesel

+0

Bu iyi olurdu. Ama hata burada olabilir: "sed" s/^/$ slave:/"' –

cevap

15

Bu soruya bir cevap buldum: Tahminim yanlıştı ve sed olan her şey yolunda. Sorun, Oracle JVM'nin OpenJDK ile karşılaştırılan harici kütüphanelerle nasıl çalıştığıydı. Komutun bunu beklemediği bir istisna attı ve tüm sed girişini mahvetti. HADOOP_COMMON_LIB_NATIVE_DIR sizin Hadoop kurulumunun /lib/yerli klasöre işaret ve ne olursa olsun seçeneklerine -Djava.library.path =/opt/Hadoop/lib eklemek gerekir: Aşağıdaki sistem değişkenleri ekleyerek çözebilirsiniz Zaten HADOOP_OPTS değişkenine sahipsiniz (/ opt/hadoop'un kurulum klasörüm olduğuna dikkat edin, işlerin düzgün çalışması için değiştirmeniz gerekebilir). Kişisel olarak hadoop-env.sh betiğine dışa aktarma komutları ekliyorum, ancak .bash dosyasına veya start.all.sh dosyasına ekledim.

+1

Sorunu takip ettiğin için çok teşekkür ettin ve bu kadar ayrıntılı bir cevap verdin! – Olshansk

+0

Ayrıca hadoop 2.x yapılandırırken başka bir sorun yaşıyorum ve bir göz atabilirseniz çok memnun olurum. http://stackoverflow.com/questions/19943766/hadoop-unable-to-load-native-hadoop-library-for-your-platform-error-on-centos – Olshansk

+0

Benim için java kullanıldığında baştan çıkarma hatası oluştu -1.7.0-OpenJDK-amd64'. Oracle jdk1.8.0 ile değiştirdiğimde düzeltildi. –