Với sự trợ giúp của các phân tích dựđoán, ngành công nghiệp có thể so sánh tỷ lệ cung – cầu và có thể tránh tiếp tụctung ra thị trường các sản phẩm không được hầu hết khách hàng đón nhận
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Giảng viên hướng dẫn: PGS TS Nguyễn Thị Kim Anh
Chữ kí GVHD
Khoa: Khoa học máy tính
Trường: Công nghệ thông tin và Truyền thông
HÀ NỘI, 08/2022
Trang 2Họ và tên sinh viên Nguyễn Đăng Hùng
Điện thoại liên lạc 0376911574
Email hung.nd183547@sis.hust.edu.vn
Lớp Khoa học máy tính 04 - K63
LỜI CAM KẾT
Tôi – Nguyễn Đăng Hùng – cam kết Đồ án Tốt nghiệp (ĐATN) là công trình
nghiên cứu của bản thân tôi dưới sự hướng dẫn củaPGS TS Nguyễn Thị Kim Anh.Các kết quả nêu trong ĐATN là trung thực, là thành quả của riêng tôi, không saochép theo bất kỳ công trình nào khác Tất cả những tham khảo trong ĐATN – baogồm hình ảnh, bảng biểu, số liệu, và các câu từ trích dẫn – đều được ghi rõ ràng vàđầy đủ nguồn gốc trong danh mục tài liệu tham khảo Tôi xin hoàn toàn chịu tráchnhiệm với dù chỉ một sao chép vi phạm quy chế của nhà trường
Hà Nội, ngày tháng năm
Tác giả ĐATN
Họ và tên sinh viên
Trang 3Em xin cảm ơn cô Nguyễn Thị Kim Anh đã luôn tận tình chỉ bảo, đưa ra những lờikhuyên, tư vấn cũng như các kiến thức thực tiễn để em có thể vận dụng và hoànthiện đồ án thành công.
Cuối cùng em xin cảm ơn gia đình và bạn bè đã luôn động viên tinh thần để em cóchỗ dựa vững chắc nhất để hoàn thành đồ án
Kết quả đồ án chính là lời cảm ơn chân thành và sâu sắc nhất của em tới toàn thểmọi người Xin cảm ơn!
ii
Trang 4TÓM TẮT NỘI DUNG ĐỒ ÁN
Big Data một thuật ngữ không còn mới với những nước phát triển trên thế giới
và cũng không quá xa lạ đối với Việt Nam Chúng ta đang sống trong kỷ nguyêncủa cuộc cách mạng công nghệ 4.0; những nền tảng IoT, mạng xã hội, nghiên cứukhoa học, sản sinh một lượng lớn dữ liệu mỗi phút với những con số thực sự ấntượng như: năm 2019 cứ mỗi phút có 4,5 triệu người xem Youtube, 4,5 triệu lượttìm kiếm Google, 9,7 nghìn lượt đặt xe Uber, hơn 55 nghìn bức ảnh được đăng lênInstagram, và đến năm 2025 , ước tính 463 exabytes dữ liệu được sinh ra mộtngày
Big Data mang lại cơ hội cho lĩnh vực bán lẻ bằng cách phân tích thị trường cạnhtranh và sự quan tâm của khách hàng Nó giúp xác định hành trình trải nhiệm, xuhướng mua sắm và sự hài lòng của khách hàng bằng cách thu thập dữ liệu hành vicủa khách hàng một cách đa dạng, phong phú, đầy đủ Từ những dữ liệu thu thậpđược có thể cải thiện hiệu suất và hiệu quả bán hàng Big data giúp nhà quản lý xâydựng mô hình chi tiêu của từng khách hàng Với sự trợ giúp của các phân tích dựđoán, ngành công nghiệp có thể so sánh tỷ lệ cung – cầu và có thể tránh tiếp tụctung ra thị trường các sản phẩm không được hầu hết khách hàng đón nhận.Với tình hình nói trên, các sàn thương mại điện tử đang thực sự có một nguồn dữliệu khổng lồ từ người bán, người mua, lượng sản phẩm tăng cao hàng ngày Do đócác sàn thương mại điện tử sẽ cần phải có một cách thức phục vụ cho phân tích và
xử lí khối lượng dữ liệu này Các cơ sở dữ liệu truyền thống thực sự quá khó để cóthể làm được các công việc nói trên, vì vậy các công nghệ lưu trữ và xử lý dữ liệulớn ngày càng phát triển mạnh và nhanh chóng Với tính cấp thiết, nhu cầu cao nóitrên, em quyết định lựa chọn đề tài này
Trang 5MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 1
1.1 Đặt vấn đề 1
1.2 Mục tiêu và phạm vi đề tài 2
1.2.1 Mục tiêu 2
1.2.2 Phạm vi đề tài 2
1.3 Định hướng giải pháp 2
1.3.1 Phương pháp nghiên cứu 2
1.3.2 Phương pháp thực hành 3
1.4 Đối tượng và kịch bản sử dụng 3
1.5 Bố cục đồ án 3
CHƯƠNG 2 TỔNG QUAN VỀ SÀN THƯƠNG MẠI ĐIỆN TỬ 4
2.1 Định nghĩa về sàn thương mại điện tử 4
2.2 Phương thức hoạt động của một sàn thương mại điện tử 4
2.3 Quy trình cho người bán hàng 5
2.4 Quy trình cho người mua hàng 5
2.5 Kết luận chương 2 5
CHƯƠNG 3 TỔNG QUAN VỀ HỆ THỐNG LƯU TRỮ VÀ XỬ LÝ DỮ LIỆU LỚN HADOOP 6
3.1 Giới thiệu tổng quan về Big Data 6
3.2 Nền tảng lý thuyết và các thành phần trong Hadoop Ecosystem 7
3.2.1 Giới thiệu về Apache Hadoop 7
3.2.2 Tổng quan giới thiệu về HDFS 10
3.2.3 Tổng quan giới thiệu về MapReduce 14
3.2.4 Tổng quan giới thiệu về YARN 17
Trang 63.3 Apache Spark - Công cụ xử lý dữ liệu phân tán 19
3.3.1 Lịch sử Apache Spark 20
3.3.2 Các thành phần của Apache Spark 21
3.3.3 Spark và Hadoop MapReduce 21
3.3.4 Tính toán phân tán 22
3.3.5 Spark Application 24
3.3.6 Spark Session 24
3.3.7 RDD 24
3.3.8 Ưu nhược điểm của Apache Spark 25
3.4 Xây dựng hệ thống thực tế cho Hadoop HDFS và Spark Cluster 26
3.4.1 Xây dựng cụm Hadoop và Spark 26
3.5 Kết luận chương 3 28
CHƯƠNG 4 HỆ THỐNG THU THẬP VÀ TIỀN XỬ LÝ DỮ LIỆU 29
4.1 Tổng quan 29
4.2 Hệ thống thu thập dữ liệu 29
4.2.1 Xác định nguồn dữ liệu 29
4.2.2 Xác định cách thức thu thập dữ liệu 30
4.2.3 Những khó khăn phải đối mặt 30
4.3 Hệ thống tiền xử lý dữ liệu 31
4.3.1 Giới thiệu Parquet File Format trong lưu trữ dữ liệu lớn 31
4.3.2 Hệ thống tiền xử lý dữ liệu xây dựng thực tế 36
4.4 Kết luận chương 4 39
CHƯƠNG 5 HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HÓA DỮ LIỆU 41
5.1 Tổng quan 41
Trang 75.2 Elasticsearch 41
5.2.1 Elasticsearch là gì? 41
5.2.2 Những khái niệm cơ bản trong Elasticsearch [10] 41
5.2.3 Cách hoạt động của Elasticsearch 43
5.2.4 Khi nào nên sử dụng Elasticsearch 44
5.2.5 Ưu nhược điểm của Elasticsearch [11] 44
5.3 Kibana 45
5.3.1 Kibana là gì? [12] 45
5.3.2 Tìm kiếm và trực quan hóa dữ liệu bằng Kibana 45
5.3.3 Kibana Dashboard 46
5.4 Xây dựng hệ thống trực quan hóa thực tế 46
5.4.1 Luồng hệ thống thực tế 46
5.4.2 Cấu hình hệ thống 46
5.4.3 Hình ảnh về hệ thống 48
5.5 Kết luận chương 50
CHƯƠNG 6 HỆ THỐNG PHÂN LOẠI BÌNH LUẬN ĐÁNH GIÁ SẢN PHẨM DỰA TRÊN SPARK MLLIB 52
6.1 Bài toán và tính cấp thiết 52
6.2 Tổng quan về dữ liệu cho bài toán 52
6.3 Tiền xử lý dữ liệu 52
6.4 Xây dựng mô hình thuật toán 54
6.5 Kết quả hệ thống 56
6.6 Kết luận chương 6 56
CHƯƠNG 7 KẾT LUẬN 58
7.1 Kết quả đạt được 58
7.2 Hướng phát triển 58
Trang 8TÀI LIỆU THAM KHẢO 59
Trang 9DANH MỤC HÌNH VẼ
Hình 3.1 Mô hình Master Slave 8
Hình 3.2 Kiến trúc Hadoop 8
Hình 3.3 Kiến trúc HDFS 10
Hình 3.4 Block trong HDFS 12
Hình 3.5 Luồng ghi dữ liệu 12
Hình 3.6 Đọc dữ liệu 13
Hình 3.7 Mô hình MapReduce 15
Hình 3.8 Luồng dữ liệu MapReduce 16
Hình 3.9 Sơ đồ hoạt động của MapReduce 16
Hình 3.10 Multipe MapReduce Jobs 17
Hình 3.11 Các thành phần chính trong YARN 17
Hình 3.12 Luồng trong YARN 19
Hình 3.13 Các thành phần của Apache Spark 21
Hình 3.14 Tính toán phân tán 23
Hình 3.15 Spark Application 24
Hình 3.16 Spark RDD 25
Hình 3.17 File hdfs-site.xml 27
Hình 3.18 File hdfs-site.xml 27
Hình 3.19 Node overview 27
Hình 3.20 Node status 28
Hình 3.21 Spark Shell 28
Hình 4.1 Đặc tính lưu trữ của các định dạng 33
Hình 4.2 Kích thước sử dụng không gian lưu trữ 33
Hình 4.3 Độ trễ khi lưu trữ dữ liệu 34
Hình 4.4 Độ trễ khi tra cứu ngẫu nhiên 34
Hình 4.5 Độ trễ với các tính toán thống kê như min, max, avg, count, 35
Hình 4.6 Độ trễ khi lọc dữ liệu 35
Hình 4.7 Độ trễ khi dùng các phép nhóm group by 36
Hình 4.8 Tổng quan luồng dữ liệu qua hệ thống thu thập và tiền xử lý 36
Hình 4.9 Hệ thống lưu trữ trên HDFS 37
Hình 4.10 Một thư mục dữ liệu - Item 37
Hình 4.11 Dữ liệu thô của Item 38
Hình 4.12 Dữ liệu Shop đã làm sạch, giảm chiều, nén 38
Hình 4.13 Dữ liệu Item đã làm sạch, giảm chiều, nén 39
v
Trang 10Hình 4.14 Dữ liệu Comment đã làm sạch, giảm chiều, nén 39
Hình 4.15 Tổng kích thước cho cả dữ liệu thô và dữ liệu sạch 39
Hình 5.1 Elasticsearch Cluster 42
Hình 5.2 Cách hoạt động Elasticsearch 44
Hình 5.3 File elasticsearch.yml 47
Hình 5.4 File kibana.yml 47
Hình 5.5 Truy vấn tổng số sản phẩm 47
Hình 5.6 Truy vấn tổng số shop 48
Hình 5.7 Elasticsearch Cluster Healthy 48
Hình 5.8 Dữ liệu phân tán trên Elasticsearch 48
Hình 5.9 Một số biểu đồ phân tích (1) 49
Hình 5.10 Một số biểu đồ phân tích (2) 49
Hình 5.11 Một số biểu đồ phân tích (3) 49
Hình 5.12 Một số biểu đồ phân tích (4) 49
Hình 5.13 Một số biểu đồ phân tích (5) 50
Hình 5.14 Một số biểu đồ phân tích (6) 50
Hình 5.15 Một số biểu đồ phân tích (7) 50
Hình 5.16 Một số biểu đồ phân tích (8) 50
Hình 6.1 Phân bổ dữ liệu 53
Hình 6.2 Minh họa một bình luận - Đánh giá 53
Hình 6.3 Hàm chuẩn hóa xóa dấu câu và hàm chuẩn hóa label 53
Hình 6.4 Tiền xử lý và lưu trữ dữ liệu đã làm sạch 54
Hình 6.5 Chuẩn hóa dữ liệu - Đưa về chữ in thường 54
Hình 6.6 Dữ liệu đã làm sạch 54
Hình 6.7 Word Embedding 54
Hình 6.8 Luồng xây dựng mô hình thuật toán Random Forest 55
Hình 6.9 Các tham số đánh giá 55
Hình 6.10 Các cây sau khi xây dựng của mô hình 56
Hình 6.11 Độ chính xác - Accuracy 56
Hình 6.12 Precision 56
Hình 6.13 Recall 56
Hình 6.14 Độ đo F1 56
Trang 11DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮT Viết tắt Tên tiếng Anh Tên tiếng Việt
API Application Programming
Inter-face
Giao diện lập trình ứng dụng
CSDL Database Cơ sở dữ liệu
HDFS Hadoop Distributed File System Hệ thống file phân tán
JVM Java Virtual Machine Máy ảo Java
RDD Resilient Distributed Dataset Tập dữ liệu phân tán linh hoạt
vii
Trang 12CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 1.1 Đặt vấn đề
Big Data một thuật ngữ không còn mới với những nước phát triển trên thế giới
và cũng không quá xa lạ đối với Việt Nam Chúng ta đang sống trong kỷ nguyêncủa cuộc cách mạng công nghệ 4.0, những nền tảng IoT, mạng xã hội, nghiên cứukhoa học, sản sinh một lượng lớn dữ liệu mỗi phút với những con số thực sự ấntượng như: năm 2019 cứ mỗi phút có 4,5 triệu người xem Youtube, 4,5 triệu lượttìm kiếm Google, 9,7 nghìn lượt đặt xe Uber, hơn 55 nghìn bức ảnh được đăng lênInstagram, và đến năm 2025 , ước tính 463 exabytes dữ liệu được sinh ra mộtngày Điều này cho thấy sự bùng nổ về dữ liệu và đặt ra bài toán về lưu trữ, xử lý
và phân tích lượng dữ liệu khổng lồ của mỗi doanh nghiệp Doanh nghiệp nào có
dữ liệu, phân tích và khai phá được nguồn dữ liệu lớn đó thì doanh nghiệp đó cólợi thế Dữ liệu lớn trên thực tế đang được ứng dụng vào rất nhiều lĩnh vực của nềnkinh tế, tạo ra những chuyển biến ấn tượng, nhằm tăng hiệu quả và năng suất doanhnghiệp
Trong thương mại, các sàn thương mại điện tử đang càng ngày càng phát triển.Thương mại điện tử không chỉ tận hưởng những lợi ích của việc điều hành trựctuyến mà còn phải đối mặt với nhiều thách thức để đạt được các mục tiêu kinhdoanh Big Data có thể tạo lợi thế cạnh tranh cho doanh nghiệp bằng cách cungcấp thông tin chuyên sâu và các bản báo cáo phân tích xu hướng tiêu dùng Có thểthu thập dữ liệu và yêu cầu của khách hàng ngay cả trước khi khách hàng thực sựbắt đầu giao dịch Tạo ra một mô hình tiếp thị hiệu suất cao Nhà quản lý trangthương mại điện tử có thể xác định được các sản phẩm được xem nhiều nhất, tối ưulượng hiển thị cho từng sản phẩm với từng khách hàng cụ thể Điều này giúp tăngkhả năng bán được hàng, từ đó tạo doanh thu cao hơn,
Big Data mang lại cơ hội cho lĩnh vực bán lẻ bằng cách phân tích thị trườngcạnh tranh và sự quan tâm của khách hàng Nó giúp xác định hành trình trải nhiệm,
xu hướng mua sắm và sự hài lòng của khách hàng bằng cách thu thập dữ liệu hành
vi của khách hàng một cách đa dạng, phong phú, đầy đủ Từ những dữ liệu thu thậpđược có thể cải thiện hiệu suất và hiệu quả bán hàng Big data giúp nhà quản lý xâydựng mô hình chi tiêu của từng khách hàng Với sự trợ giúp của các phân tích dựđoán, ngành công nghiệp có thể so sánh tỷ lệ cung – cầu và có thể tránh tiếp tụctung ra thị trường các sản phẩm không được hầu hết khách hàng đón nhận Ngànhbán le có thể xác định vị trí bố trí sản phẩm trên kệ hàng tùy thuộc vào thói quenmua hàng và nhu cầu của khách hàng và đưa ra các chiến lược kinh doanh mới để
Trang 13CHƯƠNG 5 HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HÓA DỮ LIỆU
di chuyển các node để cân bằng lại Cluster Mỗi cluster được định danh bằng mộtunique name, sử dụng chung cho tất cả các nodes trong cụm, do vậy việc định danhcác cluster trùng tên sẽ gây nên lỗi cho các nodes Mỗi cluster có một node chính(master) được lựa chọn tự động và có thể thay thế khi gặp sự cố (High Availability)
Hình 5.1: Elasticsearch Cluster
Document: Nó là đơn vị dữ liệu cơ bản trong Elasticsearch – đối tượng JSON
với một số dữ liệu cụ thể Mỗi document thuộc một type và nằm trong một chỉmục Mỗi document được liên kết với một định danh duy nhất được gọi là UID.Elasticsearch sử dụng inverted index để đánh chỉ mục cho các document Invertedindex là một cách đánh chỉ mục dựa trên đơn vị là từ nhằm mục đích tạo mối liênkết giữa các từ và các document chứa từ đó
Type: Được sử dụng làm danh mục của chỉ mục, cho phép lưu trữ các loại dữ
liệu khác nhau trong cùng một chỉ mục
Index: Nó là một tập hợp các loại document khác nhau và các thuộc tính của
chúng, giúp lưu trữ một lượng lớn dữ liệu có thể vượt qua giới hạn phần cứng củanode làm chậm quá trình phản hồi các request từ những node đơn Do vậy Index
sử dụng khái niệm shards (phân đoạn) để chia nhỏ thành nhiều phần giúp cải thiệnhiệu suất Khi tạo index, có thể xác định số lượng shard mà bạn muốn Index cũngđược định danh bằng tên, tên này được sử dụng khi thực hiện các hoạt động lập chỉmục, tìm kiếm, cập nhật hoặc xóa các document trong index
Shards: Các index được chia theo chiều ngang thành các shard, mỗi shard chưa
tất cả các thuộc tính của document nhưng chứa ít đối tượng JSON hơn index Sựphân tách ngang làm cho một shard là một node độc lập, có thể được lưu trữ trong
42
Trang 14CHƯƠNG 5 HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HÓA DỮ LIỆU
bất kỳ node nào Do vậy, một node có thể có nhiều Shard, vì thế Shard sẽ là đốitượng nhỏ nhất, hoạt động ở mức thấp nhất, đóng vai trò lưu trữ dữ liệu Shard chophép phân mảnh theo chiều ngang dễ dàng mở rộng khối lượng bản ghi; phân tán
và hoạt động song song trên các phân đoạn nhờ đó tăng hiệu suất làm việc
Có hai loại Shard:
•Primary Shard: phần nằm ngang gốc của một index và sau đó các primary
shard này được sao chép thành các Replicas Shard Primary Shard sẽ lưu trữ
dữ liệu và đánh index Sau khi đánh xong index, dữ liệu sẽ được vận chuyển tớicác Replica Shard Mặc định của Elasticsearch là mỗi index sẽ có 5 PrimaryShard và mỗi Primary Shard sẽ đi kèm 1 Replica Shard
•Replica Shard: Nơi lưu trữ dữ liệu sao chép của Primary Shard, khả năng sẵn
sàng cao, thay thế Primary Shard khi có lỗi Đó cũng là lý do vì sao ReplicaShard không được phân bổ trên cùng node với Primary Shard mà chỉ được saochép từ nó Đảm bảo tính toàn vẹn của dữ liệu khi Primary Shard xảy ra vấn đềnhư bị ẩn hay biến mất Tăng cường tốc độ tìm kiếm bởi có thể cài đặt lượngReplica Shard nhiều hơn mặc định và thực hiện tìm kiếm song song trên cácbản sao này
5.2.3 Cách hoạt động của Elasticsearch
Elasticsearch được xây dựng để hoạt động như một server riêng biệt theo cơ chếcủa RESTful phục vụ việc tìm kiếm dữ liệu
Đầu tiên dữ liệu thô được thu thập và đẩy vào Elasticsearch từ nhiều nguồnnhư: log, system indicators, webapp, crawl data, sẽ được phân tích và xử lí, bìnhthường hóa, làm giàu trong quá trình nhập liệu trước khi được lập chỉ mục.Sau khi có được dữ liệu, dữ liệu sẽ được lập chỉ mục và lưu trữ phân tán trêncụm Elasticsearch
Cuối cùng, sau khi dữ liệu được lập chỉ mục, người dùng có thể tạo các truyvấn phức tạp từ dữ liệu này và sử dụng các truy vấn OLAP trực tuyến tổng hợp(aggregations) để truy xuất các thông tin phức tạp của dữ liệu
Trang 15CHƯƠNG 5 HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HÓA DỮ LIỆU
Hình 5.2: Cách hoạt động Elasticsearch
5.2.4 Khi nào nên sử dụng Elasticsearch
Chúng ta nên sử dụng Elasticsearch cho những trường hợp sau:
•Searching for pure text: Tìm kiếm dữ liệu dạng văn bản thông thường
•Searching text and structured data : Tìm kiếm dữ liệu văn bản và dữ liệu cócấu trúc
•Data aggregation, security analytics, analysis of business data: Tổng hợp dữliệu, phân tích bảo mật, phân tích dữ liệu kinh doanh, lưu trữ dữ liệu lớn
•Logging and log analytics: Ghi lại quá trình hoạt động và phân tích
•Application performance monitoring: Giám sát hiệu năng ứng dụng
•Infrastructure indicators and container monitoring: Giám sát các chỉ số về cơ
sở hạ tầng ứng dụng
•Geo Search: Tìm kiếm theo tọa độ và phân tích trực quan hóa dữ liệu khônggian địa lý
•JSON document storage: Lưu trữ dữ liệu dạng JSON
5.2.5 Ưu nhược điểm của Elasticsearch [11]