MapReduce trong Hadoop là gì? ArchiKết cấu & Sơ đồ
⚡ Tóm tắt thông minh
MapReduce là mô hình lập trình của Hadoop giúp chuyển đổi tập dữ liệu lớn thành kết quả nhỏ gọn bằng cách chạy hàm map trên từng phần dữ liệu đầu vào và sau đó chạy hàm reduce trên các giá trị trung gian đã được nhóm lại.
MapReduce trong Hadoop là gì?
MapReduce là một khung phần mềm và mô hình lập trình được sử dụng để xử lý lượng dữ liệu khổng lồ. Các chương trình MapReduce hoạt động theo hai giai đoạn, đó là Map và Reduce. Tác vụ Map liên quan đến việc chia nhỏ và ánh xạ dữ liệu.ping trong khi giảm thiểu dữ liệu bằng cách sắp xếp lại các tác vụ và giảm bớt 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: Javahồng ngọc, Pythonvà C++Các chương trình MapReduce có bản chất song song, do đó chúng rất hữu ích cho việc thực hiện phân tích dữ liệu quy mô lớn bằng cách sử dụng nhiều máy trong cụm máy tính.
Đầu vào cho mỗi giai đoạn là các cặp khóa-giá trị. Ngoài ra, mỗi lập trình viên cần chỉ định hai hàm: một hàm ánh xạ (map) và một hàm giảm (reduce).
Bản đồGiảm Archikiến trúc trong Dữ liệu lớn được giải thích bằng Ví dụ
Toàn bộ quy trình trải qua bốn giai đoạn thực thi, đó là chia nhỏ, lập bản đồ.ping, xáo trộn và giảm bớt.
Trong bài hướng dẫn MapReduce này, chúng ta hãy cùng hiểu nó thông qua một ví dụ về MapReduce.
Giả sử bạn có dữ liệu đầu vào sau cho MapReduce của mình: Dữ Liệu Lớn. chương trình:
Welcome to Hadoop Class Hadoop is good Hadoop is bad
Sơ đồ bên dưới tracBa dòng đó được thể hiện xuyên suốt mọi giai đoạn, từ việc phân tách dữ liệu đầu vào ở bên trái đến việc đếm số từ cuối cùng ở bên phải.
Đầu ra cuối cùng của tác vụ MapReduce là
| xấu | 1 |
| Lớp | 1 |
| tốt | 1 |
| Hadoop | 3 |
| is | 2 |
| đến | 1 |
| Chào mừng | 1 |
Dữ liệu trải qua các giai đoạn sau của MapReduce trong Big Data.
Phân chia đầu vào
Dữ liệu đầu vào cho một tác vụ MapReduce trong Big Data được chia thành các phần có kích thước cố định gọi là các phần đầu vào (input splits). Một phần đầu vào là một phần của dữ liệu đầu vào được sử dụng bởi một hàm map duy nhất.
Bản đồping
Đây là giai đoạn đầu tiên trong quá trình thực thi chương trình MapReduce. Trong giai đoạn này, dữ liệu trong mỗi phân vùng được chuyển đến một map.ping Hàm này có nhiệm vụ tạo ra các giá trị đầu ra. Trong ví dụ của chúng ta, nhiệm vụ của hàm map là thực hiện điều đó.ping Bước này bao gồm việc đếm số lần xuất hiện của mỗi từ trong các phần dữ liệu đầu vào đã tách (thông tin chi tiết hơn về các phần dữ liệu đầu vào được trình bày bên dưới) và lập một danh sách dưới dạng... .
Xáo trộn
Giai đoạn này tiêu thụ đầu ra của Map.ping giai đoạn này. Nhiệm vụ của nó là hợp nhất các hồ sơ liên quan từ Bản đồ.ping Đầu ra pha. Trong ví dụ của chúng tôi, các từ giống nhau được nhóm lại với nhau cùng với tần suất tương ứng của chúng.
Giảm
Trong giai đoạn này, các giá trị đầu ra từ giai đoạn Xáo trộn được tổng hợp lại. 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. Nói 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à nó tính toán tổng số lần xuất hiện của mỗi từ.
Bản đồGiảm Archikiến trúc được giải thích chi tiết
Các điểm dưới đây giải thích cách các thao tác chia tách, ánh xạ tác vụ và giảm thiểu được đặt và lưu trữ trên toàn cụm máy chủ.
- Một tác vụ ánh xạ được tạo cho mỗi phân vùng, sau đó tác vụ này sẽ thực thi hàm ánh xạ cho mỗi bản ghi trong phân vùng đó.
- Việc chia nhỏ dữ liệu thành nhiều phần luôn có lợi vì thời gian xử lý mỗi phần nhỏ hơn nhiều so với thời gian xử lý toàn bộ dữ liệu đầu vào. Khi các phần nhỏ hơn, quá trình xử lý sẽ được cân bằng tải tốt hơn, vì các phần được xử lý song song.
- Tuy nhiên, việc chia nhỏ các phân vùng quá mức cũng không tốt. Khi các phân vùng quá nhỏ, chi phí quản lý các phân vùng và tạo các tác vụ ánh xạ bắt đầu chiếm phần lớn thời gian thực thi tổng thể của công việc.
- Đối với hầu hết các công việc, tốt hơn hết là nên chia kích thước bằng với kích thước của một phần. HDFS khối này, mặc định là 128 MB từ Hadoop 2.x trở đi (nó là 64 MB trong Hadoop 1.x) và được điều khiển bởi...
dfs.blocksizebất động sản. - Việc thực thi các tác vụ map sẽ ghi kết quả đầu ra vào ổ đĩa cục bộ trên nút tương ứng, chứ không phải vào HDFS.
- Lý do chọn ổ đĩa cục bộ thay vì HDFS là để tránh quá trình sao chép dữ liệu diễn ra trong quá trình lưu trữ trên HDFS.
- Đầu ra bản đồ là đầu ra trung gian được xử lý bằng các tác vụ rút gọn để tạo ra đầu ra cuối cùng.
- Sau khi công việc hoàn thành, đầu ra bản đồ có thể bị vứt đi. Vì vậy, việc lưu trữ nó trong HDFS với bản sao sẽ 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ụ rút gọn sử dụng đầu ra bản đồ, Hadoop sẽ chạy lại tác vụ bản đồ trên một nút khác và tạo lại đầu ra bản đồ.
- Các tác vụ reduce không hoạt động dựa trên khái niệm về tính cục bộ của dữ liệu. Đầu ra của mỗi tác vụ map được đưa vào tác vụ reduce. Đầu ra của 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 rút gọn do người dùng xác định.
- Khác với đầu ra của lệnh map, đầu ra của lệnh 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 rack). Do đó, việc ghi đầu ra của lệnh reduce tiêu tốn băng thông mạng, nhưng chỉ ở mức tương đương với một đường dẫn ghi HDFS thông thường.
MapReduce tổ chức hoạt động như thế nào?
Trong bài hướng dẫn về MapReduce này, chúng ta sẽ tìm hiểu cách thức hoạt động của MapReduce.
Hadoop chia công việc thành các tác vụ. Có hai loại tác vụ:
- Lập bản đồ nhiệm vụ (Chia nhỏ & Lập bản đồ)ping)
- Giảm bớt nhiệm vụ (Sắp xếp lại, Giảm bớt)
Toàn bộ quy trình thực thi, tức là việc thực thi cả tác vụ Map và Reduce, được điều khiển bởi hai loại thực thể được gọi là:
- Việc làmTracker: đóng vai trò như một người điều khiển chính và chịu trách nhiệm thực thi hoàn toàn một công việc đã được gửi đi.
- Nhiều nhiệm vụTracKers: hành xử như nô lệ, mỗi người thực hiện một phần công việc.
Đối với mỗi công việc được gửi để thực thi trong hệ thống, đều có một Job tương ứng.TracKernel nằm trên NameNode và có nhiều Task.TracCác kers nằm trên các DataNodes.
Lưu ý: công việcTracker và Nhiệm vụTracCặp ker thuộc về MapReduce phiên bản 1 (Hadoop 1.x). Từ Hadoop 2.x trở đi, YARN phân chia các nhiệm vụ đó giữa một ResourceManager trên toàn cụm, một NodeManager trên mỗi nút và một ApplicationMaster cho mỗi công việc, mặc dù các giai đoạn map, shuffle và reduce vẫn không thay đổi.
Sơ đồ bên dưới cho thấy cách một công việc đã gửi được chia thành các nhiệm vụ và tracđược phân bổ trên toàn cụm.
- Một công việc được chia thành nhiều tác vụ, sau đó được thực thi trên nhiều nút dữ liệu trong một cụm máy chủ.
- Đó là trách nhiệm của công việc. tracKer điều phối hoạt động bằng cách lên lịch các tác vụ chạy trên các nút dữ liệu khác nhau.
- Việc thực hiện từng nhiệm vụ riêng lẻ sau đó sẽ do nhiệm vụ đó đảm nhiệm. tracker, nằm trên mỗi nút dữ liệu thực thi một phần của công việc.
- Nhiệm vụ tracTrách nhiệm của ker là gửi báo cáo tiến độ công việc cho người phụ trách. track.
- Ngoài ra, nhiệm vụ tracKer định kỳ gửi tín hiệu 'nhịp tim' đến Job.Tracker để thông báo cho nó về trạng thái hiện tại của hệ thống.
- Do đó, công việc tracker giữ track của tiến độ tổng thể của mỗi công việc. Trong trường hợp nhiệm vụ thất bại, công việc tracKer có thể lên lịch lại nó cho một tác vụ khác. track.


