Tải bản đầy đủ (.pdf) (30 trang)

Đồ Án Tốt Nghiệp Xây Dựng Hệ Thống Lưu Trữ Và Xử Lí Dữ Liệu Lớn Và Ứng Dụng Phân Tích Dữ Liệu Sàn Thương Mại Điện Tử.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.04 MB, 30 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI</b>

<b>Giảng viên hướng dẫn: PGS. TS. Nguyễn Thị Kim Anh</b>

Chữ kí GVHD

<b>Khoa:</b> Khoa học máy tính

<b>Trường:</b> Cơng nghệ thơng tin và Truyền thông

<b>HÀ NỘI, 08/2022</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

Họ và tên sinh viên Nguyễn Đăng HùngĐiện thoại liên lạc 0376911574

Email ớp Khoa học máy tính 04 - K63

<b>LỜI CAM KẾT</b>

<i>Tơi – Nguyễn Đăng Hùng – cam kết Đồ án Tốt nghiệp (ĐATN) là cơng trình</i>

nghiên cứu của bản thân tơi dưới sự hướng dẫn của<i>PGS. TS. Nguyễn Thị Kim Anh</i>.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 hồn tồ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.

<i>Hà Nội, ngàythángnăm</i>

Tác giả ĐATN

<i>Họ và tên sinh viên</i>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>LỜI CẢM ƠN</b>

Để xây dựng được thành công đồ án tốt nghiệp ngày hơm nay, đó là nhờ vào bốnnăm miệt mài đèn sách học hỏi từ nhà trường, thầy cơ và bạn bè khơng ngừng.Dođó, em xin gửi lời cảm ơn tới Trường công nghệ thông tin và truyền thông - Đạihọc Bách Khoa Hà Nội. Em xin cảm ơn các thầy, các cô đã truyền đạt các kiến thứctrong suốt khoảng thời gian qua để em có được một nền tảng kiến thức vững chắcbước vào ngành nghề đam mê của mình.

Em xin cảm ơn cơ Nguyễn Thị Kim Anh đã ln 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à hồnthiện đồ án thành công.

Cuối cùng em xin cảm ơn gia đình và bạn bè đã ln động viên tinh thần để em cóchỗ dựa vững chắc nhất để hồ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

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>TÓM TẮT NỘI DUNG ĐỒ ÁN</b>

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ớivà 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ựđố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.

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>CHƯƠNG 2. TỔNG QUAN VỀ SÀN THƯƠNG MẠI ĐIỆN TỬ... 4</b>

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

<b>CHƯƠNG 3. TỔNG QUAN VỀ HỆ THỐNG LƯU TRỮ VÀ XỬ LÝ DỮLIỆU LỚN HADOOP ... 6</b>

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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

3.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 tố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

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

<b>CHƯƠNG 5. HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HĨA DỮLIỆU... 41</b>

5.1 Tổng quan ... 41

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

5.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

6.1 Bài tốn và tính cấp thiết ... 52

6.2 Tổng quan về dữ liệu cho bài toán ... 52

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>TÀI LIỆU THAM KHẢO... 59</b>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

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 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 tố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

<small>v</small>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Hì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.7 Elasticsearch Cluster Healthy . . . 48

Hình 5.8 Dữ liệu phân tán trên Elasticsearch . . . 48

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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>DANH MỤC THUẬT NGỮ VÀ TỪ VIẾT TẮTViết tắt Tên tiếng AnhTên tiếng ViệtAPI</b> Application Programming Inter-

Giao diện lập trình ứng dụng

<b>CSDL</b> Database Cơ sở dữ liệu

<b>HDFS</b> Hadoop Distributed File System Hệ thống file phân tán

<b>JVM</b> Java Virtual Machine Máy ảo Java

<b>RDD</b> Resilient Distributed Dataset Tập dữ liệu phân tán linh hoạt

vii

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI1.1 Đặt vấn đề</b>

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ớivà 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ànhvi 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ựđố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 để

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<small>CHƯƠNG 5. HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HĨA DỮ LIỆU</small>

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)

<b>Hình 5.1: Elasticsearch Cluster</b>

<b>Document: Nó là đơn vị dữ liệu cơ bản trong Elasticsearch – đối tượng JSON</b>

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ừ đó.

<b>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ữ</b>

liệu khác nhau trong cùng một chỉ mục

<b>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</b>

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 Indexsử 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.

<b>Shards: Các index được chia theo chiều ngang thành các shard, mỗi shard chưa</b>

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

<small>42</small>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<small>CHƯƠNG 5. HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HĨA DỮ LIỆU</small>

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ánvà 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:

•<b>Primary Shard: phần nằm ngang gốc của một index và sau đó các primary</b>

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

•<b>Replica Shard: Nơi lưu trữ dữ liệu sao chép của Primary Shard, khả năng sẵn</b>

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 tồ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

<b>5.2.3 Cách hoạt động của Elasticsearch</b>

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 q 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.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<small>CHƯƠNG 5. HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HĨA DỮ LIỆU</small>

<b>Hình 5.2: Cách hoạt động Elasticsearch</b>

<b>5.2.4 Khi nào nên sử dụng Elasticsearch</b>

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 q 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

<b>5.2.5 Ưu nhược điểm của Elasticsearch [11]Ưu điểm:</b>

•Elasticsearch cho phép tìm kiếm dữ liệu một cách nhanh chóng với hiệu năngcao gần như là real-time hoặc near real-time

•Hỗ trợ tìm kiếm mờ (Fuzzy Query), tức là từ khóa tìm kiếm có thể sai lỗi chính

<small>44</small>

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<small>CHƯƠNG 5. HỆ THỐNG PHÂN TÍCH VÀ TRỰC QUAN HĨA DỮ LIỆU</small>

•Lưu trữ dữ liệu full-text và quản lý vòng đời chỉ mục, cho phép người dùngtruy vấn và phân tích, tổng hợp dữ liệu rất lớn với tốc độ cao, hiệu quả•Elasticsearch là hệ thống phân tán tự nhiên, dễ dàng mở rộng và tích hợp mạnh

mẽ. Các document được đảm bảo bằng cơ chế replica tránh mất mát dữ liệu•Dễ dàng phục hồi dữ liệu bằng các bản sao lưu được tạo bởi gateway trong

<b>Nhược điểm:</b>

•Elasticsearch được thiết kế cho mục đích tìm kiếm nên thường khơng dùnglàm cơ sở dữ liệu chính do khơng mạnh trong các thao tác CRUD, nên thườngcần có một cơ sở dữ liệu dùng song song như MySQL, MongoDB,. . .•Khơng phù hợp với những hệ thống thường xuyên cập nhật dữ liệu do sẽ rất

<b>5.3.2 Tìm kiếm và trực quan hóa dữ liệu bằng Kibana</b>

Kibana cho phép phân tích trực quan dữ liệu từ một chỉ mục Elasticsearch hoặcnhiều chỉ số. Các chỉ số được tạo khi Logstash hoặc Beats nhập dữ liệu khơng cócấu trúc từ các tệp nhật kí và các nguồn khác, chuyển đổi nó thành một dạng cócấu trúc cho các chức năng lưu trữ và tìm kiếm của Elasticsearch.

Giao diện của Kibana cho phép người dùng truy vấn dữ liệu trong chỉ số search và sau đó trực quan hóa kết quả thông qua các tùy chọn biểu đồ tiêu chuẩn

</div>

×