2013-08-28 40 views
20

Đây là những gì tôi thấy trên Web UI gần đâyChính xác những gì DFS không được sử dụng có nghĩa là gì?

Configured Capacity  : 232.5 GB 
DFS Used : 112.44 GB 
Non DFS Used : 119.46 GB 
DFS Remaining : 613.88 MB 
DFS Used% : 48.36 % 
DFS Remaining% : 0.26 % 

và tôi rất bối rối mà không dfs sử dụng chiếm hơn một nửa công suất,

mà tôi nghĩ có nghĩa là một nửa dung lượng lưu trữ hadoop là bị lãng phí

Sau khi dành thời gian vô nghĩa để tìm kiếm, tôi chỉ định dạng nút tên và bắt đầu từ đầu.

Và sau đó tôi sao chép một tệp văn bản lớn (khoảng 19gigabyte) từ địa phương sang HDFS (đã thành công).

Bây giờ giao diện người dùng cho biết

Configured Capacity : 232.5 GB 
DFS Used  : 38.52 GB 
Non DFS Used  : 45.35 GB 
DFS Remaining : 148.62 GB 
DFS Used% : 16.57 % 
DFS Remaining% : 63.92 % 

trước khi sao chép, sử dụng và DFS Non DFS sử dụng đều 0.

Bởi vì DFS sử dụng là khoảng gấp đôi so với kích thước tập tin văn bản gốc và tôi cấu hình 2 bản sao,

Tôi đoán rằng DFS Được sử dụng bao gồm 2 bản gốc và meta.

Nhưng tôi vẫn không có bất kỳ ý tưởng nào về việc không sử dụng DFS từ đâu và tại sao lại chiếm quá nhiều vốn hơn DFS được sử dụng.

Điều gì sẽ xảy ra? Tôi đã làm sai?

Trả lời

25

"Non DFS được sử dụng" được tính bằng công thức sau:

Non DFS qua sử dụng = Configured Dung - Còn lại Space - DFS Dùng

Nó vẫn còn khó hiểu, ít nhất là đối với tôi.

Dung lượng được cấu hình = Tổng dung lượng đĩa - Dung lượng dành riêng.

Vì vậy Non DFS sử dụng = (Tổng dung lượng ổ đĩa - Reserved Space) - Còn lại Space - DFS Dùng

Hãy lấy một ví dụ. Giả sử tôi có 100 GB đĩa, và tôi đặt không gian dành riêng (dfs.datanode.du.reserved) đến 30 GB.

Trong đĩa, hệ thống và các tệp khác được sử dụng tối đa 40 GB, DFS đã sử dụng 10 GB. Nếu bạn chạy df -h , bạn sẽ thấy dung lượng còn trống là 50GB cho ổ đĩa đó.

Trong HDFS giao diện web, nó sẽ hiển thị

Non DFS sử dụng = 100GB (Tổng) - 30 GB (Dành riêng) - 10 GB (DFS được sử dụng) - 50GB (còn lại) = 10 GB

Vì vậy, nó thực sự có nghĩa là, ban đầu bạn cấu hình để dự trữ 30G cho việc sử dụng không dfs, và 70 G cho HDFS. Tuy nhiên, nó chỉ ra không sử dụng dfs vượt quá 30G đặt phòng và ăn lên không gian 10 GB mà nên thuộc về HDFS!

Thuật ngữ "Non DFS sử dụng" thực sự nên được đổi tên thành cái gì đó như "Bao nhiêu cấu hình dung lượng DFS đang chiếm đóng bởi dfs không sử dụng"

Và ta nên dừng lại cố gắng tìm ra lý do tại sao dfs không sử dụng rất cao bên trong hadoop.

Một lệnh hữu ích là lsof | grep delete, điều này sẽ giúp bạn xác định những tệp đang mở đã bị xóa. Đôi khi, các quá trình Hadoop (như tổ ong, sợi, và bản đồ và hdfs) có thể giữ tham chiếu đến các tệp đã bị xóa đó. Và những tài liệu tham khảo sẽ chiếm không gian đĩa.

Ngoài ra du -hsx * | sort -rh | head -10 giúp liệt kê mười thư mục hàng đầu lớn nhất.

+0

Tôi có thể xóa dữ liệu không phải dfs không? Nếu có thì sao? – Mahesha999

+0

@ Mahesha999: thử khởi động lại datanode. – kholis

7

Không DFS được sử dụng là bất kỳ dữ liệu nào trong hệ thống tệp của (các) nút dữ liệu không có trong số dfs.data.dirs. Điều này sẽ bao gồm các tệp nhật ký, tạo bản đồ shuffle và bản sao cục bộ của các tệp dữ liệu (nếu bạn đặt chúng trên một nút dữ liệu). Sử dụng du hoặc một công cụ tương tự để xem những gì chiếm dung lượng trong hệ thống tệp của bạn.

+2

Điều này là không chính xác, đặc biệt khi 'dfs.data.dirs' nằm trên các hệ thống tệp riêng biệt từ đó của'/'. Định nghĩa đúng là: bất kỳ dữ liệu nào không được viết bởi HDFS trong cùng một hệ thống tập tin (s) như là 'dfs.data.dirs'. Nói cách khác, nếu bạn sử dụng lệnh 'hdfs dfs' để sao chép dữ liệu, sau đó là" sử dụng DFS "và nếu bạn sử dụng lệnh' cp' để sao chép tệp vào 'dfs.data.dirs', thì nó sẽ trở thành" không Sử dụng DFS ". – haridsv

+2

Tôi có thể xóa dữ liệu không phải dfs không? Nếu có thì sao? – Mahesha999

1

Định nghĩa đơn giản đúng là: "Bất cứ dữ liệu mà không được viết bởi HDFS trong hệ thống tập tin tương tự (s) là dfs.data.dirs Nói cách khác, nếu bạn sử dụng hdfs dfs lệnh để sao chép dữ liệu, nó kết thúc lên dưới dfs.data.dirs nhưng sau đó. nó được coi là "sử dụng DFS", và nếu bạn sử dụng lệnh cp thông thường để sao chép tệp vào dfs.data.dirs, thì nó sẽ trở thành "sử dụng không phải DFS"

0

Các tệp không phải là dfs sẽ được lưu trữ bởi Trình quản lý nút Bạn có thể kiểm tra đường dẫn dưới thuộc tính yarn.nodemanager.local-dirs trong trang web yarn-site.xml

Bạn có thể tham khảo mặc định yarn-site.xml để biết chi tiết.

Các vấn đề liên quan