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

lưu trữ và xử lý phân tích dữ liệu

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 (705.98 KB, 28 trang )

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

TRƯ NG Đ I H C B CH KHOA H N I

TRƯ NG CÔNG NGH THÔNG TIN V TRUY N THÔNG

B O C O B I TẬP LỚN Đ t i: Lưu trữ v xử lý, phân tích dữ liệu phim

Nguyễn Quốc Nhật Minh 20200408

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

a) Sơ lược về MongoDB ... 9

b) MongoDB Shard Cluster? ... 11

1.6. Docker ... 12

a) Docker là gì ? ... 12

b) Ưu điểm của Docker? ... 12

II. Xây dựng chương trình và hệ thống ... 14

2.1 Luồng dữ ệu của hệ li thống ... 14

2.2 Quá trình thực hiện ... 14

2.2.1 Khở ộng Docker-i đ compose ... 14

2.2.2 Crawl dữ liệu ... 16

2.2.3 Tạo topic kafka ... 16

2.2.4 Thiết lập MongoDB cluster ... 16

2.2.5 Triển khai hệ ống với sparkth ... 20

2.2.5 Biểu diễn dữ ệu bằng Kibanali ... 25

III. Nhận xét , đánh giá và hướng phát triển ... 28

Tài liệu tham khảo ... 29

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

L I NÓI ĐẦU

Trước đây, khi mạng Internet còn chưa phát triển, lượng dữ ệu con người sinh lira khá nhỏ giọt và thưa thớt, nhìn chung, lượng dữ ệu này vẫn nằm trong khả năng lixử lý của con người dù bằng tay hay bằng máy tính. Tuy nhiên trong kỷ nguyên số, khi mà sự bùng nổ công nghệ truyền thông đã dẫn tới sự bùng nổ dữ liệu người dùng, lượng dữ ệu được tạo ra vơ cùng lớn và đa dạng, địi hỏi một hệ ống đủ mạnh để li thphân tích và xử lý những dữ ệu đó.li

Khái niệm Big Data đề cập tớ ữ ệu lớn theo 3 khía canh khác nhau, thứ nhấi d li t là tốc độ sinh d liệu (velocity), thứ hai là lượng dữ liệu (volumn) và thứ ba là độ đa ữ dạng (variety). Lượng dữ ệu này có thể đến từ nhiều nguồn khác nhau như các nềli n tảng truyền thông Google, Facebook, Twitter, … hay thông số thu thập từ các cảm biến, thiết bị IoT trong đời sống, … Và một sự ật rằng doanh nghiệp nào có thể thkiểm soát và tạo ra tri thức từ những dữ liệu này sẽ tạo ra một tiềm lực rất lớn để cạnh tranh với những doanh nghiệp khác.

Trong phạm vi của Bài tập lớn này, nhóm chúng em thực hiện tạo mộ ệ t h thống thu thập dữ ệu về các bộ phim từ trang web The Movie Database, sau đó vận dụng licác kiến thức về lưu trữ và dữ ệu lớn để khai thác. li

Bài tập lớn của nhóm chúng em bao gồm 3 nội dung chính: - Tổng quan xây dựng hệ thống

- Xây dựng chương trình và hệ thống - Nhận xét, đánh giá và hướng phát triển

Mặc dù đã cố gắng hoàn thiện sản phẩm nhưng không thể tránh khỏi những thiếu hụt về kiến thức và sai sót trong kiểm thử. Chúng em rất mong nhận được những nhận xét thẳng thắn, chi tiết đến từ ầy để ếp tục hồn thiện hơn nữa. Cuối cùng, th tinhóm chúng em xin được gửi lời cảm ơn đến thầy TS. Trần Việt Trung dẫn chúng em trong suốt q trình hồn thiệ bài tập lớn. Nhóm chúng em xin chân thành cảm ơn n thầy.

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

I. Kh i qu t công nghệ sử dụng 1.1. Apache Kafka

Apache Kafka là một kho dữ ệu phân tán được tối ưu hóa để thu nạp và xử lý lidữ ệu truyền phát theo thời gian thực. Dữ li liệu truyền phát là dữ ệu được tạo ra liên litục từ hàng nghìn nguồn dữ liệu khác nhau, các nguồn này thường gửi các bản ghi dữ liệu đồng thời. Nền tảng truyền phát cần phải xử lý luồng dữ ệu liên tục này và xử lilý dữ liệu theo trình tự và tăng dần.

Kafka cung cấp ba chức năng chính cho người dùng:• Xuất bản và đăng ký các luồng bản ghi

• Lưu trữ hiệu quả các luồng bản ghi theo thứ tự tạo bản ghi • Xử lý các luồng bản ghi trong thời gian thực

Kafka chủ yếu được dùng để xây dựng các quy trình dữ ệu truyền phát trong lithời gian thực và các ứng dụng thích ứng với luồng dữ ệu đó. Kafka kết hợp nhắn litin, lưu trữ và xử lý luồng nhằm hỗ ợ hoạt động lưu trữ, phân tích cả dữ ệu lịtr li ch sử lẫn dữ ệu trong thời gian thựli c.

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

Cấu trúc của kafka bao gồm các thành phần chính sau:

• Producer: Mộ producer có thể là bất kì ứng dụng nào có chức năng publish t message vào một topic.

• Messages: Messages đơn thuần là byte array và developer có thể sử dụng chúng để lưu bất kì object với bất kì format nào - thơng thường là String, JSON và Avro.

• Topic: Một topic là một category hoặc feed name nơi mà record được publish. • Partitions: Các topic được chia nhỏ vào các đoạn khác nhau, các đoạn này

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

Apache Spark bao gồm 5 thành phần chính: Spark Core, Spark Streaming, Spark SQL, MLlib và GraphX.

1. Spark Core là thành phần cốt lõi của Spark, thực hiện tính tốn và xử lý dữ liệu trong bộ nhớ, đồng thời tham chiếu đến dữ ệu lưu trữ bên ngoài. li2. Spark SQL tập trung vào xử lý dữ ệu có cấu trúc và cung cấp giao diện SQL li

để truy vấn dữ ệu. li

3. Spark Streaming cho phép xử lý dữ ệu theo thời gian thực hoặc gần thời gian lithực, bằng cách chia nhỏ dữ ệu thành các microbatch và sử dụng API Spark. li4. MLlib là nền tảng học máy phân tán trên Spark, với kiến trúc dựa trên bộ nhớ

và tốc độ nhanh hơn so với thư viện tương đương trên Hadoop.

5. GraphX cung cấp thuật toán xử lý đồ ị phân tán, sử dụng RDD của Spark thCore và hỗ ợ xử lý đồ ị trên khung dữ ệu thông qua gói GraphFrames.tr th li b) Những ưu điểm nổi bật của Spark

Được thiế ế từ dưới lên để tăng hiệu suất, Spark có thể nhanh hơn 100 lần so t kvới Hadoop khi xử lý dữ ệu quy mô lớn bằng cách khai thác tính tốn trên bộ nhớ livà các tối ưu hóa khác. Spark cũng nhanh khi dữ ệu được lưu trữ trên đĩa và hiệli n đang giữ kỷ lục thế giớ ề phân loại v i trên đĩa quy mơ lớn.

Spark có các API dễ sử dụng để làm việc trên các tập dữ ệu lớn, bao gồm hơn li100 toán tử để chuyển đổi dữ ệu và các API dataframe quen thuộc để xử lý dữ li liệu bán cấu trúc.

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

Spark được đóng gói với các thư viện cấp cao, bao gồm hỗ ợ truy vấn SQL, trtruyền dữ ệu trực tuyến, học máy và xử lý đồ ị. Các thư viện tiêu chuẩn này làm li thtăng năng su t cấ ủa nhà phát triển và có thể được kết hợp liền mạch để tạo ra các quy trình làm việc ph c tạứ p.

1.3. Elasticsearch

a) Giới thiệu

Elasticsearch là một hệ thống tìm kiếm và phân tích dữ liệu phân tán mã nguồn mở, được xây dựng trên nền tảng Apache Lucene. Nó cung cấp một cách mạnh mẽ và linh hoạt để lưu trữ, tìm kiếm và phân tích dữ ệu trong quy mơ lớn và thời gian lithực.

Elasticsearch hoạt động bằng cách lưu trữ dữ ệu vào các "nút" phân tán, tạli o thành mộ ụm Elasticsearch. Mỗi nút chứa một phần củt c a d liữ ệu và có khả năng xử lý và tìm kiếm dữ ệu độc lập. Khi dữ ệu được thêm hoặc cập nhật, Elasticsearch tự li liđộng phân bổ và phân tán dữ liệu trên các nút, đảm bảo hiệu suất cao và khả năng mở rộng.

Một trong những điểm mạnh chính của Elasticsearch là khả năng tìm kiếm nhanh chóng và chính xác. Nó sử dụng cơ chế tìm kiếm ngược (inverted index) dựa trên Apache Lucene, cho phép tìm kiếm dựa trên từ khóa, văn bản, phạm vi thời gian và nhiều tiêu chí khác. Elasticsearch cung cấp một API RESTful dễ sử dụng để truy vấn dữ ệu và trả về kếli t quả trong thời gian thực.

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

Ngồi tìm kiếm, Elasticsearch cịn cung cấp các tính năng phân tích và khám phá dữ liệu mạnh mẽ. Với Elasticsearch, ta có thể thực hiện các tác vụ như tạo đồ thị, tạo bảng điều khiển, thống kê, phân loại, và phân tích các xu hướng dữ ệu. Nó hỗ litrợ các cơng cụ và thư viện phổ biến như Kibana và Logstash, để tạo ra một giải pháp đầy đủ cho việc thu thập, xử lý và trực quan hóa dữ ệu. li

b) Ưu điểm của Elasticsearch

- Hiệu suất tìm kiếm và truy vấn nhanh chóng: Elasticsearch sử dụng cơ chế tìm kiếm ngược và phân tán dữ ệu để đảm bảo tìm kiếm và truy vấn dữ li liệu nhanh chóng, kể cả vớ ữ ệu lớn. i d li

- Khả năng mở rộng: Elasticsearch có thể mở rộng dễ dàng bằng cách thêm nút vào cụm, giúp xử lý tải cao và mở rộng dữ ệu theo nhu cầu. li

- Phân tích và khám phá dữ ệu linh hoạt: Elasticsearch cung cấp các tính năng liphân tích mạnh mẽ để tìm hiểu và khám phá dữ ệu, từ việc tạo biểu đồ đếli n phân loại và phân tích xu hướng.

- Dễ dàng tích hợp: Elasticsearch có giao diện API RESTful dễ sử dụng, cho phép tích hợp dễ dàng với các ứng dụng và công cụ khác.

- Cộng đồng rộng lớn: Elasticsearch là một dự án mã nguồn mở phát triển bởi một cộng đồng đông đảo, điều này đảm bảo có sự hỗ ợ, cải thiện và phát triểtr n liên tục từ cộng đồng người dùng.

Tóm lại, Elasticsearch là một hệ ống tìm kiếm và phân tích dữ ệu phân tán th limạnh mẽ, cung cấp tốc độ tìm kiếm nhanh chóng, khả năng mở rộng, tính linh hoạt trong phân tích dữ liệu và tích hợp dễ dàng. Điều này làm cho Elasticsearch trở thành một công cụ quan trọng trong việc xử lý và tìm kiếm dữ ệu trong các ứng dụng từ liviệc giám sát hệ ống, phân tích log, tìm kiếm sản phẩm đến khám phá dữ ệu và th linhiều ứng dụng khác.

1.4. Kibana

Kibana là một cơng cụ ực quan hóa và phân tích dữ ệu mã nguồn mở, đượtr li c thiết kế để làm việc cùng vớ Elasticsearch. Nó cung cấp một giao diện người dùng i đơn giản và mạnh mẽ để khám phá, trực quan hóa và chia sẻ thông tin từ dữ liệuđược lưu trữ trong Elasticsearch. Nó cho phép ta tạo các biểu đồ, đồ ị, bảng điều khiểth n và báo cáo tùy chỉnh để hiểu rõ hơn về dữ liệu của mình. Bằng cách tương tác với dữ liệu trong Elasticsearch, ta có thể ực hiện các truy vấn, lọc dữ ệu, phân tích xu th li

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

hướng và tìm ra thơng tin quan trọng từ dữ ệu của mình. Ta có thể coi Kibana như lilà màn hình hiển thị dữ liệu từ Elasticsearch.

Kibana là một cơng cụ ực quan hóa và phân tích dữ ệu mạnh mẽ, làm việtr li c cùng với Elasticsearch để cung cấp khả năng truy xuất thơng tin và phân tích dữ li u ệmột cách dễ dàng và hiệu quả.

1.5. MongoDB Cluster

a) Sơ lược v MongoDB

MongoDB là một database hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON có một schema rất linh hoạt gọi là BSON. MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và các document khác nhau. Các dữ ệu được lưu trữ li trong document kiểu JSON nên truy vấn sẽ rất nhanh.

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

MongoDB lần đầu ra đờ ởi MongoDB Inc., tại b i thời điểm đó là thế hệ 10, vào tháng Mười năm 2007, nó là một phần của sản phẩm PaaS (Platform as a Service) tương tự như Windows Azure và Google App Engine. Sau đó nó đã được chuyển thành nguồn mở từ năm 2009.

MongoDB đã trở thành một trong những NoSQL database nổi trội nhất bấy giờ, được dùng làm backend cho rất nhiều website như eBay, SourceForge và The New York Times.

- Aggregation: Các Aggregation operation xử lý các bản ghi dữ ệu và trả về likết quả đã được tính tốn. Các phép tốn tập hợp nhóm các giá trị từ nhiều Document lại với nhau, và có thể ực hiện nhiều phép tốn đa dạng trên dữ thliệu đã được nhóm đó để ả về một kết quả duy nhất. Trong SQL, count(*) trvà GROUP BY là tương đương với Aggregation trong MongoDB. - Lưu trữ file: MongoDB được dùng như một hệ ống file tận dụng những th

function trên và hoạt động như một cách phân phối qua sharding.

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

b) MongoDB Shard Cluster?

MongoDB Shard Cluster là một kiểu triển khai MongoDB được thiế ế để mở t krộng khả năng chịu tả ủa hệ ống cơ sở dữ ệu MongoDB bằng cách phân chia dữ i c th liliệu và phân phối chúng trên nhiều máy chủ (shard). Cụ ể, mục tiêu của MongoDB thShard Cluster là tăng cường khả năng mở rộng ngang của hệ ống, cho phép xử lý thlượng dữ ệu lớn và cung cấp hiệu suất cao. li

Dưới đây là m t số thành phần củ MongoDB Shard Cluster:ộ a

- Mongos: Đây thực ra là một query router, cung cấp một giao diện tương tác giữa ứng dụng và các sharded cluster.

- Mongod: Nó xử lý các yêu cầu dữ ệu, quản lý quyền truy cập dữ ệu và li lithực hiện các hoạ ộng quản lý nềnt đ

- Shard: Mỗi shard chứa đựng một tập nhỏ các data đã sharded, từ phiên bản 3.6 trở lên, shards phải được cấu hình chạy replicaset nếu muốn trở thành một phần của cluster.

- Config server: Config server chứa đựng metadata và cấu hình cho cluster, từ phiên bản 3.4 trở lên config server phải deploy dướ ạng replicaset.i d- Replicaset (Primary, secondary): Một replica set trong MongoDB là một

nhóm các tiến trình của mongodb duy trì cùng một bộ dữ liệu. Các replica

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

set cung cấp tính dự phịng và tính sẵn sàng cao và là cơ sở để ển khai trinhập xuấ ữ ệu khi cần thiết d li t.

1.6. Docker

a) Docker l gì ?

Docker là nền tảng phần mềm cho phép bạn dựng, kiểm thử và triển khai ứng dụng một cách nhanh chóng. Docker đóng gói phần mềm vào các đơn vị tiêu chuẩn hóa được gọi là container có mọi thứ mà phần mềm cần để ạy, trong đó có thư chviện, công cụ hệ ống, mã và thời gian chạy. Bằng cách sử dụng Docker, bạn có thể thnhanh chóng triển khai và thay đổi quy mơ ứng dụng vào bất kỳ môi trường nào và biết chắc rằng mã của bạn sẽ chạy được.

Docker hoạt động bằng cách cung cấp phương thức tiêu chuẩn để ạy mã củch a bạn. Docker là hệ điều hành dành cho container. Cũng tương tự như cách máy ảo ảo hóa (loại bỏ nhu cầu quản lý trực tiếp) phần cứng máy chủ, các container sẽ ảo hóa hệ điều hành của máy chủ. Docker được cài đặt trên từng máy chủ và cung cấp các lệnh đơn giản mà bạn có thể sử dụng để dựng, khở ộng hoặi đ c dừng container.

b) Ưu điểm của Docker?

- Tính dễ ứng dụng: Docker rất dễ cho mọi người sử dụng từ lập trình viên, sys admin… nó tận dụng lợi thế của container để build, test nhanh chóng. Có thể đóng gói ứng dụng trên laptop của họ và chạy trên public cloud, private cloud…

- T c độ: Docker container rất nhẹ và nhanh, bạn có thể tạo và chạy docker container trong vài giây.

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

- Môi trường chạy v khả năng mở rộng: Bạn có thể chia nhỏ ững chứnh c năng củ ứng dụng thành các container riêng lẻ. Ví dụng Database chạy trên a một container và Redis cache có thể ạy trên một container khác trong khi chứng dụng Node.js lại chạy trên một cái khác nữa. Với Docker, rất dễ để liên kết các container với nhau để tạo thành mộ ứng dụng, làm cho nó dễ dàng t scale, update các thành phần độ ập với nhau.c l

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

II. Xây dựng chương trình v hệ th ng 2.1 Luồng dữ ệu của hệ lith ng

Luồng dữ ệu củli a h thệ ống chúng em xây dựng gồm 4 quá trình:- Thu thập dữ ệu trên website The Movie Database.li

- Lưu dữ ệu vào Kafka.li

- Lọc, làm sạch dữ ệu trên li Kafka bằng Spark. Sau đó lưu thành 2 bản: 1 bản lưu trên MongoDB, 1 bản lưu gửi vào Elasticsearch.

- Biểu diễn dữ liệu trên Elasticsearch dưới dạng biểu đồ, đồ thị, danh sách bảng sử dụng Kibana.

2.2 Qu trình thực hiện

2.2.1 Khởi động Docker-compose

1 spark-master bitnami/spark:3.2.3

Mã nguồn chương trình được mount vào bên trong spark-master để submit do lỗi gặp phải khi submit job từ local machine. 2 spark-worker-1 bitnami/spark:3.2.3 8081:8081

3 spark-worker-2 bitnami/spark:3.2.3 8082:8081

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

4 zookeeper bitnami/zookeeper:3.9 2181:2181

7 elasticsearch <sup>docker.elastic.co/elasticse</sup><sub>arch/elasticsearch:7.17.16</sub> 9200:9200

8 kibana <sup>docker.elastic.co/kibana/ki</sup><sub>bana:7.17.16</sub> 5601:5601

thực và ứng dụng.

- Elasticsearch: Đây là một cơng cụ tìm kiếm và phân tích dữ ệu mạnh mẽli , cho phép lưu trữ, tìm kiếm và phân tích khối lượng dữ liệu lớn một cách nhanh chóng và theo thời gian thực.

- Kibana: Đây là một công cụ giao diện người dùng phổ biến được sử dụng để trực quan hóa dữ ệu và tạo bảng điều khiển báo cáo chi tiế li t.

- Cfgsvr1: Config server chứa đựng metadata và cấu hình cho cluster.

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

- Router_mongos: Query router, chịu trách nhiệ định tuyến tới các shard phm ù hợp.

- Shard1svr1, shard1svr2, shard1svr3, shard2svr1, shard2svr2, shard2svr3: Các shard server dùng để lưu trữ dữ liệu. 2.2.2 Crawl dữ liệu

Chúng em sử dụng API của trang web The Movie Database để crawl dữ ệu về licác bộ phim. Đây là một dự án cộng đồng lớn được phát ển bởi cộng đồng ngườtri i hâm mộ phim, cung cấp thông tin chi tiết về phim, bao gồm các bộ phim truyền hình, bộ phim ngắn, và nhiều loạ ội dung khác.i n

2.2.3 Tạo topic kafka

Tiến hành tạo 2 topic “movie” và “actor” có 3 partition và 2 replication factor:

2.2.4 Thiết lập MongoDB cluster

Tạo các ReplicaSet cfgsvr, shard1, shard2:

</div>

×