Nút tên đang ở chế độ an toàn. Không thể rời đi


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.

không thể tạo bất cứ thứ gì trong hdfs

tôi đã làm

root# bin/hadoop fs -safemode leave

Nhưng hiển thị

safemode: Unknown command

vấn đề là gì

Giải pháp



2
Trong trường hợp của tôi, đó là trong nút an toàn vì nguồn lực là thấp (chạy trên Docker)
pomber

@BrendenBrown, đây là liên kết hiện đang hoạt động cho Hadoop 3.2.0: hadoop.apache.org/docs/r3.2.0/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Và đây là liên kết hiện đang hoạt động cho Hadoop «ổn định» (hiện tại là 2.9.x): hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/…
Eugene Gr. Philippov

Câu trả lời:


211

Để buộc nút tên rời khỏi safemode, lệnh sau phải được thực hiện:

 bin/hadoop dfsadmin -safemode leave

Bạn đang gặp Unknown commandlỗi đối với lệnh của mình vì -safemodekhông phải lệnh phụ cho hadoop fs, nhưng là của hadoop dfsadmin.

Ngoài ra sau lệnh trên, tôi khuyên bạn nên chạy một lần hadoop fsckđể mọi mâu thuẫn len lỏi trong hdfs có thể được sắp xếp.

Cập nhật:

Sử dụng hdfslệnh thay vì hadooplệnh cho các bản phân phối mới hơn. Các hadooplệnh đang được chấp nhận:

hdfs dfsadmin -safemode leave

hadoop dfsadminđã không được dùng nữa và hadoop fslệnh cũng vậy , tất cả các tác vụ liên quan đến hdfs đang được chuyển sang một lệnh riêng biệt hdfs.


2
thực sự tại sao màn hình này 'namenode là trong safemode'
Unmesha SreeVeni

1
Về cơ bản, nút tên đi vào chế độ an toàn trong các tình huống bất thường, ví dụ như khi đĩa đầy, cũng trong giai đoạn khởi động. Đọc thêm tại đây; hadoop.apache.org/docs/stable/hdfs_user_guide.html#Safemode
Amar

2
Tôi đang sử dụng Hadoop 2.0.0-cdh4.1.1 Khi tôi chạy hadoop dfsadminlệnh, nó cho tôi điều này: ______ DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it. Safe mode is OFF ______ ... nhưng vẫn chạy. Có vẻ như gợi ý của @ user3316017 dưới đây là cú pháp được đề xuất.
CJBS

Đã cập nhật câu trả lời của tôi theo các bản phân phối mới, nếu ai đó có thể giúp chúng tôi thiết lập phiên bản chính xác của apache hadoop kể từ khi các phiên bản ngừng sử dụng này có hiệu lực, thì thật tuyệt.
Amar

1
Đối với trường hợp HDFS đi vào chế độ an toàn một lần nữa ngay sau khi hdfs dfsadmin -safemode leaveCOMAND được điều hành bởi vì cụm là đầy đủ, đôi khi có thể để thoát khỏi tình trạng này bằng cách ngay lập tức chaining một lệnh để dọn dẹp những thứ, ví dụ nhưhdfs dfsadmin -safemode leave; hdfs dfs -rm -skipTrash /path/to/stuff/to/delete
Shadocko

27

hãy thử cái này, nó sẽ hoạt động

sudo -u hdfs hdfs dfsadmin -safemode leave

lệnh này làm việc cho tôi vì nó có thể đòi hỏi privilage..thanks superuser @wesam
NikhilP


7

Nếu bạn sử dụng Hadoop phiên bản 2.6.1 ở trên, trong khi lệnh hoạt động, nó phàn nàn rằng nó bị mất giá. Tôi thực sự không thể sử dụng hadoop dfsadmin -safemode leavevì tôi đang chạy Hadoop trong vùng chứa Docker và lệnh đó bị lỗi một cách kỳ diệu khi chạy trong vùng chứa, vì vậy những gì tôi đã làm là thế này. Tôi đã kiểm tra tài liệu và tìm thấy dfs.safemode.threshold.pcttrong tài liệu nói rằng

Chỉ định phần trăm khối phải đáp ứng yêu cầu sao chép tối thiểu được xác định bởi dfs.replication.min. Các giá trị nhỏ hơn hoặc bằng 0 có nghĩa là không phải đợi bất kỳ phần trăm khối cụ thể nào trước khi thoát khỏi safemode. Giá trị lớn hơn 1 sẽ đặt chế độ an toàn vĩnh viễn.

vì vậy tôi đã thay đổi hdfs-site.xml sau (Trong các phiên bản Hadoop cũ hơn, rõ ràng bạn cần thực hiện điều đó trong hdfs-default.xml:

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

5

Namenode đi vào safemode khi thiếu bộ nhớ. Do đó, HDFS chỉ có thể đọc được. Điều đó có nghĩa là người ta không thể tạo bất kỳ thư mục hoặc tệp bổ sung nào trong HDFS. Để thoát ra khỏi mã safemode, lệnh sau được sử dụng:

hadoop dfsadmin -safemode leave

Nếu bạn đang sử dụng trình quản lý cloudera:

go to >>Actions>>Leave Safemode

Nhưng không phải lúc nào nó cũng giải quyết được vấn đề. Giải pháp hoàn chỉnh nằm ở việc tạo ra một số không gian trong bộ nhớ. Sử dụng lệnh sau để kiểm tra mức sử dụng bộ nhớ của bạn.

free -m

Nếu bạn đang sử dụng cloudera, bạn cũng có thể kiểm tra xem HDFS có đang có dấu hiệu xấu hay không. Nó có thể đang hiển thị một số vấn đề bộ nhớ liên quan đến nút tên. Phân bổ thêm bộ nhớ bằng cách làm theo các tùy chọn có sẵn. Tôi không chắc chắn những lệnh nào sẽ sử dụng tương tự nếu bạn không sử dụng trình quản lý cloudera nhưng phải có một cách. Hy vọng nó giúp! :)


5

Thử cái này

sudo -u hdfs hdfs dfsadmin -safemode leave

kiểm tra trạng thái của safemode

sudo -u hdfs hdfs dfsadmin -safemode get

Nếu nó vẫn ở trong safemode, thì một trong những lý do là không đủ dung lượng trong nút của bạn, bạn có thể kiểm tra mức sử dụng đĩa nút của mình bằng cách sử dụng:

df -h

nếu phân vùng gốc đầy, hãy xóa tệp hoặc thêm dung lượng trong phân vùng gốc của bạn và thử lại bước đầu tiên.


4

chế độ an toàn trên phương tiện (HDFS ở chế độ chỉ ĐỌC)
chế độ an toàn tắt nghĩa là (HDFS ở chế độ Có thể ghi và có thể đọc)

Trong đó Hadoop 2.6.0, chúng ta có thể kiểm tra trạng thái của nút tên với sự trợ giúp của các lệnh dưới đây:

ĐỂ KIỂM TRA trạng thái nút tên

$ hdfs dfsadmin -safemode get

ĐỂ VÀO CHẾ ĐỘ AN TOÀN:

$ hdfs dfsadmin -safemode enter

ĐỂ LẠI chế độ AN TOÀN

~$ hdfs dfsadmin -safemode leave

1
ĐỂ FORCE Rời khỏi CHẾ ĐỘ AN TOÀN: ~ $ hdfs dfsadmin -safemode forceExit
ammills 01

1

Chạy lệnh bên dưới bằng người dùng HĐH HDFS để tắt chế độ an toàn:

sudo -u hdfs hadoop dfsadmin -safemode leave

0

sử dụng lệnh dưới đây để tắt chế độ an toàn

$> hdfs dfsadmin -safemode rời khỏi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.