1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Báo cáo cuối kì môn học hệ phân bố (1)

21 9 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

KHOA CÔNG NGHỆ THÔNG TIN MÔN: HỆ PHÂN BỐ ĐỀ TÀI: RECOMMEND SYSTEM GVHD: TS Nguyễn Thiên Bảo SVTH: 1913310 19133022 19133023 19133025 Trần nguyên Thái Bảo Hồng Tiến Hào Lê Tuấn Hiệp Đinh Quốc Hùng TP Hồ Chí Minh, ngày 05 tháng 05 năm 2022 MỤC LỤC PHẦN 1: CƠ SỞ LÝ THUYẾT APACHE SPARK Apache Spark Là Gì? Sự phát triển Apache Spark Các tính Apache Spark Spark xây dựng hadoop Thành phần Spark RDD 6.1 Resilient Distributed Datasets 6.2 Chia Sẻ Dữ Liệu Chậm Trong Mapreduce 10 6.3 Các Hoạt Động Lặp Lại Trên Mapreduce 10 6.4 Hoạt Động Tương Tác Trên Mapreduce 10 6.5 Chia sẻ liệu Spak RDD 11 6.6 Hoạt Động Lặp Lại Trên Spark RDD 11 6.7 Hoạt Động Tương Tác Trên Spark RDD 12 Kiến Trúc Apache Spark 13 7.1 Kiến trúc Apache Spark 13 7.2 Quy Trình Làm Việc Của Spark 14 PHẦN 2: XÂY DỰNG MỘT HỆ THỐNG ĐỀ XUẤT 16 Mục Đích Ứng Dụng 16 Ý Tưởng 16 Thuật Toán 17 3.1 Collaborative Filtering 17 3.2 Cosine Similarity 19 3.3 Elasticsearch 20 Tập Dữ Liệu 20 Quy Trình 21 PHẦN 3: THỰC NGHIỆM 22 PHẦN 1: CƠ SỞ LÝ THUYẾT APACHE SPARK Apache Spark Là Gì? Apache Spark framework xử lý liệu thực tác vụ xử lý tập liệu lớn, thiết kế để tính tốn nhanh chóng Nó dựa Hadoop MapReduce mở rộng mơ hình MapReduce để sử dụng hiệu cho nhiều loại tính tốn hơn, bao gồm truy vấn tương tác xử lý luồng Tính Spark tính tốn cụm nhớ giúp tăng tốc độ xử lý ứng dụng Spark thiết kế để bao gồm loạt khối lượng cơng việc ứng dụng hàng loạt, thuật tốn lặp lại, truy vấn tương tác phát trực tuyến Ngoài việc hỗ trợ tất khối lượng công việc hệ thống tương ứng, làm giảm gánh nặng quản lý việc trì cơng cụ riêng biệt Sự phát triển Apache Spark Spark dự án Hadoop phát triển vào năm 2009 AMPLab UC Berkeley Matei Zaharia Nó Open Sourced vào năm 2010 theo giấy phép BSD Nó quyên góp cho tảng phần mềm Apache vào năm 2013 Apache Spark trở thành dự án Apache cấp cao từ tháng năm 2014 Các tính Apache Spark Tốc độ: Spark giúp chạy ứng dụng cụm Hadoop, nhanh tới 100 lần nhớ nhanh 10 lần chạy đĩa Điều thực cách giảm số lượng thao tác đọc / ghi vào đĩa Nó lưu trữ liệu xử lý trung gian nhớ In-memory Computing: Dữ liệu nhớ cải thiện hiệu suất theo thứ tự cường độ Phần trừu tượng Spark RDD Và RDD lưu vào đệm cách sử dụng phương thức cache() persist() Khi sử dụng phương thức cache(), tất RDD lưu trữ nhớ Khi RDD lưu trữ giá trị nhớ, liệu không phù hợp với nhớ tính tốn lại liệu thừa gửi đến đĩa Bất muốn RDD, giải nén mà không cần đến đĩa Điều làm giảm phức tạp khơng gian-thời gian chi phí lưu trữ đĩa Khả nhớ Spark tốt cho việc học máy xử lý hàng loạt vi mơ Nó cung cấp khả thực thi nhanh cho công việc lặp lặp lại Hỗ trợ nhiều ngôn ngữ: Spark cung cấp API tích hợp sẵn Java, Scala Python Do đó, bạn viết ứng dụng ngơn ngữ khác Spark đưa 80 toán tử cấp cao để truy vấn tương tác Khả chịu lỗi: Vì Apache Spark RDD tập liệu bất biến, Spark RDD nhớ dòng dõi hoạt động xác định sử dụng tập liệu đầu vào có khả chịu lỗi để tạo Nếu lỗi worker node mà phân vùng RDD bị mất, phân vùng tính tốn lại từ tập liệu chịu lỗi ban đầu cách sử dụng dòng hoạt động Phân tích nâng cao - Spark khơng hỗ trợ 'Map' 'reduce' Nó hỗ trợ truy vấn SQL, Dữ liệu truyền trực tuyến, Máy học (ML) thuật toán Đồ thị Spark xây dựng hadoop Sơ đồ sau cho thấy ba cách cách Spark tạo thành phần Hadoop - Standalone: Spark Triển khai độc lập có nghĩa Spark chiếm vị trí đầu HDFS (Hệ thống tệp phân tán Hadoop) không gian phân bổ cho HDFS cách rõ ràng Ở đây, Spark MapReduce chạy song song với để bao gồm tất công việc spark cụm - Hadoop Yarn: Việc triển khai Hadoop Yarn có nghĩa đơn giản, spark chạy Yarn mà không cần cài đặt trước truy cập root Nó giúp tích hợp Spark vào hệ sinh thái Hadoop ngăn xếp Hadoop Nó cho phép thành phần khác chạy đầu ngăn xếp - Spark in MapReduce (SIMR): Spark MapReduce sử dụng để khởi chạy công việc spark việc triển khai độc lập Với SIMR, người dùng khởi động Spark sử dụng trình bao mà khơng cần quyền truy cập quản trị Thành phần Spark Hình minh họa sau mô tả thành phần khác Spark - Apache Spark gồm có thành phần chính: Spark Core, Spark Streaming, Spark SQL, MLlib GraphX, đó: o Spark Core tảng cho thành phần lại thành phần muốn khởi chạy phải thơng qua Spark Core Spark Core đảm nhận vai trò thực cơng việc tính tốn xử lý nhớ (Inmemory computing) đồng thời tham chiếu liệu lưu trữ hệ thống lưu trữ bên o Spark SQL cung cấp kiểu data abstraction (SchemaRDD) nhằm hỗ trợ cho kiểu liệu có cấu trúc (structured data) liệu nửa cấu trúc (semi-structured data – thường liệu liệu có cấu trúc khơng đồng cấu trúc liệu phụ thuộc vào nội dung liệu ấy) Spark SQL hỗ trợ DSL (Domain-specific language) để thực thao tác DataFrames ngơn ngữ Scala, Java Python hỗ trợ ngôn ngữ SQL với giao diện command-line ODBC/JDBC server o Spark Streaming sử dụng để thực việc phân tích stream việc coi stream mini-batches thực kỹ thuật RDD transformation liệu mini-batches Qua cho phép đoạn code viết cho xử lý batch tận dụng lại vào việc xử lý stream, làm cho việc phát triển lambda architecture dễ dàng Tuy nhiên điều lại tạo độ trễ xử lý liệu (độ trễ mini-batch duration) nhiều chun gia cho Spark Streaming không thực công cụ xử lý streaming giống Storm Flink o MLlib (Machine Learning Library): MLlib tảng học máy phân tán bên Spark kiến trúc phân tán dựa nhớ Theo so sánh benchmark Spark MLlib nhanh lần so với phiên chạy Hadoop (Apache Mahout) o GrapX: Grapx tảng xử lý đồ thị dựa Spark Nó cung cấp Api để diễn tả tính tốn đồ thị cách sử dụng Pregel Api RDD 6.1 Resilient Distributed Datasets Resilient Distributed Datasets Là liệu phân tán có khả phục hồi Là cấu trúc liệu Spark, tập hợp phân tán bất biến đối tượng Mỗi tập liệu RDD chia thành phân vùng logic, tính tốn nodes khác cụm RDD chứa loại đối tượng Python, Java Scala nào, bao gồm lớp người dùng định nghĩa Về mặt hình thức, RDD tập hợp ghi phân vùng, đọc RDD tạo thơng qua hoạt động xác định liệu lưu trữ ổn định RDD khác RDD tập hợp phần tử chịu lỗi hoạt động song song Spark sử dụng khái niệm RDD để đạt hoạt động MapReduce nhanh hiệu 6.2 Chia Sẻ Dữ Liệu Chậm Trong Mapreduce o Khi sử dụng lại liệu lần tính tốn (Ví dụ: cơng việc MapReduce) phải bắt buộc ghi liệu vào đĩa o Chia sẻ liệu chậm MapReduce replication, serialization disk IO o Hầu hết ứng dụng Hadoop dành 90% thời gian để đọc ghi liệu 6.3 Các Hoạt Động Lặp Lại Trên Mapreduce Sử dụng lại kết lần tính tốn trung gian phát sinh chi phí đáng kể chép, I/O disk hóa, khiến hệ thống chậm 6.4 Hoạt Động Tương Tác Trên Mapreduce Mỗi truy vấn thực thi I/O disk điều chi phối thời gian thực thi ứng dụng 6.5 Chia sẻ liệu Spak RDD ● Hầu hết ứng dụng Hadoop, chúng dành 90% thời gian để thực thao tác đọc-ghi HDFS ● Nhận thức vấn đề nhà nguyên cứu phát triển framework chuyên biệt có tên Apache Spark ● Ý tưởng Spark Resilient Distributed Datasets (RDD), hỗ trợ tính tốn xử lý nhớ ● Điều có nghĩa là, lưu trữ trạng thái nhớ đối tượng công việc đối tượng chia sẻ cơng việc Chia sẻ liệu nhớ nhanh mạng đĩa từ 10 đến 100 lần 6.6 Hoạt Động Lặp Lại Trên Spark RDD Hình minh họa cho thấy hoạt động lặp lại Spark RDD Nó lưu trữ kết trung gian nhớ phân tán thay Ổ lưu trữ ổn định (Đĩa) làm cho hệ thống nhanh Nếu nhớ phân tán (RAM) không đủ để lưu trữ kết trung gian (Trạng thái công việc), lưu kết đĩa 10 6.7 Hoạt Động Tương Tác Trên Spark RDD Nếu truy vấn khác chạy lặp lại tập liệu, liệu cụ thể lưu nhớ để có thời gian thực thi tốt Theo mặc định, RDD chuyển đổi tính tốn lại bạn chạy hành động Tuy nhiên, bạn trì RDD nhớ, trường hợp Spark giữ phần tử xung quanh cụm để truy cập nhanh nhiều, vào lần bạn truy vấn Ngồi cịn có hỗ trợ cho RDD lâu dài đĩa chép qua nhiều nút 11 Kiến Trúc Apache Spark 7.1 Kiến trúc Apache Spark Driver program kiến trúc Apache Spark gọi chương trình ứng dụng tạo SparkContext Một SparkContext bao gồm tất chức Spark Driver chứa nhiều thành phần khác DAG Scheduler, Task Scheduler, Backend Scheduler Block Manager, chịu trách nhiệm dịch mã người dùng viết thành công việc thực thực thi cụm.d Datasets Spark Driver SparkContext giám sát việc thực công việc cụm Spark Driver làm việc với Trình quản lý cụm để quản lý nhiều công việc khác Người quản lý cụm thực công việc phân bổ tài nguyên Và sau đó, cơng việc chia thành nhiều nhiệm vụ nhỏ phân phối tiếp đến nút worker Bất RDD tạo SparkContext, phân phối nhiều nút worker lưu vào nhớ đệm Các nút worker thực thi nhiệm vụ giao Trình quản lý cụm đưa trở lại Bối cảnh Spark Người thi hành có trách nhiệm thực nhiệm vụ Thời gian tồn trình thực thi giống thời gian tồn Ứng dụng Spark Nếu chúng 12 ta muốn tăng hiệu suất hệ thống, tăng số lượng nút worker để công việc chia thành nhiều phần hợp lý 7.2 Quy Trình Làm Việc Của Spark Bước Client gửi spark user application code Khi application code gửi, driver chuyển đổi hồn tồn user code có chứa transformations actions thành DAG (directed acyclic graph) Ở giai đoạn này, thực tối ưu hóa biến đổi pipelining Bước Sau đó, chuyển đổi đồ thị logic gọi DAG thành kế hoạch thực thi vật lý với nhiều giai đoạn Sau chuyển đổi thành kế hoạch thực thi vật lý, tạo đơn vị thực thi vật lý gọi nhiệm vụ theo giai đoạn Sau đó, nhiệm vụ nhóm lại gửi đến cụm Bước Bây driver nói chuyện với cluster manager thương lượng tài nguyên Driver khởi chạy trình thực thi worker node thay mặt cho driver Tại thời điểm này, driver gửi nhiệm vụ cho người thực thi dựa vị trí liệu Khi người thực thi bắt (executors) đầu, 13 họ tự đăng ký với driver Vì vậy, driver có nhìn đầy đủ người thực thi thực thi tác vụ Bước Trong trình thực thi tasks, driver program giám sát tập hợp trình thực thi chạy driver node lên lịch tasks tương lai dựa vị trí liệu 14 PHẦN 2: XÂY DỰNG MỘT HỆ THỐNG ĐỀ XUẤT Mục Đích Ứng Dụng Trong làm việc nhóm tìm kiếm cơng ty sản phẩm khác nhau, ln có nhu cầu liên tục xây dựng hệ thống khuyến nghị cho người dùng Nhóm tìm hiểu xây dựng với cơng cụ tìm kiếm phổ biến Elaticsearch, SOLR thử hoàn thiện mức độ liên quan tìm kiếm Nhưng ln có giới hạn thực liên quan đến tìm kiếm tạo hệ thống đề xuất với công cụ tìm kiếm Chúng ta ln ngạc nhiên cơng ty Amazon Netflix cung cấp khuyến nghị dựa quan tâm Vì vậy, cách sử dụng khả học tập Apache Spark với Elaticsearch, nhóm xây dựng hệ thống khuyến nghị Ý Tưởng Như hình trên, người dùng thích Mục A, Mục B Mục C Người dùng Thích Mục B Mục C, có khả cao Người dùng thích Mục A giới thiệu Mục A cho Người dùng Trong lĩnh vực hệ thống khuyến nghị, chủ yếu có ba kỹ thuật sử dụng để cung cấp khuyến nghị o Collaborative filtering 15 o Content-based o Hybrid technique Chúng ta sử dụng kỹ thuật Collaborative filtering pyspark để tạo hệ thống đề xuất Apache Spark ML thực bình phương tối thiểu xen kẽ (Alternating Least Squares – ALS) để Collaborative filtering, thuật toán phổ biến để đưa khuyến nghị ALS thuật tốn nhân tố ma trận sử dụng bình phương tối thiểu xen kẽ với quy tắc hóa học có trọng số (ALS – WR) Vấn đề với Spark ALS đề xuất sản phẩm hàng đầu cho người dùng cụ thể (mơ hình sản phẩm người dùng) người dùng hàng đầu cho sản phẩm cụ thể (mơ hình người dùng sản phẩm) Tính tốn tương tự n item n item ta có độ phức tạp O(N2) tăng nhanh đến hoạt động xáo trộn tốn chi phí thời gian máy tính khơng khả thi Để tính tốn độ tương tự mục item – item, xây dựng mơ hình item cách sử dụng giống yếu tố vật phẩm từ mơ hình ALS Spark Elaticsearch Thuật toán ALS yếu tố hai ma trận - userFeatures cịn lại ma trận itemFeatures Chúng tơi thực tương đồng cosine Ma trận xếp hạng ItemFeatures để tìm tương đồng mục vật phẩm Thuật Toán 3.1 Collaborative Filtering Ở phương pháp ta cần xây dựng ma trận hệ số tương quan véc tơ rating users để tìm nhóm users có sở thích Hệ số tương quan users lớn sở thích họ giống trái lại họ có sở thích khác biệt Thuật tốn dự đốn giá trị rating cặp (user, item) chưa rate cách tính tổng có trọng số giá trị rating users tương quan với user mà rate item Trọng số thông thường bẳng hệ số tương quan Để xây dựng thuật toán Neighborhood-based collaborative Filtering cần trải qua bước bên a) Lấy trung bình cột 16 b) c) d) e) f) Chuẩn hóa ma trận cách trừ trung bình Tính hệ số tương quan ma trận chuẩn hóa Dự đốn ma trận chuẩn hóa vị trí chưa rate Diễn giải công thức dự báo rating Chuyển đổi sang giá trị rating thực tế Chuẩn hóa liệu ma trận tiện ích cách trừ cột (là rating user) trung bình giá trị rating cột Việc để loại bỏ khác biệt mức độ cho điểm user Vì ví dụ: Có số user khó tính cho điểm cao user dễ tính điểm thấp Khi nhận định user khó tính khơng thích item (nếu ta coi điểm thấp) user dễ tính yêu thích item (nếu ta coi điểm cao) khơng chuẩn xác Chuẩn hóa giá trị rating nhằm mục đích đưa trung bình rating user sau chuẩn hóa Gía trị rating dương thể user ưa thích item trái lại âm khơng thích, trung lập Tính ma trận hệ số tương quan véc tơ cột Ma trận tương quan thể tương đồng hành vi mua sắm user Từ ma trận tương quan ta xác định users có sở thích tương đồng với user xác định Hệ số tương quan dương gần chứng tỏ users có sở thích giống Hệ số tương quan âm users có hành vi trái ngược 17 Dự báo rating user cho item cách xác định ma trận hệ số tương quan tập gồm users có giá trị tương quan lớn user mà rate item Gía trị dự báo rating user tính tổng có trọng số rating tập users tương quan nêu theo công thức bên dưới: Chuyển giá trị dự báo ma trận chuẩn hóa sang giá trị dự báo rating cách cộng giá trị ma trận chuẩn hóa với giá trị trung bình cột Một số hạn chês User-user CF: o Trên thực tế, số lượng users lớn số lượng items nhiều Kéo theo Similarity matrix lớn với số phần tử phải lưu giữ nửa bình phương số lượng users (chú ý ma trận đối xứng) Việc này, đề cập trên, khiến cho việc lưu trữ ma trận nhiều trường hợp không khả thi o Ma trận Utility Y thường sparse Với số lượng users lớn so với số lượng items, nhiều cột ma trận sparse, tức có vài phần tử khác Lý users thường lười rating Cũng việc này, user thay đổi rating rate thêm items, trung bình cộng ratings vector chuẩn hoá tương ứng với user thay đổi nhiều Kéo theo đó, việc tính tốn ma trận Similarity, vốn tốn nhiều nhớ thời gian, cần thực lại 🡺 Vì mặt tính tốn, Item-item CF nhận từ User-user CF cách chuyển vị (transpose) ma trận utility, coi items rate users Sau tính kết cuối cùng, ta lại chuyển vị lần để thu kết 3.2 Cosine Similarity Đây hàm sử dụng nhiều cơng thức tính cos góc hai vector (u1, u2) 18 Trong u1 u2 vectors tương ứng với users 1, chuẩn hoá Độ similarity hai vector số đoạn [-1, 1] Giá trị thể hai vector hoàn toàn similar Hàm số coscos góc nghĩa góc hai vector 0, tức vector tích số dương với vector lại Giá trị cos -1 thể hai vector hoàn toàn trái ngược Điều hợp lý, tức hành vi hai users hoàn toàn ngược thi similarity hai vector thấp 3.3 Elasticsearch cơng cụ tìm kiếm dựa tảng Apache Lucene Nó cung cấp máy tìm kiếm dạng phân tán, có đầy đủ cơng cụ với giao diện web HTTP có hỗ trợ liệu JSON Elasticsearch hoạt động server riêng biệt để “phục vụ” việc tìm kiếm liệu ES chạy cổng (dưới local default 9200) Người ta dùng ES DB thường khơng làm có nhiệm vụ riêng biệt Tập Dữ Liệu Tập liệu chứa loại liệu từ amazon.com: o Metadata: chứa tất siêu liệu sản phầm o Rating data: liệu đánh giá sản phẩm khác tương ứng với người dùng Tải tập liệu tại: http://deepyeti.ucsd.edu/jianmo/amazon/index.html 19 Quy Trình Tải liệu sản phẩm vào Spark Sử dụng hoạt động Spark DataFrame để làm liệu Tải liệu làm vào Elaticsearch Sử dụng Spark Mllib, đào tạo mơ hình khuyến nghị lọc hợp tác từ liệu xếp hạng o Lưu liệu mơ hình kết vào Elaticsearch o Sử dụng truy vấn Elaticsearch, tạo khuyến nghị o o o o 20 PHẦN 3: THỰC NGHIỆM 21 ... giống Hệ số tương quan âm users có hành vi trái ngược 17 Dự báo rating user cho item cách xác định ma trận hệ số tương quan tập gồm users có giá trị tương quan lớn user mà rate item Gía trị dự báo. .. lý streaming giống Storm Flink o MLlib (Machine Learning Library): MLlib tảng học máy phân tán bên Spark kiến trúc phân tán dựa nhớ Theo so sánh benchmark Spark MLlib nhanh lần so với phiên chạy... Resilient Distributed Datasets Là liệu phân tán có khả phục hồi Là cấu trúc liệu Spark, tập hợp phân tán bất biến đối tượng Mỗi tập liệu RDD chia thành phân vùng logic, tính tốn nodes khác cụm

Ngày đăng: 10/06/2022, 09:37

HÌNH ẢNH LIÊN QUAN

Hình minh họa sau đây mô tả các thành phần khác nhau của Spark - Báo cáo cuối kì môn học hệ phân bố (1)
Hình minh họa sau đây mô tả các thành phần khác nhau của Spark (Trang 6)
5. Thành phần của Spark - Báo cáo cuối kì môn học hệ phân bố (1)
5. Thành phần của Spark (Trang 6)
Hình minh họa dưới đây cho thấy các hoạt động lặp lại trên Spark RDD. Nó sẽ lưu trữ các kết quả trung gian trong một bộ nhớ phân tán thay vì Ổ lưu  trữ ổn định (Đĩa) và làm cho hệ thống nhanh hơn.Nếu bộ nhớ phân tán  (RAM) không đủ để lưu trữ các kết quả  - Báo cáo cuối kì môn học hệ phân bố (1)
Hình minh họa dưới đây cho thấy các hoạt động lặp lại trên Spark RDD. Nó sẽ lưu trữ các kết quả trung gian trong một bộ nhớ phân tán thay vì Ổ lưu trữ ổn định (Đĩa) và làm cho hệ thống nhanh hơn.Nếu bộ nhớ phân tán (RAM) không đủ để lưu trữ các kết quả (Trang 10)
Như trong hình trên, nếu người dùng 1 thích Mục A, Mục B và Mục C và Người dùng 2 Thích Mục B và Mục C, có khả năng cao là Người dùng 2 cũng  thích Mục A và có thể giới thiệu Mục A cho Người dùng 2. - Báo cáo cuối kì môn học hệ phân bố (1)
h ư trong hình trên, nếu người dùng 1 thích Mục A, Mục B và Mục C và Người dùng 2 Thích Mục B và Mục C, có khả năng cao là Người dùng 2 cũng thích Mục A và có thể giới thiệu Mục A cho Người dùng 2 (Trang 15)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w