2012-12-05 11 views
12

Yerel diskimdeki dosyaları kopyalamayı denedim hdfs. İlk başta SafeModeException verdi. Çözüm ararken, aynı komutun tekrar çalıştırılması durumunda sorunun görünmediğini okudum. Bu yüzden tekrar denedim ve istisna vermedi.SafeModeException: Ad düğümü güvenli modda

[email protected]:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /tmp/gutenberg/ /user/hduser/gutenberg 
copyFromLocal: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hduser/gutenberg. Name node is in safe mode. 
[email protected]:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /tmp/gutenberg/ /user/hduser/gutenberg 

Bu neden oluyor? Bu kodu kullanarak güvende kalmalı mıyım?

hadoop dfs -safemode leave 
+0

Komutların yürütülmesi arasındaki zaman farkı neydi? HDFS hizmetlerini ilk kez başlattığınızda tüm veri düğümlerinin çevrimiçi olması birkaç dakika alır. –

+2

FYI, hadoop benim sürümünde safemode bırakmak için komut: 'hadoop dfsadmin -safemode leave'. –

+0

@saket, probleminize çözüm buldunuz mu? –

cevap

17

NameNode veri düğümleri tarafından çevrimiçi olduğu bildirilen blokların yapılandırılmış yüzde kadar safemode bulunmaktadır. Çok az blokları var küçük/geliştirme kümeler için hdfs-site.xml

parametre dfs.namenode.safemode.threshold-pct tarafından yapılandırılabilir - bu varsayılan 0.9999f değeri bu parametre alt yapmaya mantıklı. Aksi halde 1 eksik blok, sistemin güvenli bir şekilde askıda kalmasına yol açabilir. (Sistemimde /usr/local/hadoop/bin/ olarak) bin içine hadoop yoluna

+1

Güvenli modda küme HDFS'den okuyabilir, ancak HDFS'ye yazamazsınız. –

+0

Evet. Bu salt okunur moddur. –

12

Git

cd /usr/local/hadoop/bin/ 

o/p olacak

[email protected]:/usr/local/hadoop/bin$ ls 

bir dosya hadoop var Kontrol,

hadoop   hadoop-daemons.sh start-all.sh  start-jobhistoryserver.sh stop-balancer.sh   stop-mapred.sh 
hadoop-config.sh rcc    start-balancer.sh start-mapred.sh   stop-dfs.sh    task-controller 
hadoop-daemon.sh slaves.sh   start-dfs.sh  stop-all.sh    stop-jobhistoryserver.sh 

Ardından, güvenli moddan çıkmak için comman'ı kullanmalısınız. d ./hadoop dfsadmin -safemode leave, siz yanıtını alacak

[email protected]:/usr/local/hadoop/bin$ ./hadoop dfsadmin -safemode leave 

,

Safe mode is OFF 

Not: Ben hadoopuser adıyla Hadoop kullanıcı oluşturduk.

+0

Cevap harika, teşekkürler ton @AJ –