2011-12-06 22 views
6

hadoop ghi ở định dạng SequenceFile bằng định dạng cặp khóa (giá trị). Hãy xem xét chúng tôi có một tệp nhật ký không bị chặn lớn. Hadoop sẽ chia nhỏ tệp dựa trên kích thước khối và lưu chúng trên nhiều nút dữ liệu. Có đảm bảo rằng mỗi cặp khóa-giá trị sẽ nằm trên một khối duy nhất không? hoặc chúng ta có thể có một trường hợp sao cho khóa nằm trong một khối trên nút 1 và giá trị (hoặc một phần của nó) trên khối thứ hai trên nút 2? Nếu chúng ta có thể có phân chia toàn bộ unmeaning, thì giải pháp là gì? đánh dấu đồng bộ hóa?Tách SequenceFile theo cách được kiểm soát - Hadoop

Một câu hỏi khác là: Hadoop có tự động viết đánh dấu đồng bộ hoặc chúng ta nên viết thủ công không?

Trả lời

9

Tôi đã đặt câu hỏi này trong danh sách gửi thư hadoop. Họ đã trả lời:

Dấu đồng bộ được ghi thành tệp chuỗi, chúng là một phần của định dạng . Điều này không có gì phải lo lắng - và đủ đơn giản để thử nghiệm và tự tin. Cơ chế này giống như đọc văn bản tệp với dòng mới - người đọc sẽ đảm bảo đọc ra khỏi ranh giới dữ liệu để hoàn thành bản ghi nếu cần.

Sau đó tôi hỏi:

Vì vậy, nếu chúng ta có một công việc bản đồ phân tích chỉ khối thứ hai của tập tin log , nó không nên chuyển bất kỳ bộ phận khác về điều đó từ các nút khác vì phần đó là đứng một mình và có nghĩa là phân chia đầy đủ? Tôi có đúng không?

Họ trả lời:

Yes. Đơn giản chỉ cần đặt, hồ sơ của bạn sẽ không bao giờ phá vỡ. Chúng tôi không đọc chỉ tại ranh giới chia tách, chúng tôi có thể mở rộng vượt ra ngoài ranh giới cho đến khi bắt buộc phải có một mốc đồng bộ để hoàn thành bản ghi hoặc chuỗi các bản ghi . Những người vẽ bản đồ tiếp theo sẽ luôn bỏ qua cho đến khi điểm đánh dấu đồng bộ đầu tiên của họ và sau đó bắt đầu đọc - để tránh trùng lặp. Đây là chính xác cách đọc tệp văn bản hoạt động như thế nào - chỉ tại đây, đây là dòng mới.

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