Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

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

MapReduce là một mô hình được Google giới thiệu như một phương pháp giải một lớp các bài toán Dữ liệu lớn với các cụm lớn máy móc rẻ tiền. Hadoop thấm nhuần mô hình này vào cốt lõi của quy trình làm việc của nó. Bài viết này cung cấp ý tưởng giới thiệu về mô hình MapReduce được Hadoop sử dụng để giải quyết vấn đề Dữ liệu lớn.

Tổng quan

Một ứng dụng Dữ liệu lớn điển hình xử lý một tập hợp lớn dữ liệu có thể mở rộng. Việc sử dụng một cơ sở dữ liệu duy nhất để lưu trữ và truy xuất có thể là một nút thắt xử lý lớn. Điều này đặc biệt đúng nếu chúng ta sử dụng cơ sở dữ liệu nguyên khối để lưu trữ một lượng lớn dữ liệu như chúng ta có thể thấy với cơ sở dữ liệu quan hệ và cách chúng được sử dụng như một kho lưu trữ duy nhất. Điều này sẽ không hiệu quả, đặc biệt là chúng ta phải xử lý các tập dữ liệu lớn trong môi trường phân tán.

Google đã sử dụng thuật toán MapReduce để giải quyết tình huống và đưa ra giải pháp. Ý tưởng là chia nhiệm vụ lớn hơn thành các phần nhỏ hơn có thể quản lý được và phân phối chúng trên các máy tính trong mạng để xử lý. Do đó, kết quả thu được được tích hợp để tạo thành tập dữ liệu cuối cùng. Ý tưởng này đã trở thành cơ sở của dự án Doug Cắt’s Hadoop. Hadoop sử dụng thuật toán này để xử lý dữ liệu song song với các thuật toán khác nhằm cung cấp phân tích thống kê hoàn chỉnh trên các tập dữ liệu lớn. Do đó, tổng thể Hadoop có thể được chia thành hai phần:

  • Xử lý: Được tận dụng bởi thuật toán MapReduce
  • Bộ nhớ: Được HDFS tận dụng

Do đó, Hadoop MapReduce là một triển khai của thuật toán được phát triển và duy trì bởi dự án Apache Hadoop. Nó hoạt động giống như một cỗ máy, nơi chúng tôi cung cấp đầu vào và động cơ phản hồi bằng cách chuyển đổi đầu vào thành đầu ra một cách nhanh chóng và hiệu quả, xử lý qua nhiều giai đoạn. Ý tưởng đơn giản công khai này cần một chút công phu khi nó diễn ra ở cuối dòng.

MapReduce

MapReduce là một mô hình lập trình song song được sử dụng để xử lý dữ liệu nhanh chóng trong môi trường ứng dụng phân tán. Nó hoạt động trên các tập dữ liệu (nhiều terabyte dữ liệu) được phân phối trên các cụm (hàng nghìn nút) trong mạng phần cứng hàng hóa. Các chương trình MapReduce chạy trên Hadoop và có thể được viết bằng nhiều ngôn ngữ — Java, C ++, Python và Ruby. Đặc điểm cơ bản của chương trình MapReduce là nó vốn đã thấm nhuần tinh thần song song vào các chương trình. Điều này làm cho nó trở nên lý tưởng cho việc phân tích dữ liệu quy mô lớn có thể tận dụng mô hình song song vào thực tiễn của nó để đưa kết quả ra khỏi cơ sở hạ tầng hiện có một cách hiệu quả và nhanh chóng hơn.

Cách thức hoạt động

Hadoop MapReduce chia các nhiệm vụ thành nhiều giai đoạn, mỗi giai đoạn có một bộ chức năng quan trọng để trích xuất kết quả mong muốn từ Dữ liệu lớn. Nó hoạt động trên các nút trong một cụm được lưu trữ trên một tập hợp các máy chủ hàng hóa. Quá trình bắt đầu với yêu cầu của người dùng chạy công cụ MapReduce và kết thúc với kết quả được lưu trữ trở lại HDFS.

Chúng tôi có thể bắt đầu chạy công việc MapReduce bằng cách gọi JobClient.runJob (conf) phương pháp. Đây là một phương pháp thuận tiện để tạo JobClient mới ví dụ. Đến lượt nó, điều này sẽ gọi submitJob () và thăm dò tiến độ công việc mỗi giây và báo cáo lại bảng điều khiển nếu có bất kỳ thay đổi nào kể từ khi báo cáo cuối cùng được tạo. Điều này có hiệu ứng gợn sóng và kích hoạt một loạt các hoạt động đằng sau hậu trường. Bước đầu tiên là tìm và đọc tệp đầu vào chứa dữ liệu thô. Định dạng tệp là tùy ý và phải được chuyển đổi sang định dạng phù hợp để xử lý. Đây là công việc cho InputFormat RecordReader (RR) . Định dạng đầu vào sử dụng chức năng có tên là InputSplit để chia tệp thành các phần nhỏ hơn. RecorReader (RR) sau đó chuyển đổi dữ liệu thô và làm cho dữ liệu đó có sẵn để xử lý bởi map .

Lập bản đồ

Khi dữ liệu được chấp nhận để ánh xạ, nó sẽ tạo một phiên bản riêng biệt cho từng cặp đầu vào (khóa và giá trị) và bắt đầu xử lý. Ngay sau khi hàm ánh xạ bắt đầu tạo ra đầu ra, nó không được ghi trực tiếp vào đĩa; thay vào đó, nó được lưu trữ trong bộ đệm bộ nhớ để thực hiện một số việc sắp xếp trước. Mỗi bản đồ duy trì một vùng đệm tròn nơi nó chuyển hướng đầu ra. Khi vượt quá kích thước ngưỡng, nội dung tràn sẽ được ghi trở lại đĩa. Nó tiếp tục chia dữ liệu thành các phân vùng có thể chấp nhận được với bộ giảm tải mà dữ liệu được chuyển hướng tiếp theo. Tuy nhiên, tất cả những công việc này diễn ra đồng thời trên nhiều nút trong cụm Hadoop. Sau khi hoàn thành các nhiệm vụ trên bản đồ, các kết quả trung gian được tích lũy trong phân vùng và việc xáo trộn và sắp xếp diễn ra để tối ưu hóa kết quả đầu ra để giảm bớt thành đầu vào.

Giảm và Hợp nhất

Những gì giảm được cũng là một cặp khóa, cặp giá trị và hoạt động theo kiểu tương tự như bản đồ. Nó tập hợp kết quả đầu ra bản đồ từ một số nhiệm vụ bản đồ trên toàn bộ cụm và chỉ bắt đầu xử lý sau khi lập bản đồ hoàn tất. Nó có một tập hợp các luồng máy photocopy để hợp nhất và tràn vào đĩa kết quả đầu ra do bản đồ cung cấp. Khi các bản sao được tích lũy trên đĩa, một chuỗi nền sẽ thực hiện công việc hợp nhất chúng thành các tệp được sắp xếp, lớn hơn. Nó cũng cung cấp kết quả đầu ra ở dạng khóa, cặp giá trị và có thể cần được định dạng lại bởi OutputFormat trước khi ứng dụng có thể chấp nhận định dạng. Định dạng đầu ra finaly lấy khóa, cặp giá trị và ghi lại dữ liệu đã xử lý vào HDFS. Đây, RecordWriter đóng vai trò chính, giống như RecordReader , ngoại trừ việc nó mất một phần trong khi đọc từ HDFS ngay từ đầu.

Kết luận

Đây chỉ là đỉnh của tảng băng trôi. Có rất nhiều tình tiết phức tạp và nhiều hơn thế nữa diễn ra ở hậu trường. Tóm lại, Hadoop MapReduce cung cấp khả năng chia Dữ liệu lớn thành các phần nhỏ hơn, có thể quản lý được, xử lý chúng song song trên một cụm phân tán và cuối cùng, cung cấp dữ liệu để sử dụng hoặc xử lý bổ sung. Hadoop ngày nay đã phát triển thành một hệ sinh thái công cụ và công nghệ lớn hơn để giải quyết các vấn đề về Dữ liệu lớn thời đại và đang phát triển nhanh chóng để tinh chỉnh các tính năng của nó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trực quan hóa dữ liệu bằng Apache Zeppelin - Hướng dẫn

  2. Chuyển đổi dữ liệu ODBC trong CloverDX

  3. Nhân bản cơ sở dữ liệu với PSDatabaseClone

  4. Thống kê được xây dựng tùy chỉnh

  5. Kết nối các ứng dụng ODBC trên Windows với Zoho CRM