Video: Go-Viet xóa Hoàng Sa, Trường Sa khỏi bản đồ trên app? 2025
Một ứng dụng MapReduce xử lý dữ liệu trong phân tách đầu vào trên cơ sở ghi lại bản ghi-ghi-kỷ lục và mỗi bản ghi được hiểu bởi MapReduce là một khóa / giá trị cặp. Sau khi đã tính toán phân chia đầu vào, các tác vụ lập bản đồ có thể bắt đầu xử lý chúng - tức là ngay sau khi cơ sở lập lịch trình của Resource Manager phân bổ cho họ các tài nguyên xử lý của chúng. (Trong Hadoop 1, JobTracker chỉ định nhiệm vụ lập bản đồ đến các khe chế biến cụ thể.)
Nhiệm vụ mapper tự xử lý phân chia đầu vào của nó một lần - trong hình, bản ghi này được biểu diễn bởi cặp khóa / giá trị. Trong trường hợp dữ liệu chuyến bay của chúng tôi, khi phân chia đầu vào được tính (sử dụng phương pháp xử lý tệp mặc định cho tệp văn bản), giả định là mỗi hàng trong tệp văn bản là một bản ghi.
Đối với mỗi bản ghi, văn bản của hàng chính nó đại diện cho giá trị, và byte bù đắp của mỗi hàng từ đầu chia tách được coi là chìa khóa.
Bạn có thể tự hỏi tại sao số hàng không được sử dụng thay vì byte bù đắp. Khi bạn xem xét rằng một tệp văn bản rất lớn được chia nhỏ thành nhiều khối dữ liệu cá nhân và được xử lý như nhiều phân chia, số lượng hàng là một khái niệm rủi ro.
Số dòng trong mỗi phân chia khác nhau, vì vậy sẽ không thể tính được số hàng trước một dòng được xử lý. Tuy nhiên, với byte offset, bạn có thể chính xác, bởi vì mỗi khối có một số byte cố định.
Là một tác vụ lập bản đồ xử lý mỗi bản ghi, nó tạo ra một cặp khóa / giá trị mới: Khóa và giá trị ở đây có thể hoàn toàn khác với cặp nhập vào. Đầu ra của tác vụ lập bản đồ là bộ sưu tập đầy đủ của tất cả cặp khóa / giá trị này.
Trước khi xuất tập tin đầu ra cuối cùng cho mỗi tác vụ lập bản đồ, đầu ra được phân chia theo khoá và được sắp xếp. Phân vùng này có nghĩa là tất cả các giá trị cho mỗi khoá được nhóm lại với nhau.
Trong trường hợp ứng dụng mẫu cơ bản khá đơn giản, chỉ có một bộ giảm thiểu duy nhất, vì vậy tất cả các đầu ra của tác vụ lập bản đồ được ghi vào một tệp duy nhất. Nhưng trong trường hợp có nhiều trình làm giảm, mọi tác vụ lập bản đồ cũng có thể tạo nhiều tệp đầu ra.
Sự phân mảnh của các tập tin đầu ra này được dựa trên khóa phân vùng. Ví dụ: nếu chỉ có ba khoá phân vùng riêng biệt cho các tác vụ lập bản đồ và bạn đã định cấu hình ba trình giảm thiểu cho công việc, sẽ có ba tệp đầu ra của bản đồ. Trong ví dụ này, nếu một công việc lập bản đồ cụ thể xử lý phân chia đầu vào và tạo ra kết quả với hai trong số ba phím, sẽ chỉ có hai tệp xuất.
Luôn nén các tác phẩm đầu ra của tác vụ bản đồ. Lợi ích lớn nhất ở đây là tăng hiệu suất, bởi vì việc viết các tệp đầu ra nhỏ hơn giảm thiểu chi phí không thể tránh khỏi của việc truyền sản lượng bản đồ tới các nút mà các trình điều khiển đang chạy.
Bộ phân vùng mặc định là quá đủ trong hầu hết các tình huống, nhưng đôi khi bạn có thể muốn tùy chỉnh cách dữ liệu được phân vùng trước khi nó được xử lý bởi các trình làm giảm. Ví dụ: bạn có thể muốn dữ liệu trong bộ kết quả của mình được sắp xếp theo khóa và các giá trị của chúng - được gọi là loại thứ cấp .
Để thực hiện việc này, bạn có thể ghi đè lên trình phân vùng mặc định và thực hiện theo cách của riêng mình. Quá trình này yêu cầu một số lưu ý, tuy nhiên, bởi vì bạn sẽ muốn đảm bảo rằng số lượng các bản ghi trong mỗi phân vùng là thống nhất. (Nếu một bộ giảm tốc phải xử lý nhiều dữ liệu hơn các bộ phận giảm tốc khác, bạn sẽ đợi công việc MapReduce của bạn kết thúc trong khi bộ giảm tốc quá tải đang làm giảm thông qua bộ dữ liệu không lớn của nó)
Sử dụng các tệp trung gian có kích thước chuẩn, bạn tốt hơn có thể tận dụng lợi thế của song song có sẵn trong xử lý MapReduce.