Mục lục:
- Chức năng bản đồ cho dữ liệu lớn
- Bước đầu tiên mà chức năng giảm yêu cầu là đặt một giá trị vào cái gì đó gọi là
- không chỉ là một loạt các bước cần thiết để phục vụ cho mục tiêu tổng thể. Nó có thể trông giống như sau:
Video: [BigData Engineering] P4: Cài cắm hadoop, chuẩn bị nhóm các yếu tố 2025
MapReduce là một khuôn khổ phần mềm lý tưởng cho các dữ liệu lớn vì nó cho phép các nhà phát triển viết các chương trình có thể xử lý dữ liệu phi cấu trúc dữ liệu khổng lồ song song với một nhóm các bộ xử lý phân tán.
Chức năng bản đồ cho dữ liệu lớn
Chức năng bản đồ là một phần của nhiều ngôn ngữ lập trình chức năng trong nhiều năm. Bản đồ đã được khôi phục lại như một công nghệ cốt lõi để xử lý danh sách các phần tử dữ liệu.
Các toán tử trong các ngôn ngữ chức năng không sửa đổi cấu trúc của dữ liệu; họ tạo ra các cấu trúc dữ liệu mới như sản phẩm của họ. Chính bản thân dữ liệu cũng không đổi. Vì vậy, bạn có thể sử dụng chức năng bản đồ với sự miễn cưỡng bởi vì nó sẽ không làm tổn hại dữ liệu quý giá được lưu trữ của bạn.
Một ưu điểm khác của chương trình chức năng là không phải quản lý rõ ràng sự di chuyển hoặc luồng dữ liệu. Điều này giải phóng các lập trình viên khỏi quản lý rõ ràng dữ liệu đầu ra và vị trí. Cuối cùng, thứ tự của các hoạt động trên dữ liệu không được quy định.
mylist = ("tất cả các hạt trong chúng ta đã tham gia cuộc tổng tuyển cử gần đây nhất") > Tạo hàm howManyPeople sử dụng hàm bản đồ.
Việc này chỉ chọn các quận với hơn 50.000 người: bản đồ howManyPeople (mylist) = [howManyPeople "county 1"; howManyPeople "hạt 2"; howManyPeople "quận 3"; howManyPeople "quận 4"; …] Bây giờ hãy tạo một danh sách đầu ra mới của tất cả các quận với số dân lớn hơn 50.000:
(không, quận 1, vâng, quận 2, không, quận 3, vâng, quận 4, ?, quận nnn)
Chức năng này thực thi mà không làm thay đổi danh sách ban đầu. Ngoài ra, bạn có thể thấy rằng mỗi phần của danh sách đầu ra ánh xạ tới một phần tử tương ứng của danh sách đầu vào, với một đính kèm có hoặc không. Nếu quận đã đáp ứng được yêu cầu của hơn 50.000 người, chức năng bản đồ sẽ xác định nó bằng chữ Vâng. Nếu không, số không được chỉ định.giảm
là một tính năng của các ngôn ngữ lập trình chức năng trong nhiều năm. Hàm giảm đi đầu ra của một chức năng bản đồ và "làm giảm" danh sách trong bất kỳ thời trang mà lập trình mong muốn.Bước đầu tiên mà chức năng giảm yêu cầu là đặt một giá trị vào cái gì đó gọi là
accumulator , giữ giá trị ban đầu. Sau khi lưu trữ một giá trị bắt đầu trong accumulator, chức năng giảm sau đó xử lý từng phần tử của danh sách và thực hiện các hoạt động bạn cần trong danh sách.
Ở cuối danh sách, hàm giảm giảm giá trị dựa trên hoạt động bạn muốn thực hiện trong danh sách đầu ra. Giả sử bạn cần phải xác định các quận nơi đa số phiếu bầu cho ứng cử viên Dân chủ. Hãy nhớ rằng chức năng bản đồ howManyPeople của bạn xem xét từng phần của danh sách đầu vào và tạo ra danh sách đầu ra của các quận với hơn 50.000 người (có) và các quận với dưới 50.000 người (không). (no, county 1, yes, county 2; no, county 3; yes, county 4;, county nnn) Đây là đầu vào cho chức năng giảm của bạn. Đây là những gì có vẻ như:
countylist = (không, quận 1, yes, county 2, no, county 3, yes, county 4, ?, county nnn) giảm làDemocrat (countylist)
Các quy trình giảm chức năng mỗi thành phần của danh sách và trả về một danh sách tất cả các quận có dân số lớn hơn 50.000, trong đó đa số phiếu bầu Dân chủ.Đưa bản đồ dữ liệu lớn và giảm cùng nhau
Đôi khi sản xuất một danh sách đầu ra chỉ là đủ. Tương tự như vậy, đôi khi thực hiện hoạt động trên mỗi yếu tố của một danh sách là đủ. Thông thường, bạn muốn xem qua số lượng lớn dữ liệu đầu vào, chọn một số phần tử nhất định từ dữ liệu và sau đó tính giá trị từ các mẩu dữ liệu có liên quan.Bạn không muốn thay đổi danh sách đầu vào để bạn có thể sử dụng nó theo những cách khác nhau với các giả định mới và dữ liệu mới.
Nhà phát triển phần mềm thiết kế các ứng dụng dựa trên các thuật toán. Một thuật toánkhông chỉ là một loạt các bước cần thiết để phục vụ cho mục tiêu tổng thể. Nó có thể trông giống như sau:
Bắt đầu với một số lượng lớn hoặc dữ liệu hoặc hồ sơ.
Lặp lại dữ liệu.
Sử dụng chức năng bản đồ để trích xuất một cái gì đó quan tâm và tạo một danh sách đầu ra. Tổ chức danh sách đầu ra để tối ưu hóa để xử lý tiếp. Sử dụng chức năng giảm để tính một bộ kết quả.
Sản xuất kết quả cuối cùng.
Các lập trình viên có thể thực hiện tất cả các loại ứng dụng sử dụng cách tiếp cận này, nhưng các ví dụ cho điểm này rất đơn giản, vì vậy giá trị thực của MapReduce có thể không rõ ràng. Điều gì xảy ra khi bạn có dữ liệu đầu vào rất lớn? Bạn có thể sử dụng cùng một thuật toán trên terabyte dữ liệu? Tin vui là có.
Tất cả các hoạt động có vẻ độc lập. Đó là bởi vì chúng. Sức mạnh thực sự của MapReduce là khả năng phân chia và chinh phục. Lấy một vấn đề rất lớn và phá vỡ nó thành các phần nhỏ hơn, dễ quản lý hơn, hoạt động trên từng đoạn một cách độc lập, và sau đó kéo tất cả vào cuối cùng. Hơn nữa, chức năng bản đồ là giao hoán - nói cách khác, thứ tự mà một hàm được thực hiện không quan trọng.
Vì vậy, MapReduce có thể thực hiện công việc của nó trên các máy khác nhau trong một mạng. Nó cũng có thể rút ra từ nhiều nguồn dữ liệu, bên trong hoặc bên ngoài. MapReduce theo dõi công việc của mình bằng cách tạo ra một khoá duy nhất để đảm bảo rằng tất cả quá trình xử lý đều liên quan đến giải quyết cùng một vấn đề.Khóa này cũng được sử dụng để kéo tất cả các đầu ra cùng nhau vào cuối tất cả các nhiệm vụ phân phối.