Ad düğümü güvenli modda. Ayrılamıyorum


122
root# bin/hadoop fs -mkdir t
mkdir: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/root/t. Name node is in safe mode.

hdfs'de hiçbir şey oluşturamıyor

yaptım

root# bin/hadoop fs -safemode leave

Ama gösteriyor

safemode: Unknown command

sorun nedir?

Çözüm



2
Benim durumumda, kaynaklar düşük olduğu için güvenli
düğümdeydi

@BrendenBrown, işte şu anda Hadoop 3.2.0 için çalışan bağlantı: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Ve işte şu anda çalışan Hadoop "kararlı" bağlantısı (şu anda 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Yanıtlar:


211

Namenode'un güvenli moddan zorla çıkmasına izin vermek için aşağıdaki komutun çalıştırılması gerekir:

 bin/hadoop dfsadmin -safemode leave

Komutunuz için bir alt komut olmadığı Unknown commandiçin hata alıyorsunuz , ancak hata .-safemodehadoop fshadoop dfsadmin

Ayrıca yukarıdaki komuttan sonra, hadoop fsckhdf'lerdeki tutarsızlıkların çözülebilmesi için bir kez çalıştırmanızı öneririm .

Güncelleme:

Kullanım hdfskomutu yerine hadoopyeni dağıtımlar için komutu. hadoopKomut kaldırılmasına karar verildi:

hdfs dfsadmin -safemode leave

hadoop dfsadminkullanımdan kaldırıldı ve hadoop fskomut da öyle, hdfs ile ilgili tüm görevler ayrı bir komuta taşınıyor hdfs.


2
aslında bunun neden '
isim modunun güvenli modda olduğunu

1
Temel olarak isim kodu, olağandışı durumlarda, örneğin disk dolu olduğunda, ayrıca başlatma aşamasında güvenli moda girer. Daha fazlasını buradan okuyun; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Amar

2
Hadoop 2.0.0-cdh4.1.1 kullanıyorum hadoop dfsadminKomutu çalıştırdığımda bana şunu verdi: ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ... ama yine de çalışıyor. Görünüşe göre aşağıdaki @ user3316017 tarafından önerilen sözdizimi.
CJBS

Cevabım yeni dağıtımlara göre güncellendi, eğer biri apache hadoop'un tam sürümünü oluşturmamıza yardımcı olabilirse, bu kullanımdan kaldırmalar ortaya çıktığından beri harika olurdu.
Amar

1
hdfs dfsadmin -safemode leaveKüme dolu olduğu için komut çalıştırılır çalıştırılmaz HDFS'nin tekrar güvenli moda geçmesi durumunda, bazı şeyleri temizlemek için hemen bir komut zincirleyerek durumdan çıkmak mümkündür, örneğinhdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Shadocko

27

bunu dene, işe yarayacak

sudo -u hdfs hdfs dfsadmin -safemode leave

süper kullanıcı ayrıcalığı gerektirebileceğinden bu komut benim için çalıştı..thanks @wesam
NikhilP


7

Yukarıdaki Hadoop 2.6.1 sürümünü kullanırsanız, komut çalışırken amortismana uğradığından şikayet eder. Aslında kullanamadım hadoop dfsadmin -safemode leaveçünkü Hadoop'u bir Docker konteynerinde çalıştırıyordum ve bu komut konteynerde çalıştırıldığında sihirli bir şekilde başarısız oluyor, bu yüzden yaptığım şey buydu. dfs.safemode.threshold.pctBelgeyi kontrol ettim ve şu belgelerde buldum :

Dfs.replication.min tarafından tanımlanan minimum çoğaltma gereksinimini karşılaması gereken blok yüzdesini belirtir. 0'dan küçük veya 0'a eşit değerler, güvenli moddan çıkmadan önce belirli blok yüzdelerinin beklememesi anlamına gelir. 1'den büyük değerler güvenli modu kalıcı hale getirecektir.

bu yüzden hdfs-site.xmlaşağıdakini değiştirdim (Daha eski Hadoop sürümlerinde, görünüşe göre bunu yapmanız gerekiyor hdfs-default.xml:

<configuration>
    <property>
        <name>dfs.safemode.threshold.pct</name>
        <value>0</value>
    </property>
</configuration>

5

Namenode, bellek yetersizliği olduğunda güvenli moda girer. Sonuç olarak, HDFS yalnızca okunabilir hale gelir. Bu, HDFS'de herhangi bir ek dizin veya dosya oluşturulamayacağı anlamına gelir. Güvenli moddan çıkmak için aşağıdaki komut kullanılır:

hadoop dfsadmin -safemode leave

Cloudera yöneticisi kullanıyorsanız:

go to >>Actions>>Leave Safemode

Ancak her zaman sorunu çözmez. Tam çözüm, bellekte biraz yer açmaktır. Bellek kullanımınızı kontrol etmek için aşağıdaki komutu kullanın.

free -m

Cloudera kullanıyorsanız, HDFS'nin bazı kötü sağlık belirtileri gösterip göstermediğini de kontrol edebilirsiniz. Muhtemelen isim moduyla ilgili bazı hafıza sorunları gösteriyor olmalı. Mevcut seçenekleri izleyerek daha fazla bellek ayırın. Cloudera yöneticisi kullanmıyorsanız, aynı için hangi komutları kullanacağımı bilmiyorum ama bir yolu olmalı. Umarım yardımcı olur! :)


5

Bunu dene

sudo -u hdfs hdfs dfsadmin -safemode leave

güvenli modun durumunu kontrol et

sudo -u hdfs hdfs dfsadmin -safemode get

Hala güvenli moddaysa, nedenlerinden biri düğümünüzde yeterli alan olmamasıdır, düğüm disk kullanımınızı aşağıdakileri kullanarak kontrol edebilirsiniz:

df -h

kök bölüm doluysa, dosyaları silin veya kök bölümünüzde yer ekleyin ve ilk adımı yeniden deneyin.


4

güvenli mod açık demektir (HDFS yalnızca OKUMA modunda)
güvenli mod kapalı demektir (HDFS Yazılabilir ve okunabilir moddadır)

İçinde Hadoop 2.6.0, aşağıdaki komutlar yardımıyla isim düğümünün durumunu kontrol edebiliriz:

Ad düğümü durumunu KONTROL ETMEK İÇİN

$ hdfs dfsadmin -safemode get

GÜVENLİ MODA GİRMEK İÇİN:

$ hdfs dfsadmin -safemode enter

GÜVENLİ moddan ÇIKMAK İÇİN

~$ hdfs dfsadmin -safemode leave

1
GÜVENLİ MODDAN ÇIKMAK İÇİN: ~ $ hdfs dfsadmin -safemode forceExit
ammills01

1

Güvenli modu devre dışı bırakmak için HDFS OS kullanıcısını kullanarak aşağıdaki komutu çalıştırın:

sudo -u hdfs hadoop dfsadmin -safemode leave

0

güvenli modu kapatmak için aşağıdaki komutu kullanın

$> hdfs dfsadmin -safemode izni

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.