2012-10-17 17 views
7

Bu soru, çalışanların kullanması için tüm kümedeki kavanozların dağıtımı anlamına gelmez.Hadoop HADOOP_CLASSPATH sayıları

İstemci makinede bir dizi ek kitaplığın belirtilmesiyle ilgilidir. Daha spesifik olmak gerekirse: Bir SequenceFile içeriğini almak için aşağıdaki komutu çalıştırmak çalışıyorum:

/path/to/hadoop/script fs -text /path/in/HDFS/to/my/file 

Bana bu hatayı atar:

text: java.io.IOException: WritableName can't load class: util.io.DoubleArrayWritable Ben DoubleArrayWritable denilen yazılabilir sınıf var. Aslında, başka bir bilgisayarda her şey iyi çalışıyor.

HADOOP_CLASSPATH ayarını, bu sınıfı içeren bir kavanozu dahil etmek için hiçbir sonuç vermeden ayarlamaya çalıştım. Aslında çalıştırırken:

/path/to/hadoop/script classpath 

sonuç ben HADOOP_CLASSPATH eklenen kavanoz içermez.

soru şudur:

: yardımcı olabilecek

Biraz daha bilgi (Hadoop komut sınıf yolunda otomatik içeren olanlardan daha fazla anlam diğer kütüphaneler tarafından) Hadoop çalıştırırken ekstra kütüphaneleri belirtebilirim nasıl

  • ben hadoop-env.sh olarak Hadoop yükleme dizininde
  • altında/lib dizinine Kitaplığımı kopyalayamazsınız
  • hadoop.sh komut (ne de herhangi bir ilişkili komut) değiştiremezsiniz hangi ru hadoop.sh dosyasından şu satır var: export HADOOP_CLASSPATH=$HADOOP_HOME/lib, muhtemelen HADOOP_CLASSPATH env varmamın neden ihmal edildiğini açıklıyor. Eğer HADOOP_CLASSPATH sonra

    export HADOOP_CLASSPATH=/path/to/jar/myjar.jar:$HADOOP_CLASSPATH; \ 
        hadoop fs -text /path/in/HDFS/to/my/file 
    

    iş yapacak ayarlamak için izin verilirse

cevap

13

.

hadoop fs -libjars /path/to/jar/myjar.jar -text /path/in/HDFS/to/my/file 

Alternatif elle FsShell çağırmak:

java -cp $HADOOP_HOME/lib/*:/path/to/jar/myjar.jar:$CLASSPATH \ 
org.apache.hadoop.fs.FsShell -conf $HADOOP_HOME/conf/core-site.xml \ 
-text /path/in/HDFS/to/my/file 
+0

evet ama Hadoop komut yapar: ihracat HADOOP_CLASSPATH = $ HADOOP_HOME/lib. HADOOP_CLASSPATH – Razvan

+0

@Razvan'ımın güncellenmiş cevabımı –

+0

'a tekrar yazdığımda, "dağıtılmış" sınıf yolunu ayarlamak istemiyorum. İstemci makinede sınıf yolunu ayarlamak istiyorum. – Razvan

0

deneyin varsayılan CLASSPATH'E değişkeni içinde kavanoz dosyası eklemek için sizin durumunuzda bu yana bu değişken yerine -libjars seçeneğini kullanmayı düşünün, bu nedenle hadoop-env.sh içinde geçersiz kılınır ve ayrıca HADOOP_CLASSPATH'ı buna ekler. Ardından emrinizi gerçekleştirin.

export CLASSPATH=/your/jar/file/myjar.jar:$CLASSPATH:$HADOOP_CLASSPATH /path/to/hadoop/script fs -text /path/in/HDFS/to/my/file

+3

varsayılan sınıf yolu var hadoop tarafından yok sayılır – Razvan