Trong bài viết trước đó, chúng tôi đã cung cấp cho bạn đọc thông tin chi tiết về framework Hadoop. Bài viết tiếp theo này sẽ tập trung vào một trong những thành phần quan trọng nhất của Hadoop, đó là MapReduce. Chúng ta sẽ cùng nhau tìm hiểu về MapReduce, đặt ra câu hỏi là nó là gì, cách nó hoạt động, và những hàm chính mà nó sử dụng. Tất cả những thông tin này sẽ được chúng tôi trình bày chi tiết trong bài viết dưới đây!
MapReduce là gì?
MapReduce là một mô hình đặc biệt được Google phát triển, chú trọng vào khả năng lập trình hiệu quả cho xử lý đồng thời và phân tán thuật toán trên nhiều máy tính trong một cụm. Được xây dựng để xử lý các tập dữ liệu lớn, MapReduce đã trở thành một khía cạnh quan trọng của quá trình phân tán và song song hóa trong thời kỳ gần đây.
Định nghĩa Mapreduce là gì?
MapReduce sẽ bao gồm những thủ tục sau: thủ tục 1 Map() và 1 Reduce(). Thủ tục Map() bao gồm lọc (filter) và phân loại (sort) trên dữ liệu khi thủ tục khi thủ tục Reduce() thực hiện quá trình tổng hợp dữ liệu. Đây là mô hình dựa vào các khái niệm biển đối của bản đồ và reduce những chức năng lập trình theo hướng chức năng. Thư viện của thủ tục Map() và Reduce() sẽ được viết bằng nhiều loại ngôn ngữ khác nhau. Thủ tục được cài đặt miễn phí và được sử dụng phổ biến nhất là là Apache Hadoop.
Các hàm chính của MapReduce là gì?
MapReduce có 2 hàm chính là Map() và Reduce(), đây là 2 hàm đã được định nghĩa bởi người dùng và nó cũng chính là 2 giai đoạn liên tiếp trong quá trình xử lý dữ liệu của MapReduce. Nhiệm vụ cụ thể của từng hàm như sau:
- Hàm Map(): có nhiệm vụ nhận Input cho các cặp giá trị/ khóa và output chính là tập những cặp giá trị/khóa trung gian. Sau đó, chỉ cần ghi xuống đĩa cứng và tiến hành thông báo cho các hàm Reduce() để trực tiếp nhận dữ liệu.
- Hàm Reduce(): có nhiệm vụ tiếp nhận từ khóa trung gian và những giá trị tương ứng với lượng từ khóa đó. Sau đó, tiến hành ghép chúng lại để có thể tạo thành một tập khóa khác nhau. Các cặp khóa/giá trị này thường sẽ thông qua một con trỏ vị trí để đưa vào các hàm reduce. Quá trình này sẽ giúp cho lập trình viên quản lý dễ dàng hơn một lượng danh sách cũng như phân bổ giá trị sao cho phù hợp nhất với bộ nhớ hệ thống.
- Ở giữa Map và Reduce thì còn 1 bước trung gian đó chính là Shuffle. Sau khi Map hoàn thành xong công việc của mình thì Shuffle sẽ làm nhiệm vụ chính là thu thập cũng như tổng hợp từ khóa/giá trị trung gian đã được map sinh ra trước đó rồi chuyển qua cho Reduce tiếp tục xử lý.
Các hàm của Mapreduce
Các ưu điểm nổi bật của MapReduce
Mapreduce được ưa chuộng sử dụng như vậy bởi nó sở hữu nhiều ưu điểm vượt trội như sau:
- MapReduce có khả năng xử lý dễ dàng mọi bài toán có lượng dữ liệu lớn nhờ khả năng tác vụ phân tích và tính toán phức tạp. Nó có thể xử lý nhanh chóng cho ra kết quả dễ dàng chỉ trong khoảng thời gian ngắn.
- Mapreduce có khả năng chạy song song trên các máy có sự phân tán khác nhau. Với khả năng hoạt động độc lập kết hợp phân tán, xử lý các lỗi kỹ thuật để mang lại nhiều hiệu quả cho toàn hệ thống.
- MapRedue có khả năng thực hiện trên nhiều nguồn ngôn ngữ lập trình khác nhau như: Java, C/ C++, Python, Perl, Ruby,… tương ứng với nó là những thư viện hỗ trợ.
- Như bạn đã biết, mã độc trên internet ngày càng nhiều hơn nên việc xử lý những đoạn mã độc này cũng trở nên rất phức tạp và tốn kém nhiều thời gian. Chính vì vậy, các ứng dụng MapReduce dần hướng đến quan tâm nhiều hơn cho việc phát hiện các mã độc để có thể xử lý chúng. Nhờ vậy, hệ thống mới có thể vận hành trơn tru và được bảo mật nhất.
Mapreduce có khả năng xử lý nhanh chóng lượng dữ liệu lớn
MapReduce sẽ hoạt động như thế nào?
Nguyên tắc hoạt động
Mapreduce hoạt động dựa vào nguyên tắc chính là “Chia để trị”, như sau:
- Phân chia các dữ liệu cần xử lý thành nhiều phần nhỏ trước khi thực hiện.
- Xử lý các vấn đề nhỏ theo phương thức song song trên các máy tính rồi phân tán hoạt động theo hướng độc lập.
- Tiến hành tổng hợp những kết quả thu được để đề ra được kết quả sau cùng.
Các bước hoạt động của MapReduce
- Bước 1: Tiến hành chuẩn bị các dữ liệu đầu vào để cho Map() có thể xử lý.
- Bước 2: Lập trình viên thực thi các mã Map() để xử lý.
- Bước 3: Tiến hành trộn lẫn các dữ liệu được xuất ra bởi Map() vào trong Reduce Processor
- Bước 4: Tiến hành thực thi tiếp mã Reduce() để có thể xử lý tiếp các dữ liệu cần thiết.
- Bước 5: Thực hiện tạo các dữ liệu xuất ra cuối cùng.
Luồng dữ liệu nền tảng của Mapreduce
- Input Reader
- Map Function
- Partition Function
- Compare Function
- Reduce Function
- Output Writer
Ví dụ về tiến trình hoạt động của Mapreduce
Ví dụ cụ thể về hoạt động của MapReduce
- Theo sơ đồ phía trên thì người dùng sẽ thực hiện nhập dữ liệu vào, các dữ liệu đều sẽ được chia nhỏ từ 16MB đến 64MB. Ngay sau đó, thì hệ thống sẽ thực hiện khởi động việc sao chép trên các clusters.
- Hầu hết các máy đều có thể thực hiện xử lý các dữ liệu bao gồm như: master và worker. Trong số đó, máy master có nhiệm vụ điều phối cho những hoạt động bên trong quá trình thực hiện. Các máy worker sau khi đã nhận được dữ liệu thì sẽ tiến hành những nhiệm vụ Map và Reduce. Khi worker đã làm việc xong thì các kết quả đầu ra sẽ xuất hiện các cặp (key và value, các khóa và giá trị) trung gian, những cặp này sẽ được lưu tạm vào bộ nhớ đệm của máy bên trong hệ thống.
- Nếu như Map đã thành công, thì các worker sẽ thực hiện nhiệm vụ tiếp theo là thực hiện phân chia máy trung gian thành những vùng khác nhau. Sau đó, lưu chúng xuống đĩa rồi thông báo kết quả ngược lại cũng như vị trí lưu trữ cho máy master biết.
- Khi đã nhận được thông tin từ worker thì các máy master có thể gán các giá trị trung và vị trí của tệp dữ liệu đó cho máy thực hiện công việc Reduce. Hầu hết, các máy sẽ được nhận nhiệm vụ xử lý các hàm Reduce rồi xử lý các key, giá trị để có thể đưa ra kết quả cuối cùng.
- Khi quá trình MapReduce đã được hoàn tất thì các máy master đều sẽ được kích hoạt chức năng thông báo cho lập trình viên biết. Khi kết quả đầu ra đã được lưu trữ trên hệ thống thì người dùng có thể dễ dàng sử dụng chúng cũng như quản lý và sao lưu dễ dàng hơn.
Một số công việc có thể sử dụng MapReduce
Rất nhiều công việc có thể ứng dụng Mapreduce
MapReduce được ứng dụng cho việc thống kê hàng loạt những số liệu cụ thể như sau:
- Thực hiện thống kê cho các từ khóa được xuất hiện ở trong các tài liệu, bài viết, văn bản hoặc được cập nhật trên hệ thống fanpage, website,…
- Khi số lượng các bài viết đã được thống kê thì tài liệu sẽ có chứa các từ khóa đó.
- Sẽ có thể thống kê được những câu lệnh match, pattern bên trong các tài liệu đó
- Khi thống kê được số lượng các URLs có xuất hiện bên trong một webpages.
- Sẽ thống kê được các lượt truy cập của khách hàng sao cho nó có thể tương ứng với các URLs.
- Sẽ thống kê được tất cả từ khóa có trên website, hostname,…
Sau khi nắm bắt đầy đủ thông tin mà Blog chia sẻ ở trên, độc giả có lẽ đã hiểu được một phần về tầm quan trọng của MapReduce, phải không? Để xác nhận sức mạnh quan trọng của nó, bạn có thể tham khảo thêm về những ưu điểm nổi bật nhất của MapReduce trong bài viết tiếp theo của chúng tôi.
Trên đây, là tất cả thông tin mà chúng tôi cung cấp để giải thích về MapReduce và các chi tiết khác liên quan. Hy vọng rằng, bài viết này đã mang lại kiến thức hữu ích cho độc giả. Nếu bạn đam mê với nghề lập trình, hãy thử sức trong việc học tập, tìm hiểu, và nâng cao kiến thức, kỹ năng cũng như kinh nghiệm. Đây là những bước quan trọng để vượt qua thách thức và đạt được ước mơ của bạn.
Chúc bạn thành công trên hành trình chinh phục ước mơ của mình!