Mapreduce là gì? Tổng quan mô hình lập trình Mapreduce

0
3658

Bài viết trước, ITNavi đã  giới thiệu cho bạn đọc thông tin chi tiết về framework Hadoop. Và bài viết tiếp theo đây chúng ta sẽ cùng nhau nghiên cứu về một trong những thành phần quan trọng hàng đầu giúp nâng cao sức mạnh của Hadoop đó là Mapreduce. Vậy MapReduce là gì? Mapreduce hoạt động ra sao, các hàm chính của nó là gì? Tất cả những kiến thức trên sẽ được chúng tôi gửi đến bạn đọc thông qua bài viết sau đây!

MapReduce là gì?

MapReduce là mô hình được thiết kế độc quyền bởi Google, nó có khả năng lập trình xử lý các tập dữ liệu lớn song song và phân tán thuật toán trên 1 cụm máy tính. MapReduce trở thành một trong những thành ngữ tổng quát hóa trong thời gian gần đây. 

Định nghĩa Mapreduce là gì?

Đị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.

Top những công việc hàng đầu hiện nay:

Tuyển dụng java lương cao chế độ tốt

Tuyển dụng php với nhiều chế độ hấp dẫn

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 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 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ụ 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

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 tham khảo hết những kiến thức mà ITNavi chia sẻ phía trên thì chắc hẳn bạn đọc đã hiểu được phần nào tầm quan trọng của Mapreduce rồi đúng không nào? Để có thể khẳng định được sức mạnh quan trọng của nó thì bạn có thể tham khảo thêm bài viết những ưu điểm vượt trội nhất của Mapreduce mà chúng tôi cung cấp ở phần tiếp theo. 

Phía trên, là mọi mặt thông tin mà chúng tôi đưa ra để lý giải Mapreduce là gì cũng như những thông tin khác về MapReduce. Hy vọng rằng, bài viết này đã mang lại được cho bạn đọc những kiến thức bổ ích nhất. Nếu như bạn là người đam mê với công việc của một lập trình viên thì hãy thử sức học tập, tìm hiểu, trau dồi kiến thức, kỹ năng cũng như kinh nghiệm,… Đó chính là những bước tất yếu sẽ giúp bạn chinh phục được ngọn lửa đam mê để mở ra một tương lai tươi sáng nhất dành cho mình. 

Chúc bạn sớm thành công trên con đường chinh phục ước mơ!

LEAVE A REPLY

Please enter your comment!
Please enter your name here