Mapreduce là gì? Tổng quan thông tin về mô hình lập trình Mapreduce
Mapreduce là một trong những thành phần quan trọng không thể thiếu để nâng cao sức mạnh của Hadoop. Đây là một khuôn khổ phần mềm và mô hình lập trình được sử dụng chủ yếu cho mục đích xử lý lượng dữ liệu khổng lồ. Vậy Mapreduce là gì và cách hoạt động của Mapreduce là như thế nào?
Bài viết mà Bizfly Cloud chia sẻ dưới đây không chỉ giúp giải đáp toàn bộ những thắc mắc nói trên mà còn bổ sung thêm cho bạn một số kiến thức quan trọng có liên quan khác.
Mapreduce là gì?
Mapreduce là một mô hình được Google thiết kế độc quyền với khả năng lập trình xử lý một lượng lớn các dữ liệu song song đồng thời phân tán các thuật toán trên cùng một máy tính. Mặc dù Mapreduce ban đầu là một công nghệ độc quyền của Google nhưng trong thời gian gần đây, Mapreduce đang dần trở thành một trong những thuật ngữ tổng quát hoá.
Mapreduce sẽ bao gồm hai thủ tục (giai đoạn) chính là Map và Reduce.
- Thủ tục Map bao gồm bộ lọc (filter) và phân loại (sort) trên dữ liệu.
- Thủ tục Reduce sẽ thực hiện quá trình tổng hợp toàn bộ dữ liệu.
Mô hình Mapreduce được thiết kế dựa trên các khái niệm biến đổi của một bản đồ và thiết lập các chức năng lập trình đi theo hướng chức năng. Thư viện của thủ tục Map và thủ tục Reduce sẽ được viết bằng đa dạng các loại ngôn ngữ lập trình khác nhau. Các thủ tục này sẽ được cài đặt hoàn toàn miễn phí và Apache Hadoop là thủ tục MapReduce được sử dụng phổ biến nhất.
Những ưu điểm nổi bật của mapreduce là gì?
Sử dụng tốt Mapreduce, bạn sẽ có thể thấy được những ưu điểm nổi bật của nó đó là:
- Mapreduce có thể dễ dàng xử lý tất cả mọi bài toán có lượng dữ liệu khổng lồ nhờ khả năng tính toán và tác vụ phân tích phức tạp. Chỉ trong một khoảng thời gian ngắn, nó có thể nhanh chóng xử lý và đưa ra kết quả dễ dàng.
- Mapreduce có khả năng chạy song song trên các máy tính có sự phân tán khác nhau với khả năng hoạt động độc lập kết hợp với việc phân tán và xử lý các lỗi kỹ thuật để mang đến hiệu quả cao cho toàn bộ hệ thống.
- Mapreduce có khả năng thực hiện được trên đa dạng nhiều loại ngôn ngữ lập trình khác nhau như ngôn ngữ C/C++, Java, Perl, Python, Ruby,... cùng với những thư viện hỗ trợ tương ứng.
- Mã độc trên Internet ngày càng nhiều khiến cho việc xử lý các đoạn mã độc này trở nên phức tạp và tiêu tốn nhiều thời gian hơn. Do đó, Mapreduce đang dần hướng quan tâm nhiều hơn cho việc phát hiện các mã độc để có thể nhanh chóng xử lý các đoạn mã độc đó. Nhờ đó, hệ điều hành được đảm bảo vận hành trơn tru với tính bảo mật cao nhất.
Các hàm hay dùng trong Mapreduce?
Mapreduce bao gồm hai hàm chính là hàm Map và hàm Reduce. Đây là hai hàm được chính người dùng định nghĩa và nó cũng chính là hai giai đoạn nối tiếp nhau trong quy trình xử lý dữ liệu của Mapreduce. Các hàm này có nhiệm vụ chính cụ thể như sau:
- Hàm Map: Hàm này có nhiệm vụ là xử lý một cặp key (key, value) để tạo ra một cặp key mới (keyl, valuel), lúc này cặp key (keyl, valuel) sẽ đóng vai trò là trung gian. Sau đó, người dùng chỉ cần ghi dữ liệu xuống đĩa cứng và nhanh chóng tiến hành thông báo cho hàm Reduce để dữ liệu đi vào input của Reduce.
- Hàm Reduce: Hàm này có nhiệm vụ là tiếp nhận cặp từ khoá trung gian và giá trị tương ứng với lượng từ khoá đó (keyl, valuel) để tạo thành một tập khoá khác nhau bằng cách tiến hành ghép chúng lại. Các cặp khoá/giá trị này sẽ được đưa vào các hàm Reduce thông qua một con trỏ vị trí. Quá trình này sẽ giúp cho các lập trình viên dễ dàng quản lý được một lượng danh sách lớn cũng như phân bổ giá trị phù hợp với bộ nhớ hệ thống.
Ngoài ra, ở giữa Map và Reduce còn một bước trung gian khác mang tên Shuffle. Sau khi Map hoàn thành xong nhiệm vụ của mình thì Shuffle sẽ tiếp tục công việc thu thập cũng như tổng hợp cặp từ khoá/giá trị trung gian đã được tạo ra bởi Map trước đó và chuyển nó đến Reduce để tiếp tục xử lý.
Mapreduce hoạt động như thế nào?
MapReduce hoạt động bằng cách xử lý dữ liệu đầu vào trong hai giai đoạn, đó là Map và Reduce:
- Tác vụ Map lấy một tập dữ liệu và chuyển đổi nó thành một tập dữ liệu khác, trong đó các phần tử riêng lẻ được chia nhỏ thành các bộ giá trị (cặp key-value).
- Tác vụ Reduce lấy output từ Map làm input và kết hợp các bộ dữ liệu đó (cặp key-value) thành một bộ bộ giá trị nhỏ hơn.
Tác vụ Reduce luôn được thực hiện sau tác vụ Map.
Bây giờ, chúng ta hãy xem xét kỹ từng giai đoạn (phase) và cách hoạt động của chúng qua hình minh hoạt dưới đây.
- Input - Ở đây chúng ta có Record Reader dịch từng bản ghi (record) trong tệp input và gửi parsed data tới mapper dưới dạng các cặp key-value.
- Map - Map là một chức năng do người dùng định nghĩa, lấy một loạt các cặp key-value và xử lý từng cặp một để tạo ra 0 hoặc nhiều cặp key-value.
- Intermediate Keys - Các cặp key-value do mapper tạo ra được gọi là các Intermediate Key.
- Combiner - Combiner là một loại local Reducer, nó nhóm dữ liệu tương tự từ giai đoạn Map thành các tập hợp có thể xác định được. Nó lấy các Intermediate Key từ mapper làm input và apply mã do người dùng xác định (user-defined code) để tổng hợp các giá trị trong một phạm vi nhỏ của một mapper. Combiner là tùy chọn, không phải là một phần bắt buộc của thuật toán MapReduce chính.
- Shuffle & Sort - Tác vụ Reduce bắt đầu với bước Shuffle & Sort. Nó tải các cặp key-value đã nhóm vào máy cục bộ (local machine), nơi Reducer đang chạy. Các cặp key-value riêng lẻ được sắp xếp theo key thành một danh sách dữ liệu lớn hơn. Danh sách dữ liệu nhóm các key tương đương với nhau để các value của chúng có thể được lặp lại một cách dễ dàng trong tác vụ Reducer.
- Reducer - Reducer lấy dữ liệu được ghép cặp key-value được nhóm làm input và chạy chức năng Reducer trên một trong số chúng. Tại đây, dữ liệu có thể được tổng hợp, lọc và kết hợp theo một số cách và nó yêu cầu nhiều quá trình xử lý. Khi quá trình thực thi kết thúc, nó không cung cấp hoặc cung cấp nhiều cặp key-value cho bước cuối cùng.
- Output - Trong giai đoạn này, chúng ta có một output formatter để dịch các cặp key-value cuối cùng từ chức năng Reducer và ghi chúng vào một tệp bằng record writer.
Ví dụ cụ thể về cách hoạt động của MapReduce
Hãy xem xét một ví dụ thực tế để hiểu được sức mạnh của MapReduce. Twitter nhận được khoảng 500 triệu tweet mỗi ngày, tức là gần 3000 tweet mỗi giây. Hình minh họa sau đây cho thấy cách Twitter quản lý các tweet của mình với sự trợ giúp của MapReduce:
Trong hình minh họa, thuật toán MapReduce thực hiện các hành động sau:
- Tokenize - Mã hóa các tweet thành bản đồ token và viết chúng dưới dạng các cặp key-value.
- Filter - Lọc các từ không mong muốn khỏi bản đồ token và viết bản đồ đã lọc dưới dạng cặp key-value.
- Count- Tạo bộ đếm token cho mỗi từ.
- Aggregate Counters - Chuẩn bị tổng hợp các giá trị bộ đếm tương tự thành các đơn vị nhỏ có thể quản lý được.
Bài viết Mapreduce là gì cùng những thông tin hữu ích có liên quan khác mà Bizfly Cloud đã chia sẻ chắc chắn sẽ mang lại cho bạn đọc những kiến thức bổ ích nhất trong việc xử lý dữ liệu. Nếu bạn đam mê với công việc lập trình thì không nên bỏ qua bài viết này để bổ sung thêm kiến thức, kỹ năng cũng như kinh nghiệm lập trình cho bản thân mình.
BizFly Cloud là nhà cung cấp dịch vụ điện toán đám mây với chi phí thấp, được vận hành bởi VCCorp.
BizFly Cloud là một trong 4 doanh nghiệp nòng cốt trong "Chiến dịch thúc đẩy chuyển đổi số bằng công nghệ điện toán đám mây Việt Nam" của Bộ TT&TT; đáp ứng đầy đủ toàn bộ tiêu chí, chỉ tiêu kỹ thuật của nền tảng điện toán đám mây phục vụ Chính phủ điện tử/chính quyền điện tử.
Độc giả quan tâm đến các giải pháp của BizFly Cloud có thể truy cập tại đây.
DÙNG THỬ MIỄN PHÍ và NHẬN ƯU ĐÃI 3 THÁNG tại: Manage.bizflycloud