2012-07-06 44 views
5

Điều này có vẻ là một câu hỏi ngớ ngẩn nhưng trong Hadoop giả sử khối là X (thường là 64 hoặc 128 MB) và một tệp địa phương là Y (trong đó Y nhỏ hơn X) .Làm sao khi tôi sao chép tệp Y vào HDFS, nó sẽ tiêu thụ một khối hoặc hadoop sẽ tạo ra các khối kích thước nhỏ hơn?Kích thước khối Hadoop và vấn đề kích thước tệp?

Trả lời

18

Một khối được tiêu thụ bởi Hadoop. Điều đó không có nghĩa là dung lượng lưu trữ sẽ được tiêu thụ theo cách tương đương.

Sản lượng khi duyệt HDFS từ web trông như thế này:

filename1 file 48.11 KB 3 128 MB 2012-04-24 18:36  
filename2 file 533.24 KB 3 128 MB 2012-04-24 18:36  
filename3 file 303.65 KB 3 128 MB 2012-04-24 18:37 

Bạn thấy rằng mỗi kích thước tập tin là ít hơn kích thước khối là 128 MB. Các tệp này nằm trong KB. Dung lượng HDFS được tiêu thụ dựa trên kích thước tệp thực tế nhưng một khối được sử dụng cho mỗi tệp.

Có số lượng giới hạn các khối tùy thuộc vào dung lượng của HDFS. Bạn đang lãng phí các khối như bạn sẽ chạy ra khỏi chúng trước khi sử dụng tất cả dung lượng lưu trữ thực tế. Hãy nhớ rằng hệ thống tập tin Unix cũng có khái niệm về khối nhưng là một số rất nhỏ khoảng 512 byte. Khái niệm này được đảo ngược trong HDFS nơi kích thước khối được giữ lớn hơn khoảng 64-128 MB.

Vấn đề khác là khi bạn chạy chương trình bản đồ/giảm, nó sẽ cố gắng tạo ra bản đồ cho mỗi khối vì vậy trong trường hợp này khi bạn đang xử lý ba tệp nhỏ, có thể sẽ sinh ra ba người lập bản đồ để làm việc trên chúng. Điều này lãng phí tài nguyên khi các tệp có kích thước nhỏ hơn. Bạn cũng thêm độ trễ vì mỗi người lập bản đồ mất thời gian để sinh sản và sau đó cuối cùng sẽ làm việc trên một tệp có kích thước rất nhỏ. Bạn phải nén chúng thành các tệp gần hơn với việc chặn để tận dụng lợi thế của những người lập bản đồ làm việc với số lượng tệp ít hơn.

Một vấn đề khác với nhiều tệp nhỏ là nó tải nút tên để giữ ánh xạ (siêu dữ liệu) của mỗi khối và ánh xạ đoạn trong bộ nhớ chính. Với các tệp nhỏ hơn, bạn điền vào bảng này nhanh hơn và nhiều bộ nhớ chính hơn sẽ được yêu cầu khi siêu dữ liệu tăng lên.

Đọc sau để tham khảo:

  1. http://www.cloudera.com/blog/2009/02/the-small-files-problem/
  2. http://www.ibm.com/developerworks/web/library/wa-introhdfs/
  3. Oh! có một cuộc thảo luận về SO: Small files and HDFS blocks
Các vấn đề liên quan