Câu hỏi này có vẻ dễ dàng, nhưng tôi không thể hiểu được công việc thực sự đằng sau nó. Tôi biết mọi người sẽ nói, chia nhỏ thành các khối 512 Megs và sắp xếp chúng như sử dụng Merge Sort bằng cách sử dụng Map reduce.Sắp xếp tệp 1TB trên máy có RAM 1GB
Vì vậy, đây là câu hỏi thực tế tôi có:
Giả sử tôi phá vỡ các tập tin vào 512 Megs đoạn và sau đó gửi đến các máy chủ khác nhau để sắp xếp chúng. giả sử các máy này sử dụng Sắp xếp Hợp nhất. Bây giờ, tôi đã có 2000 máy được phân loại 2000, 512 megabyte. Bây giờ khi tôi hợp nhất chúng lại, nó hoạt động như thế nào? Sẽ không phải là kích thước tiếp tục tăng trở lại? Ví dụ kết hợp hai 512 megs sẽ làm cho 1024Megs là kích thước của bộ nhớ RAM của tôi như thế nào sẽ làm việc này? Bất kỳ máy nào không thể hợp nhất đoạn lớn hơn 512 megabyte với một đoạn khác vì sau đó kích thước> 1 GB.
Làm cách nào để kết thúc quá trình hợp nhất, tôi có thể hợp nhất hai đoạn 0,5 TB với đoạn 0,5 TB khác. Khái niệm về Bộ nhớ ảo có được phát ở đây không?
Tôi ở đây để làm rõ những điều cơ bản của tôi và tôi hy vọng tôi đang yêu cầu câu hỏi này rất quan trọng (chính xác) một cách chính xác. Ngoài ra, những người nên làm điều này hợp nhất (sau khi phân loại)? Máy của tôi hoặc một vài trong số 2000 máy đó?
Bạn sẽ chỉ hết bộ nhớ nếu bạn cố giữ (các) tệp trong bộ nhớ. Một khi bạn đã chunked các tập tin và sắp xếp từng đoạn, bạn chỉ phải giữ một dòng của mỗi tập tin trong bộ nhớ khi bạn hợp nhất/ghi chúng ra một tập tin mới. –
Sắp xếp hợp nhất là một trong những thuật toán yêu thích của tôi. Rất đơn giản để hiểu và hữu ích. –
BTW, có thể thực hiện điều này bằng cách chỉ sử dụng 2 lần đọc/ghi vượt qua toàn bộ tập dữ liệu. (4 TB của tổng số I/O) Tôi sẽ bỏ qua các chi tiết vì nó rất phức tạp, nhưng nó sử dụng cách tiếp cận tương tự như các thuật toán FFT ngoài lõi. – Mysticial