Hadoop MapReduce là gì

Khái niệm : Mapreduce là một mô hình lập trình, thực hiện quá tình xử lý tập dữ liệu lớn. Mapreduce gồm 2 pha : map và reduce. Hàm Map : Các xử lý một cặp [key, value] để sinh ra một cặp [keyI, valueI] - key và value trung gian. Dữ liệu này input vào hàm Reduce.

Hàm Reduce : Tiếp nhận các [keyI, valueI] và trộn các cặp [keyI, valueI] trung gian , lấy ra các valueI có cùng keyI.

Việc của lập trình viên là quan tâm tới 2 hàm Map và Reduce. Còn các vấn đề khác như : phân chia các dữ liệu đầu vào, lịch trình thực thi các machines, handling các machines failure, quản lý việc giao tiếp giữa các machines là việc của hệ thống run-time. => Lập trình viên có thể không có kinh nghiệm về hệ thống song song và phân tán vẫn dễ dàng vận hành một hệ thống phân tán lớn.

Áp dụng mô hình MapReduce chạy trên lượng lớn các machine cỡ hàng ngàn machine và data lên đến mức Terabytes.

Các job sau dễ dàng sử dụng Mapreduce:

  • Thống kê số từ khóa xuất hiện trong các documents.
  • Thống kê số documents có chứa từ khóa.
  • Thống kê số câu match với pattern trong các documents.
  • Thống kê số URLs xuất hiện trong các web pages.
  • Thống kê số lượt truy cập các URLs.
  • Thống kê số từ khóa trên các hostnames.
  • Distributed Sort.

Hoạt động :

  • Ý tưởng
    • Chia vấn đề cần xử lý thành các phần nhỏ để xử lý.
    • Xử lý các phần nhỏ đó một cách song song và độc lập trên các máy tính phân tán.
    • Tổng hợp các kết quả thu được để dưa ra kết quả cuối cùng.
  • Hoạt động của MapReduce có thể được tóm tắt như sau:
    • Đọc dữ liệu đầu vào
    • Xử lý dữ liệu đầu vào [thực hiện hàm map]
    • Sắp xếp và trộn các kết quả thu được từ các máy tính phân tán thích hợp nhất.
    • Tổng hợp các kết quả trung gian thu được [ thực hiện hàm reduce]
    • Đưa ra kết quả cuối cùng.
  • Sơ đồ :
  • Ví dụ với bài toán wordcount

Implementation

  1. Thông qua thư viện MapReduce ứng dụng với từng ngôn ngữ, chương trình có nhiệm vụ phân mảnh tệp dữ liệu đầu vào. Dữ liệu vào được chia thành các phần nhỏ 16 megabytes đến 64 megabytes [MB]. Sau đó khởi động việc sao chép chương trình trên các clusters.
  2. Các máy gồm có: master và worker. Trong đó máy master làm nhiệm vụ điều phối sự hoạt động của quá trình thực hiện MapReduce trên các máy worker, các máy worker làm nhiệm vụ thực hiện Map và Reduce với dữ liệu mà nó nhận được. Bằng cách đặt trạng thái idle máy workers và sau đó gắn cho từng máy task map hoặc reduce.
  3. Máy master sẽ thực hiện phân phối các tác vụ Map và Reduce vào các worker đang rãnh rỗi. Các tác vụ này được master phân phối cho các máy tính dựa trên vị trí của dữ liệu liên quan trong hệ thống. Máy worker khi nhận được tác vụ Map sẽ đọc dữ liệu mà nó nhận từ phân vùng dữ liệu đã gán cho nó và thực hiện hàm Map. Kết quả đầu ra là các cặp [keyI,valueI] trung gian. Các cặp này được lưu tạm trên bộ nhớ đệm của các máy.
  4. Sau khi thực hiện xong công việc Map, các máy worker làm nhiệm vụ chia các giá trị trung gian thành R vùng [ tương ứng với R tác vụ Reduce] lưu xuống đĩa và thông báo kết quả, vị trí lưu cho máy master.
  5. Master sẽ gán giá trị trung gian và vị trí của các dữ liệu đó cho các máy thực hiện công việc Reduce. Các máy reducer làm nhiệm vụ xử lý sắp xếp các key, thực hiện hàm Reduce và đưa ra kết quả cuối cùng.
  6. Master sẽ kích hoạt thông báo cho chương trình người dùng quá trình MapReduce đã hoàn tất, kết quả đầu ra được lưu trữ trên R tập tin.

Nguồn dẫn từ :
[1] Jeffrey Dean, Sanjay Ghemawat. Mapreduce : Simplified Data Processing on Large Clusters. In OSDI, 2004

Phần tới sẽ nói về thực thi trên Hadoop và sâu hơn về mapreduce.

Cùng một tác giả

21 2

Mở đầu Khi bạn đi sâu vào thế giới linux , bạn tìm thấy nhiều điều khó có thể hiểu ngay lập tức. Và 1 trong những thứ này là khái niệm socket. Tô...

15 0

Hadoop là cái gì vậy? “Hadoop là một framework nguồn mở viết bằng Java cho phép phát triển các ứng dụng phân tán có cường độ dữ liệu lớn một cách ...

13 0

Trước khi so sánh khác nhau về HDFS và HDFS2. Chúng ta đi tìm hiểu về HDFS là cái gì, kiến trúc thế nào? Vì sao điều này lại quan trọng. Bởi vì đâ...

Bài viết liên quan

15 0

Hadoop là cái gì vậy? “Hadoop là một framework nguồn mở viết bằng Java cho phép phát triển các ứng dụng phân tán có cường độ dữ liệu lớn một cách ...

6 0

Khoảng 5, 7 năm nay NOSQL là đề tài rất nóng bỏng. SQL phổ biến thì chỉ có khoảng vài ba cái như PostgreSQL, MySQL, MS SQL, Oracle nói chung na na ...

13 0

Trước khi so sánh khác nhau về HDFS và HDFS2. Chúng ta đi tìm hiểu về HDFS là cái gì, kiến trúc thế nào? Vì sao điều này lại quan trọng. Bởi vì đâ...

MapReduce là một khuôn khổ phần mềm và mô hình lập trình được sử dụng để xử lý một lượng lớn dữ liệu. Chương trình MapReduce hoạt động trong hai giai đoạn, đó là Map và reduce. Các tác vụ Map giải quyết việc chia nhỏ và ánh xạ dữ liệu trong khi reduce tác vụ xáo trộn và reduce dữ liệu.

Hadoop có khả năng chạy các chương trình MapReduce được viết bằng nhiều ngôn ngữ khác nhau: Java, Ruby, Python và C ++. Các chương trình của Map Reduce trong điện toán đám mây có tính chất song song, do đó rất hữu ích để thực hiện phân tích dữ liệu quy mô lớn sử dụng nhiều máy trong cụm.

Đầu vào cho mỗi pha là các cặp key-value . Ngoài ra, mọi lập trình viên cần xác định hai chức năng: map function  và  reduce function

Giải thích chi tiết về Kiến trúc MapReduce trong Dữ liệu lớn

Toàn bộ quá trình trải qua bốn giai đoạn thực hiện là chia tách, ánh xạ, xáo trộn và reduce bớt.

Bây giờ trong hướng dẫn MapReduce này, chúng ta hãy hiểu với một ví dụ về MapReduce–

Hãy xem xét bạn có dữ liệu đầu vào sau cho Chương trình MapReduce trong Big Data

Chào mừng bạn đến với Hadoop Lớp 

Hadoop tốt 

Hadoop xấu

Kiến trúc MapReduce

Kết quả cuối cùng của tác vụ MapReduce là

bad 1
Class 1
good 1
Hadoop 3
is 2
to 1
Welcome 1

Dữ liệu trải qua các giai đoạn sau của MapReduce trong Dữ liệu lớn

Tách đầu vào:

Đầu vào cho một công việc MapReduce trong Dữ liệu lớn được chia thành các phần có kích thước cố định được gọi là  phần tách đầu vào Phần chia  đầu vào là một phần của đầu vào được sử dụng bởi một Map

Lập Map

Đây là giai đoạn đầu tiên trong quá trình thực hiện chương trình thu nhỏ Map. Trong giai đoạn này, dữ liệu trong mỗi lần tách được chuyển đến một hàm ánh xạ để tạo ra các giá trị đầu ra. Trong ví dụ của chúng tôi, công việc của giai đoạn ánh xạ là đếm một số lần xuất hiện của mỗi từ từ các phần tách đầu vào [chi tiết hơn về phần tách đầu vào được đưa ra bên dưới] và chuẩn bị một danh sách ở dạng

Xáo trộn

Giai đoạn này tiêu thụ đầu ra của giai đoạn Ánh xạ. Nhiệm vụ của nó là hợp nhất các bản ghi có liên quan từ đầu ra của giai đoạn Lập Map. Trong ví dụ của chúng tôi, các từ giống nhau được ghép lại với nhau cùng với tần suất tương ứng của chúng.

reduce

Trong giai đoạn này, các giá trị đầu ra từ giai đoạn Ngẫu nhiên được tổng hợp. Giai đoạn này kết hợp các giá trị từ giai đoạn xáo trộn và trả về một giá trị đầu ra duy nhất. Tóm lại, giai đoạn này tóm tắt toàn bộ tập dữ liệu.

Trong ví dụ của chúng tôi, giai đoạn này tổng hợp các giá trị từ giai đoạn Xáo trộn, tức là, tính toán tổng số lần xuất hiện của mỗi từ.

  • Một tác vụ Map được tạo cho mỗi phần tách, sau đó thực thi chức năng Map cho mỗi bản ghi trong phần tách.
  • Luôn luôn có lợi khi có nhiều phần tách vì thời gian cần để xử lý một phần nhỏ hơn so với thời gian thực hiện để xử lý toàn bộ đầu vào. Khi các phần tách nhỏ hơn, quá trình xử lý sẽ tốt hơn để cân bằng tải vì chúng tôi đang xử lý các phần tách song song.
  • Tuy nhiên, cũng không nên mong muốn có các vết chia có kích thước quá nhỏ. Khi các phần tách quá nhỏ, sự quá tải của việc quản lý các phần tách và tạo tác vụ Map bắt đầu chi phối tổng thời gian thực hiện công việc.
  • Đối với hầu hết các công việc, tốt hơn nên tạo kích thước chia nhỏ bằng kích thước của khối HDFS [theo mặc định là 64 MB].
  • Việc thực thi các tác vụ Map dẫn đến việc ghi đầu ra vào đĩa cục bộ trên nút tương ứng chứ không phải HDFS.
  • Lý do chọn đĩa cục bộ trên HDFS là để tránh sao chép diễn ra trong trường hợp hoạt động của cửa hàng HDFS.
  • Đầu ra Map là đầu ra trung gian được xử lý bằng các tác vụ reduce để tạo ra đầu ra cuối cùng.
  • Khi công việc hoàn thành, đầu ra Map có thể bị vứt bỏ. Vì vậy, lưu trữ nó trong HDFS với sự sao chép trở nên quá mức cần thiết.
  • Trong trường hợp nút bị lỗi, trước khi tác vụ thu gọn sử dụng đầu ra Map, Hadoop sẽ chạy lại nhiệm vụ Map trên một nút khác và tạo lại đầu ra Map.
  • Tác vụ reduce không hoạt động trên khái niệm địa phương dữ liệu. Đầu ra của mọi tác vụ Map được cấp cho tác vụ thu gọn. Đầu ra Map được chuyển đến máy nơi tác vụ reduce đang chạy.
  • Trên máy này, đầu ra được hợp nhất và sau đó được chuyển đến hàm reduce do người dùng xác định.
  • Không giống như đầu ra Map, đầu ra reduce được lưu trữ trong HDFS [bản sao đầu tiên được lưu trữ trên nút cục bộ và các bản sao khác được lưu trữ trên các nút ngoài giá đỡ]. Vì vậy, viết reduce sản lượng

Bây giờ trong hướng dẫn MapReduce này, chúng ta sẽ tìm hiểu cách hoạt động của MapReduce

Hadoop chia công việc thành các nhiệm vụ. Có hai loại nhiệm vụ:

  1. Map  [Tách & Lập Map]
  2. reduce [xáo trộn, reduce]

như đã đề cập ở trên.

Quá trình thực thi hoàn chỉnh [thực hiện các tác vụ Map và Rút gọn, cả hai] được kiểm soát bởi hai loại thực thể được gọi là

  1. Jobtracker : Hoạt động như một  master  [chịu trách nhiệm thực hiện hoàn chỉnh công việc đã nộp]
  2. Nhiều Trình theo dõi Nhiệm vụ : Hành động như  slave,  mỗi người trong số họ thực hiện công việc

Đối với mỗi công việc được gửi để thực thi trong hệ thống, có một  Trình theo dõi công  việc nằm trên  Namenode  và có  nhiều trình theo dõi  tác vụ nằm trên  Datanode .

Cách hoạt động của Hadoop MapReduce

  • Một công việc được chia thành nhiều nhiệm vụ sau đó được chạy trên nhiều nút dữ liệu trong một cụm.
  • Người theo dõi công việc có trách nhiệm điều phối hoạt động bằng cách lên lịch cho các tác vụ chạy trên các nút dữ liệu khác nhau.
  • Việc thực thi nhiệm vụ riêng lẻ sau đó được theo dõi bởi trình theo dõi tác vụ, nằm trên mọi nút dữ liệu đang thực thi một phần của công việc.
  • Trách nhiệm của trình theo dõi công việc là gửi báo cáo tiến độ đến trình theo dõi công việc.
  • Ngoài ra, trình theo dõi nhiệm vụ định kỳ gửi  tín hiệu heartbea đến Trình theo dõi công việc  để thông báo cho anh ta về trạng thái hiện tại của hệ thống. 
  • Do đó, trình theo dõi công việc theo dõi tiến độ tổng thể của từng công việc. Trong trường hợp nhiệm vụ bị lỗi, trình theo dõi công việc có thể lên lịch lại trên một trình theo dõi nhiệm vụ khác.

Video liên quan

Chủ Đề