โหนดชื่ออยู่ในเซฟโหมด ทิ้งไม่ได้


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

ฉันทำ

root# bin/hadoop fs -safemode leave

แต่กำลังแสดง

safemode: Unknown command

อะไรคือปัญหา?

สารละลาย



2
ในกรณีของฉันมันอยู่ในโหนดที่ปลอดภัยเนื่องจากทรัพยากรมีน้อย (ทำงานบนนักเทียบท่า)
pomber

@BrendenBrown นี่คือลิงค์ที่ใช้งานได้สำหรับ Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

และนี่คือลิงค์ที่ใช้งานได้สำหรับ Hadoop «เสถียร» (ปัจจุบันคือ 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

คำตอบ:


211

ในการบังคับให้ namenode ออกจาก safemode ควรดำเนินการคำสั่งต่อไปนี้:

 bin/hadoop dfsadmin -safemode leave

คุณจะได้รับUnknown commandข้อผิดพลาดสำหรับคำสั่งของคุณเป็น-safemodeไม่ได้เป็นคำสั่งย่อยสำหรับแต่มันเป็นเรื่องของhadoop fshadoop dfsadmin

นอกจากนี้หลังจากคำสั่งข้างต้นฉันขอแนะนำให้คุณเรียกใช้หนึ่งครั้งhadoop fsckเพื่อให้ความไม่สอดคล้องกันที่เกิดขึ้นใน hdfs อาจถูกแยกออก

ปรับปรุง:

ใช้hdfsคำสั่งแทนhadoopคำสั่งสำหรับการแจกแจงที่ใหม่กว่า hadoopคำสั่งจะถูกเลิกใช้:

hdfs dfsadmin -safemode leave

hadoop dfsadminได้รับการคัดค้านและเพื่อให้เป็นhadoop fsคำสั่งงาน HDFS hdfsทั้งหมดที่เกี่ยวข้องจะถูกย้ายไปยังคำสั่งแยกต่างหาก


2
ที่จริงแล้วทำไมสิ่งนี้จึงแสดง 'namenode อยู่ใน
โหมดปลอดภัย

1
โดยทั่วไป Namenode จะเข้าสู่เซฟโหมดในสถานการณ์ที่ผิดปกติตัวอย่างเช่นเมื่อดิสก์เต็มและอยู่ในขั้นตอนเริ่มต้น อ่านเพิ่มเติมที่นี่; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Amar

2
ฉันใช้ Hadoop 2.0.0-cdh4.1.1 เมื่อฉันรันhadoop dfsadminคำสั่งมันให้สิ่งนี้กับฉัน: ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ... แต่ก็ยังวิ่งอยู่ ดูเหมือนว่าคำแนะนำโดย @ user3316017 ด้านล่างนี้เป็นไวยากรณ์ที่แนะนำ
CJBS

อัปเดตคำตอบของฉันตามการแจกแจงใหม่หากใครสามารถช่วยเราในการสร้าง apache hadoop เวอร์ชันที่แน่นอนเนื่องจากเมื่อการเลิกใช้งานเหล่านี้กลายเป็นภาพมันจะดีมาก
Amar

1
สำหรับกรณีที่ HDFS เข้าสู่เซฟโหมดอีกครั้งทันทีที่hdfs dfsadmin -safemode leavecomand ถูกเรียกใช้เนื่องจากคลัสเตอร์เต็มบางครั้งอาจเป็นไปได้ที่จะออกจากสถานการณ์โดยการผูกคำสั่งในการล้างข้อมูลทันทีเช่นhdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Shadocko

27

ลองใช้มันจะได้ผล

sudo -u hdfs hdfs dfsadmin -safemode leave

คำสั่งนี้ใช้ได้ผลสำหรับฉันเพราะมันอาจต้องใช้ความเป็นส่วนตัวของผู้ใช้ขั้นสูงขอบคุณ @wesam
NikhilP

21

คำสั่งไม่ได้ผลสำหรับฉัน แต่สิ่งต่อไปนี้ทำ

hdfs dfsadmin -safemode leave

ฉันใช้hdfsคำสั่งแทนhadoopคำสั่ง

ตรวจสอบhttp://ask.gopivotal.com/hc/en-us/articles/200933026-HDFS-goes-into-readonly-mode-and-errors-out-with-Name-node-is-in-safe- โหมดลิงค์ด้วย


ลิงค์เอกสารใน Hadoop Safe Mode: hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
CJBS

7

หากคุณใช้ Hadoop เวอร์ชัน 2.6.1 ข้างต้นในขณะที่คำสั่งใช้งานได้คำสั่งจะบ่นว่าเสื่อมราคา จริง ๆ แล้วฉันไม่สามารถใช้มันได้hadoop dfsadmin -safemode leaveเพราะฉันใช้ Hadoop ในคอนเทนเนอร์ Docker และคำสั่งนั้นล้มเหลวอย่างน่าอัศจรรย์เมื่อรันในคอนเทนเนอร์ดังนั้นสิ่งที่ฉันทำก็คือสิ่งนี้ ฉันตรวจสอบเอกสารและพบdfs.safemode.threshold.pctในเอกสารที่ระบุว่า

ระบุเปอร์เซ็นต์ของบล็อกที่ควรเป็นไปตามข้อกำหนดการจำลองแบบขั้นต่ำที่กำหนดโดย dfs.replication.min ค่าที่น้อยกว่าหรือเท่ากับ 0 หมายความว่าไม่ต้องรอเปอร์เซ็นต์ของบล็อกใด ๆ ก่อนที่จะออกจากโหมดปลอดภัย ค่าที่มากกว่า 1 จะทำให้โหมดปลอดภัยเป็นแบบถาวร

ดังนั้นฉันจึงเปลี่ยนhdfs-site.xmlเป็นสิ่งต่อไปนี้ (ใน Hadoop รุ่นเก่าเห็นได้ชัดว่าคุณต้องทำในhdfs-default.xml:

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

5

Namenode เข้าสู่ safemode เมื่อหน่วยความจำขาดแคลน ด้วยเหตุนี้ HDFS จึงสามารถอ่านได้เท่านั้น นั่นหมายความว่าเราไม่สามารถสร้างไดเร็กทอรีหรือไฟล์เพิ่มเติมใน HDFS ได้ ในการออกมาจากโหมดปลอดภัยจะใช้คำสั่งต่อไปนี้:

hadoop dfsadmin -safemode leave

หากคุณกำลังใช้ cloudera manager:

go to >>Actions>>Leave Safemode

แต่มันไม่ได้แก้ปัญหาเสมอไป วิธีแก้ปัญหาที่สมบูรณ์คือการเพิ่มพื้นที่ว่างในหน่วยความจำ ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบการใช้หน่วยความจำของคุณ

free -m

หากคุณใช้ cloudera คุณสามารถตรวจสอบได้ว่า HDFS แสดงสัญญาณของสุขภาพที่ไม่ดีหรือไม่ อาจต้องแสดงปัญหาหน่วยความจำบางอย่างที่เกี่ยวข้องกับ Namenode จัดสรรหน่วยความจำเพิ่มเติมโดยทำตามตัวเลือกที่มี ฉันไม่แน่ใจว่าจะใช้คำสั่งอะไรเหมือนกันถ้าคุณไม่ได้ใช้ cloudera manager แต่ต้องมีวิธี หวังว่าจะช่วยได้! :)


5

ลองทำตามนี้

sudo -u hdfs hdfs dfsadmin -safemode leave

ตรวจสอบสถานะของโหมดปลอดภัย

sudo -u hdfs hdfs dfsadmin -safemode get

หากยังอยู่ในโหมดเซฟโหมดสาเหตุหนึ่งที่ทำให้มีพื้นที่ไม่เพียงพอในโหนดของคุณคุณสามารถตรวจสอบการใช้ดิสก์โหนดของคุณโดยใช้:

df -h

หากรูทพาร์ติชันเต็มให้ลบไฟล์หรือเพิ่มพื้นที่ในพาร์ติชันรูทของคุณแล้วลองขั้นตอนแรกอีกครั้ง


4

โหมดปลอดภัยบนหมายถึง (HDFS อยู่ในโหมดอ่านเท่านั้น)
หมายถึงปิดโหมดปลอดภัย (HDFS อยู่ในโหมดเขียนได้และอ่านได้)

ในHadoop 2.6.0เราสามารถตรวจสอบสถานะของโหนดชื่อด้วยความช่วยเหลือของคำสั่งด้านล่าง:

เพื่อตรวจสอบสถานะโหนดชื่อ

$ hdfs dfsadmin -safemode get

การเข้าสู่โหมดปลอดภัย:

$ hdfs dfsadmin -safemode enter

เพื่อออกจากโหมดปลอดภัย

~$ hdfs dfsadmin -safemode leave

1
เพื่อบังคับให้ออกจากโหมดปลอดภัย: ~ $ hdfs dfsadmin -safemode forceExit
ammills01

1

เรียกใช้คำสั่งด้านล่างโดยใช้ผู้ใช้ HDFS OS เพื่อปิดใช้งานเซฟโหมด:

sudo -u hdfs hadoop dfsadmin -safemode leave

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.