BIÊN CHO DỮ LIỆU LỚN TRONG SPARK
Khi khối lƣợng và kích thƣớc của dữ liệu tăng lên, thì chỉ có các phƣơng pháp tiếp cận phân tán mới có thể thực hiện các hoạt động lớn trong một thời gian nhất định. Các công trình gần đây đã đƣợc thực hiện về việc thực hiện các giải pháp hiệu quả bằng cách sử dụng mô hình lập trình giảm bản đồ vì nó đƣợc sử dụng để phân phối xử lý dữ liệu quy mô lớn. Mặc dù các công trình này cung cấp các giải pháp khác nhau cho cùng một vấn đề, nhƣng mỗi công trình đều có những ràng buộc và tính chất cụ thể.
Khi số lƣợng dữ liệu tăng lên, không thể chạy mô hình này trên một ứng dụng thực tế bởi máy đơn do hạn chế về bộ nhớ và thời gian. Ngày nay, một mô hình quy trình hàng loạt phổ biến đƣợc gọi là MapReduce có thể chạy trên một cụm với số lƣợng lớn máy tính đƣợc sử dụng rộng rãi để xử lý dữ liệu quy mô lớn. Hadoop làmột khuôn khổ để triển khai MapReduce, nhƣng hiệu suất của nó có thể đƣợc cải thiện hơn nữa bằng một khuôn khổ mới có tên là Spark. Khai thác các luồng dữ liệu lớn và tốc độ cao trong số những thách thức hiện đại chính trong học máy. Để giải quyết điều này, luận văn trình bày một bộ phân loại dựa trên thuật toán láng giềng kết hợp với bài toán điểm biên đã đƣợc giới thiệu ở phần trƣớc đƣợc triển khai trong Apache Spark. Trong luận văn này, chúng tôi sẽ triển khai KNN dựa trên Spark. Với lợi thế của nó là khả năng tính toán trong bộ nhớ, nó sẽ nhanh hơn và hiệu quả hơn Hadoop.
2.4.1. Giới thiệu
K hàng xóm gần nhất (KNN) là một loại thuật toán học máy. Ý tƣởng cốt lõi của thuật toán đƣa ra tập dữ liệu kiểm tra R và tập dữ liệu huấn luyện
S, với mỗi dữ liệu r trong R, tìm k lân cận gần nhất dữ liệu trong S. Trƣớc đây, nó thƣờng đƣợc sử dụng trong tập dữ liệu. Khi khối lƣợng dữ liệu tăng lên, cách xử lý với dữ liệu kích thƣớc lớn thì KNN gặp nhiều khó khăn nhƣ đã giới thiệu ở các phần trƣớc. Các cách tiếp cận triển khai chung dành cho mỗi r
trong R, bắt buộc để quét toàn bộ tập dữ liệu S, tính toán khoảng cách giữa r
và mọi s trong S. Do đó, độ phức tạp của KNN là O (| R | × | S | × | d |), trong đó d là chiều của dữ liệu. Có rất nhiều công trình liên quan để giải quyết vấn đề này, nhƣng khi quy mô dữ liệu tăng lên, việc chạy này cũng bị hạn chế đáng kể thuật toán trên một máy duy nhất. Phƣơng pháp hiệu quả nhất là phân phối và song song trên một cụm.
MapReduce là một mô hình lập trình để dễ dàng viết các ứng dụng xử lý một lƣợng lớn dữ liệu (tập dữ liệu nhiều terabyte) song song trên các cụm lớn (hàng nghìn nút) của phần cứng theo cách thức đáng tin cậy, có khả năng chịu lỗi. Nó lần đầu tiên đƣợc đề xuất bởi Google và đƣợc thực hiện bởi Hadoop, một khung phần mềm mã nguồn mở. Các chƣơng trình MapReduce đọc dữ liệu đầu vào từ đĩa, ánh xạ một chức năng trên toàn bộ dữ liệu, thu nhỏ kết quả của bản đồ và lƣu trữ kết quả thu nhỏ trên đĩa. Vì vậy, Hadoop MapReduce là một mô hình tính toán hàng loạt không thể thích ứng với tính toán thời gian thực.
Đƣợc phát triển ban đầu tại Đại học California, AMPLab của Berkeley, Spark là một hệ thống tính toán cụm đa năng và nhanh chóng. Spark cung cấp cho các lập trình viên một giao diện lập trình ứng dụng tập trung vào cấu trúc dữ liệu đƣợc gọi là tập dữ liệu phân tán có khả năng phục hồi (RDD). Các RDD của Spark hoạt động nhƣ một tập hợp làm việc cho các chƣơng trình
phân tán cung cấp một dạng bộ nhớ đƣợc chia sẻ phân tán bị hạn chế (có chủ ý). Vì vậy, nó dựa trên tính toán bộ nhớ chạy các chƣơng trình nhanh hơn tới 100 lần so với hadoop MapReduce trong bộ nhớ hoặc nhanh hơn 10 lần trên đĩa và cũng có thể xử lý yêu cầu thời gian thực. Spark cũng hỗ trợ một bộ công cụ cấp cao hơn phong phú bao gồm Spark SQL cho SQL và xử lý dữ liệu có cấu trúc, MLlib cho máy học, GraphX để xử lý đồ thị và Spark Streaming.
Trong phần này, chúng tôi trình bày một phƣơng pháp dựa trên MapReduce phƣơng pháp tiếp cận cho KNN tham gia chạy trên Spark. Chúng tôi chia tập dữ liệu R cho nhiều phân vùng và S cho nhiều khối bộ nhớ cache để thích ứng với dữ liệu rất lớn. Với mỗi r trong R, tính khoảng cách với khối bộ nhớ cache của S, và sau đó kết hợp với bài toán điểm biên đã trình bày để để tìm k hàng xóm gần nhất