ĐẠI HC BÁCH KHOA HÀ NỘI
TRƯỜNG CÔNG NGH THÔNG TIN VÀ TRUYỀN THÔNG
BÀI TP LN
LƯU TR VÀ X LÝ D LIU LN
Đ TÀI: PHÂN TÍCH D LIU THI TIT
NHÓM 16
Sinh viên thc hin: Trương ng Đạt 20215346
Hoàng Đình ng 20210399
Hoàng ng Phú 20215451
Ging viên hưng dn: TS.Trn Vit Trung
Ni, Ngày 10 tháng 12 năm 2024
MỤC LỤC
CHƯƠNG 1. ĐT VN Đ ....................................................................................... 1
1.1 Bài toán đưc la chn............................................................................................ 1
1.2 Tính phù hp ca bài toán vi big data...................................................................... 1
1.3 Phm vi và gii hn ca project................................................................................ 2
CHƯƠNG 2. KIN TRÚC VÀ THIT K................................................................. 3
2.1 Kiến trúc tng th................................................................................................... 3
2.2 Chi tiết tng component và vai trò............................................................................ 4
2.2.1 D liu ....................................................................................................... 4
2.2.2 Terraform .................................................................................................... 5
2.2.3 Docker ........................................................................................................ 5
2.2.4 Mage .......................................................................................................... 6
2.2.5 Google Cloud Storage (GCS) ........................................................................ 7
2.2.6 Google BigQuery......................................................................................... 8
2.2.7 Spark .......................................................................................................... 9
2.2.8 Kafka.......................................................................................................... 11
2.2.9 Streamlit ..................................................................................................... 13
2.3 Data flow và component interaction diagrams ........................................................... 13
2.3.1 Lung d liu t web sang GCS và Bigquery.................................................. 13
2.3.2 Streaming d liu vi kafka........................................................................... 17
2.3.3 X lý d liu vi spark.................................................................................. 22
2.3.4 Trc quan hóa d liu và kết qu vi streamlit................................................. 27
CHƯƠNG 3. CHI TIT TRIN KHAI...................................................................... 29
3.1 Source code và documentation................................................................................. 29
3.2 Configuration files theo môi trưng.......................................................................... 29
3.3 Deployment strategy ............................................................................................... 30
3.4 Monitoring setup .................................................................................................... 30
CHƯƠNG 4. BÀI HC KINH NGHIM................................................................... 32
4.1 Kinh nghim v Data Ingestion................................................................................ 32
4.1.1 X lý nhiu ngun d liu đa dng................................................................. 32
4.1.2 Đm bo Data Quality.................................................................................. 32
4.1.3 X lý Late Arriving Data .............................................................................. 33
4.2 Kinh nghim v Stream Processing .......................................................................... 33
4.2.1 Kinh nghim 1:Exactly-once processing......................................................... 33
4.2.2 Kinh nghim 2: State management................................................................. 34
4.2.3 Kinh nghim 3: Recovery mechanism ............................................................ 34
4.3 Kinh nghim v Batch Processing ............................................................................ 35
4.3.1 Kết ni giao din Spark Web UI t web browser ............................................. 35
4.3.2 Vn đ chia partition khi submit spark job...................................................... 35
4.4 Kinh nghim v Data Storage................................................................................... 35
4.5 Kinh nghim v Performance Optimization............................................................... 36
4.6 Kinh nghim v Monitoring & Debugging................................................................ 37
4.7 Kinh nghim v Data Quality & Testing.................................................................... 38
4.7.1 Data validation ............................................................................................ 38
4.7.2 Unit testing.................................................................................................. 38
4.8 Kinh nghim v Security & Governance ................................................................... 38
ii
4.9 Kinh nghim v Fault Tolerance............................................................................... 39
4.9.1 Kinh nghim 1: Failure recovery.................................................................... 39
4.9.2 Kinh nghim 2: Data replication.................................................................... 39
4.9.3 Kinh nghim 3: Backup strategies ................................................................. 40
4.9.4 Kinh nghim 4: Disaster recovery.................................................................. 40
4.10 Các kinh nghim khác........................................................................................... 40
4.10.1 Kinh nghim 1: Gi lp streaming vi d liu không liên tc.......................... 40
4.10.2 Kinh nghim 2: Xóa nhm y o trên Google Cloud ................................... 41
DANH MỤC NH VẼ
nh 2.1 Kiến trúc h thng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
nh 2.2 Dashboard ca Mage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
nh 2.3 nh nh Buckets trong GCS . . . . . . . . . . . . . . . . . . . . . . . . . 7
nh 2.4 Metadata ca một Parquet . . . . . . . . . . . . . . . . . . . . . . . . . . 8
nh 2.5 Giao din chính ca BigQuery Studio . . . . . . . . . . . . . . . . . . . . 9
nh 2.6 Mt ví d v query đ m . . . . . . . . . . . . . . . . . . . . . . . . . . 9
nh 2.7 Máy o trên Google Cloud Platform. . . . . . . . . . . . . . . . . . . . . 10
nh 2.8 Giao din hin th ca Spark. . . . . . . . . . . . . . . . . . . . . . . . . . 11
nh 2.9 Giao din hin th ca Spark Jobs. . . . . . . . . . . . . . . . . . . . . . . 11
nh 2.10 Zookeeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
nh 2.11 Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
nh 2.12 Pipeline ca d liu lưng mưa trong Mage . . . . . . . . . . . . . . . . . 14
nh 2.13 Pipeline v các trưng weather trong d liu . . . . . . . . . . . . . . . . 14
nh 2.14 Lp lch chy pipeline ca lưng mưa theo ngày . . . . . . . . . . . . . . 15
nh 2.15 Lp lch chy pipeline ca weather theo ngày . . . . . . . . . . . . . . . . 15
nh 2.16 nh nh v Cloud Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
nh 2.17 Kết qu d liu v thi tiết sau khi đưa lên data lake. . . . . . . . . . . . . 16
nh 2.18 Kết qu d liu v lưng mưa sau khi đưa lên data lake. . . . . . . . . . . 16
nh 2.19 Streaming Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
nh 2.20 Quá trình đc d liu ca 2 producer. . . . . . . . . . . . . . . . . . . . . 20
nh 2.21 Messages t Kafka Cluster. . . . . . . . . . . . . . . . . . . . . . . . . . . 21
nh 2.22 Dữ liu đưc lưu tr vào GCS. . . . . . . . . . . . . . . . . . . . . . . . . 21
nh 2.23 Dữ liu đưc lưu tr vào Google Bigquery. . . . . . . . . . . . . . . . . . 21
nh 2.24 Dữ liu đưc lưu tr vào Google Bigquery. . . . . . . . . . . . . . . . . . 22
nh 2.25 Khi spark job thc hin gp d liu vi 2 node workers đưc thc thi xong. 23
nh 2.26 Khi spark job thc hin gp d liu vi 2 node workers thì 1 worker b kill. 23
nh 2.27 Khi spark job thc hin gp d liu vi 1 worker còn li. . . . . . . . . . 24
nh 2.28 Khi spark job thc hin biến đi tính toán vi 2 node workers đưc thc
thi xong. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
nh 2.29 c trưng d liu v thi tiết đưc tính toán. . . . . . . . . . . . . . . . 25
nh 2.30 Thông tin d liu sau khi thc hin tính toán. . . . . . . . . . . . . . . . . 25
v
nh 2.31 Tính toán d liu bão vi 2 worker . . . . . . . . . . . . . . . . . . . . . . 26
nh 2.32 Tính toán d liu bão vi 1 worker . . . . . . . . . . . . . . . . . . . . . . 26
nh 2.33 c trưng d liu v bão đưc tính toán. . . . . . . . . . . . . . . . . . . 27
nh 2.34 Thông tin d liu bão sau khi thc hin tính toán. . . . . . . . . . . . . . 27
nh 2.35 Giao din chung streamlit. . . . . . . . . . . . . . . . . . . . . . . . . . . 27
nh 2.36 Giao din detect bão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
nh 3.1 Quick CPU/Mem/Disk in Monitoring . . . . . . . . . . . . . . . . . . . . 30
nh 3.2 CPU/Mem/Net/Disk detail in Monitoring . . . . . . . . . . . . . . . . . . 31
nh 3.3 Monitoring sum query in bigquery and request count in GCS Bucket . . 31
vi
DANH MỤC BẢNG
Bảng 2.1 Danh sách các thông s đo lưng và t chi tiết . . . . . . . . . . . . . 5
Bảng 2.2 Cấu trúc d liu thu thp t API thi tiết. . . . . . . . . . . . . . . . . . . 18
Bảng 4.1 So sánh hiu năng gia các gii pháp phân cm . . . . . . . . . . . . . . 37
vii
CHƯƠNG 1. ĐẶT VẤN ĐỀ
1.1 i toán đưc la chn
Trong bi cnh biến đi khí hu toàn cu đang din ra ngày càng phc tp, vic nghiên cu
và phân tích d liu khí hu đã tr thành một yếu t quan trng đ h tr các quyết đnh liên
quan đến qun lý tài nguyên, hoch đnh chính sách và ng phó vi các thách thc i trưng.
Dữ liu khí hu không ch cung cp thông tin v các hin tưng t nhiên còn là cơ s đ d
báo và xây dng các kch bn v biến đi khí hu trong tương lai.
Mt trong nhng ngun d liu khí hu đáng tin cy và ph biến nht hin nay là Cli-
mate Data Store (CDS), đưc phát trin bi Trung tâm Dự báo Thi tiết Trung hn Châu Âu
(ECMWF) trong khuôn kh chương trình Copernicus. CDS cung cp một kho d liu phong
phú, bao gm thông tin v nhit đ, lưng mưa, gió, đ m và nhiu yếu t khí hu khác, vi
phm vi không gian và thi gian đa dng. Điu này giúp các nhà nghiên cu, t chc và cá nhân
có th tiếp cn, khai thác và x lý d liu khí hu một cách hiu qu đ phc v cho nhiu mục
đích khác nhau.
Trong bài tp ln này, nhóm tp trung vào vic tìm hiu ngun d liu t Climate Data Store.
Mc tiêu ca project này là xây dng một data pipeline t đng thu thp, biến đi và biu din
lưng d liu trên nhm phc v cho các bài toán phân tích sau này. Mage đưc s dng đ
xây dng pipeline download data t web v và upload lên Google Cloud Storage (GCS) và
Google BigQuery. Trong BigQuery, d liu đưc làm sch, biến đi s dng Spark nhm to
ra b d liu cui cùng cho mục đích trc quan hóa. V trc quan hóa d liu, nhóm s dng
streamlit vi nhng ưu đim v biu din ni suy. Ngoài ra nhóm cũng gi lp d liu dưi dng
streaming và s dng kafka đ x lý. Hệ thng cũng đưc tích hp vi Google Monitoring và
Google Logging đ có th theo dõi tng th, cnh báo khi xy ra các bt thưng và d dàng x
lý khi gp li.
1.2 nh phù hp ca bài toán vi big data
Ngoài tính cp thiết và tính thi s ca d liu v thi tiết, nhóm da chn b d liu này vì
đáp ng đ tiêu chí 5V ca n hc, c th:
Khối lưng d liu ln (Volume): Dữ liu khí hu bao gm thông tin v nhiu yếu t như
nhit đ, đ m, lưng mưa, gió và các ch s khác, đưc thu thp trên phm vi toàn cu
vi đ phân gii cao. n cnh đó, d liu này thưng đưc lưu tr theo chui thi gian
dài (theo gi, ngày, tháng hoc năm), dn đến khi lưng d liu cc k ln, đáp ng đc
1
CHƯƠNG 1. ĐẶT VẤN ĐỀ
trưng "Volume" ca Big Data.
Tc đ phát sinh d liu (Velocity): Dữ liu khí hu liên tc đưc cp nht t các trm
quan trc, v tinh và các hình d báo. Tính cht liên tc này đòi hi một h thng x lý
d liu thi gian thc hoc gn thi gian thc đ đm bo khai thác d liu kp thi, phc
v các ng dng như d báo thi tiết hoc cnh báo thiên tai.
nh đa dng ca d liu (Variety): Dữ liu khí hu đến t nhiu ngun khác nhau và có
nhiu đnh dng, bao gm d liu dng bng (các ch s đo đc), d liu raster (bn đ khí
hu), và các d liu phi cu trúc khác. S đa dng này yêu cu các phương pháp lưu tr và
x lý d liu phù hp đ qun lý hiu qu.
Giá tr khai thác t d liu (Value): Dữ liu khí hu có giá tr ln trong vic h tr ra
quyết đnh nhiu lĩnh vc, t hoch đnh chính sách, qun lý tài nguyên đến d báo thi
tiết và ng phó vi biến đi khí hu. i toán này cho thy rõ giá tr ca vic x lý Big
Data, không ch dng li lưu tr còn mở rng đến phân tích và khai thác thông tin
quan trng.
nh xác thc ca d liu (Veracity): Dữ liu t CDS đưc cung cp bi các t chc uy
tín như ECMWF, đã qua kim đnh và hiu chnh nghiêm ngt, đm bo đ tin cy cao.
Do đó, b d liu này hoàn toàn có th đáp ng đưc yêu cu cho vic hc tp, nghiên cu
các công ngh thu thp, lưu tr và x lý d liu đưc gii thiu trong n hc.
1.3 Phm vi và gii hn ca project
Trong phm vi và gii hn ca n hc, nhóm tp trung vào vic xây dng h thng x lý
d liu khí hu t đng t ngun Climate Data Store (CDS) vi các bưc chính:
Thu thp và lưu tr d liu trên Google Cloud Storage (GCS).
X lý, làm sch và biến đi d liu bng Apache Spark trên nn tng Google BigQuery.
Trc quan hóa d liu qua Streamlit, bao gm hưng gió, nhit đ cm nhn, áp xut mực
nưc bin, áp xut b mặt,tng din tích y bao ph,tng lưng tinh th băng trong y,
tng lưng nưc trong y, thông tin các cơn bão.
Th nghim gi lp streaming bng cách s dng Kafka.
Do gii hn thi gian và tài nguyên, phm vi x lý d liu t 2022-2024 vi d liu thi
tiết Vit Nam (vĩ đ t vĩ bc, kinh đ t kinh đông).8
o
-24
o
102
o
-112
o
2
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
2.1 Kiến trúc tng th
Kiến trúc và các công ngh s dng:
Hình 2.1: Kiến trúc h thng.
Kiến trúc x lý d liu đưc nhóm s dng là kiến trúc Lambda kết hp 2 hưng x lý:
Batch Processing (X lý lô): X lý một lưng ln d liu trong khong thi gian t
tháng 1/2022 đến 10/2024.
Stream Processing (Xử lý thi gian thc): Gi lp x lý thi gian thc vào ngày
01/11/2024.
c thành phn trong h thng:
Thành phn x lý thi gian thc (Stream Layer): Dữ liu t Climate Data Store
đưc gi ti Kafka. Dữ liu thi gian thc t Kafka đưc chuyn đến Spark đ thc
hin các phép biến đi và cp nht vào BigQuery.
Thành phn x lý lô (Batch Layer): Mage giúp thu thp d liu lch s t Climate
Data Store và ti lên Google Cloud Storage (GCS) đ lưu tr. Sau khi d liu đưc ti
lên GCS, Spark thc hin vic x lý, làm sch và biến đi d liu. Dữ liu đã qua x lý
đưc ti vào BigQuery.
3
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
Thành phn tích hp d liu (Serving Layer): BigQuery đóng vai trò là kho d liu
hp nht (Serving Layer), nơi cha c d liu thi gian thc và d liu lô đã x lý.
Streamlit kết ni trc tiếp vi BigQuery, giúp hin th d liu và to giao din trc quan
cho ngưi dùng.
2.2 Chi tiết tng component và vai trò
2.2.1 Dữ liu
Dữ liu thi tiết ly t Climate Data Store đưc t chc theo gi.
Dữ liu đưuc ly trong khong thi gian t 01/01/2022 31/10/2024 và trong phm
vi Vit Nam.
ch thưc d liu 15GB vi gn 80000000 bn ghi.
c trưng d liu bao gm:
Thông s Mô t
Time Thi gian đo
Latitude Vĩ đ
Longitude Kinh đ
10m u-component of wind
Thành phn gió theo hưng Đông Tây ti
đ cao 10 t
10m v-component of wind
Thành phn gió theo hưng Bắc Nam ti
đ cao 10 t
2m dewpoint temperature Nhit đ đim sương đ cao 2 t
2m temperature Nhit đ không khí đ cao 2 t
Mean sea level pressure Áp sut trung bình ti mực nưc bin
Sea surface temperature Nhit đ b mặt nưc bin
Surface pressure
Áp sut b mặt ti đim đo (trên mặt đt
hoc trên mặt bin)
Total cloud cover Tng đ che ph ca y
Total column cloud ice water
Tng lưng nưc trong ct khí quyn
dng tinh th băng
Total column cloud liquid water
Tng lưng nưc trong ct khí quyn
dng tinh th lng
Total precipitation Lưng mưa
4
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
Thông s Mô t
Bng 2.1: Danh sách các thông s đo lưng và mô t chi tiết
2.2.2 Terraform
Terraform đưc s dng đ qun lý và t đng hóa vic trin khai cơ s h tng trên Google
Cloud Platform. cho phép đnh nghĩa các tài nguyên như Google Cloud Storage, Google
BigQuery dưi dng code (IaC), giúp vic trin khai và qun lý d dàng hơn. Ngoài ra, Ter-
raform cũng đưc dùng đ cu hình và trin khai các dch v khác như Cloud Run cho Mage và
qun lý cơ s h tng cho Kafka và PySpark.
Lợi ích:
Infrastructure as Code (IaC): s h tng đưc qun lý dưi dng code, giúp d
dàng theo dõi, phiên bn hóa và t đng hóa vic trin khai.
Trin khai đơn gin và nhanh chóng: T đng hóa vic to và cu hình các tài nguyên,
gim thiu li do cu hình th công.
Khả năng tái s dng: c module Terraform có th đưc tái s dng cho các d án
khác.
Nhược đim:
Đòi hi kiến thc v HCL: Cần hc ngôn ng HCL đ viết cu hình Terraform.
Quản lý state file: Cần qun lý state file đ theo dõi trng thái ca cơ s h tng.
2.2.3 Docker
Docker đưc s dng đ đóng gói, phân phi và chy các ng dng trong i trưng cô lp
(container). Trong d án này, Docker đưc s dng đ đóng gói ng dng Mage và to i
trưng chy nht quán cho Kafka và Zookeeper. Vic s dng Docker giúp đơn gin hóa vic
trin khai và đm bo tính nht quán gia các i trưng khác nhau (phát trin, kim th, sn
xut).
Lợi ích:
nh nht quán: Docker đm bo ng dng chy ging nhau trên mọi i trưng, t
y tính cá nhân ca nhà phát trin đến i trưng production trên cloud.
lp: c ng dng chy trong container đưc cô lp vi nhau và vi h điu hành
host, tránh xung đt v dependency và tài nguyên.
5
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
Trin khai d dàng: Docker image có th d dàng đưc trin khai lên các nn tng
cloud như Google Cloud Run.
Khả năng mở rng: Dễ dàng scale ng dng bng cách chy nhiu container.
Nhược đim:
Độ phc tp: Vic qun lý nhiu container và orchestration có th tr nên phc tp.
Hiu sut: Chy ng dng trong container có th nh hưng đến hiu sut, tuy nhiên
nh hưng này thưng không đáng k.
2.2.4 Mage
Mage là một phn mềm vn hành workflow tương t như Airflow, cho phép ngưi dùng xây
dng, giám sát và vn hành data pipelines một cách hiu qu. Mage có th biến bt c hàm nào
trong Python thành một đơn v có th giám sát và vn hành đưc. n cnh các chc năng như
logging, scheduling, caching, Mage còn cung cp các hàm, tin ích có sn cho phép x lý li và
chy các tác v song song. Đây cũng là lí do nhóm la chn s dng Mage cho project này.
Hình 2.2: Dashboard ca Mage
Trong Mage, các pipeline d liu đưc cu thành t các cell, mỗi cell có một nhim v riêng
vi các hàm template h tr tương tác vi các dch v cloud như Google cloud storage và Big
query:
Data loader: Extract d liu.
Transformer: Biến đi d liu.
6
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
Data exporter: Load d liu vào data lake và data warehouse.
2.2.5 Google Cloud Storage (GCS)
Google Cloud Storage (GCS) là một dch v lưu tr đi tưng trên cloud, cung cp kh năng
lưu tr d liu vi dung lưng ln, đ tin cy cao và chi phí hp lý. Trong d án này, GCS
đưc s dng như một kho lưu tr d liu thô (Data Lake) cho d liu thi tiết đưc thu thp
t Climate Data Store. Dữ liu đưc lưu tr dưi dng các file Parquet, một đnh dng ct hiu
qu cho vic truy vn và phân tích d liu ln.
Lợi ích:
Khả năng mở rng: GCS có th lưu tr một lưng d liu khng l và t đng mở
rng theo nhu cu.
Độ tin cy cao: Dữ liu đưc lưu tr một cách an toàn và có kh năng phc hi cao.
ch hp vi các dch v khác ca GCP: GCS tích hp cht ch vi các dch v khác
như BigQuery, Dataproc và Dataflow, giúp d dàng x lý và phân tích d liu.
Chi phí hp lý: GCS cung cp nhiu la chn lưu tr vi mức giá khác nhau, phù hp
vi nhu cu và ngân sách ca d án.
Nhược đim:
Chi phí truy xut d liu: Cần lưu ý đến chi phí truy xut d liu, đc bit là khi truy
xut một lưng ln d liu thưng xuyên.
Hình 2.3: Hình nh Buckets trong GCS
7
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
Hình 2.4: Metadata ca mt Parquet
2.2.6 Google BigQuery
Google BigQuery là một kho d liu phân tích doanh nghip, có kh năng mở rng cao trên
cloud. Trong d án này, BigQuery đưc s dng đ lưu tr và phân tích d liu thi tiết đã đưc
x lý. Dữ liu t GCS đưc ti vào BigQuery, nơi nó có th đưc truy vn bng SQL đ phân
tích và trc quan hóa.
Lợi ích:
Hiu sut truy vn cao: BigQuery đưc thiết kế đ x lý các truy vn trên tp d liu
ln vi tc đ rt nhanh.
Khả năng mở rng: BigQuery có th x lý petabyte d liu và t đng mở rng theo
nhu cu.
Phân tích SQL: BigQuery h tr SQL tiêu chun, giúp d dàng phân tích d liu.
ch hp vi các dch v khác ca GCP: BigQuery tích hp vi các dch v khác như
Data Studio, Looker giúp d dàng chia s kết qu phân tích.
Serverless: Không cn qun lý cơ s h tng, giúp tiết kim thi gian và công sc.
Nhược đim:
Chi phí: BigQuery tính phí da trên dung lưng lưu tr và lưng d liu đưc x lý.
Cần qun lý chi phí một cách hiu qu.
8
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
Hình 2.5: Giao din chính ca BigQuery Studio
Hình 2.6: Mt ví d v query đ m
2.2.7 Spark
Apache Spark là một nn tng x lý d liu phân tán ngun mở, đưc thiết kế đ x lý
khi lưng ln d liu (big data) vi tc đ cao. Spark cung cp một giao din lp trình d s
dng và h tr nhiu ngôn ng lp trình ph biến như Python, Scala, Java và R. Apache Spark
h tr batch processing hiu qu, giúp x lý khi lưng ln d liu tĩnh trong một hoc nhiu
bưc tính toán. Batch processing thưng đưc s dng cho các tác v như x lý ETL (Extract,
9
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
Transform, Load) tng hp d liu, phân tích d liu ln, và to các báo cáo đnh k.
Ưu đim:
Hiu sut cao nh cơ chế in-memory computing giúp tăng tc đ x lý batch processing
so vi các h thng truyn thng.
Dễ dàng mở rng, h tr d liu phân tán.
Tích hp nhiu ngun d liu khác nhau như Cassandra, HBase, SQL...
Dễ dàng tích hp vi h sinh thái d liu ln, chng hn như Apache Kafka, Hive hoc
các công c hc y như Mlib.
Tái s dng d liu trong b nh và h tr chy trên các h thng cloud.
Nhược đim:
Vic x lý trong b nh yêu cu nhiu tài nguyên, đc bit là RAM.
Đối vi các tác v đơn gin, Spark không mang li ích đáng k so vi các công c như
Pandas hoc SQL thông thưng.
Spark thưng có đ tr khi khi to các job, không lý tưng vi các tác v cn kết qu
nhanh.
Trong bài tp ln, nhóm s dng Spark đ x lý d liu theo batch processing. Apache Spark
đưc cài đt trên y o ca Google Cloud Platform (GCP) vi cu hình gm 1 master node và
2 worker node.
Hình 2.7: Máy o trên Google Cloud Platform.
10
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
Hình 2.8: Giao din hin th ca Spark.
Thông tin v các Spark jobs đưc hin th qua localhost:4040 t y tính cá nhân (local).
Hình 2.9: Giao din hin th ca Spark Jobs.
2.2.8 Kafka
Kafka là một nn tng truyn ti d liu theo thi gian thc (real-time data streaming plat-
form). ngun d liu nhóm x dng đưc cp nht ba ngày một ln, vì thế nhóm tiến hành
gi lp lung x lý d liu realtime. Do đó, Kafka đưc s dng đ phng dòng d liu thi
tiết t website Climate Data Store. Dữ liu t ngun gc ban đu đưc ti v theo tng gi, nh
Kafka, d liu đưc chuyn đi thành lung d liu liên tc (streaming) ging như vic nhn
d liu thi gian thc t các trm đo.
Kafka cung cp kh năng lưu tr ngn hn d liu thi tiết trong các topic, đm bo rng d
11
CHƯƠNG 2. KIN TRÚC VÀ THIT KẾ
liu có th đưc truy cp ngay c khi một thành phn trong h thng b li hoc cn khi đng
li.
Vi d án này, nhóm s dng kafka như là một thành phn trung gian gia Ngun d liu
(Climate Data Store) vi Hệ thng lưu tr (Google Cloud Storage - GCS) và Google Bigquery.
Kafka cluster s đưc xây dng s dng Docker trên một y o ca GCP. Cluster gm có 1
zookeeper và 2 brokers. Zookeeper đưc x dng đ qun lý metadata, điu phi các broker và
phân phi vai trò leader cho các phân vùng (partitions), đm bo tính nht quán và kh năng
chu li ca h thng. Hai broker chu trách nhim lưu tr, qun lý và truyn ti d liu, vi mỗi
broker x lý một hoc nhiu phân vùng ca topic. Zookeeper giám sát trng thái ca các broker,
trong khi broker đm bo lưu tr d liu an toàn, phc v yêu cu t producer và consumer, và
h tr nhân bn (replication) đ tăng kh năng chu li và hiu sut.
Cấu hình Zookeeper trong Docker:
Hình 2.10: Zookeeper
Cấu hình ca một Kafka broker trong Docker:
Hình 2.11: Broker
12

Preview text:

ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÀI TẬP LỚN
LƯU TRỮ VÀ XỬ LÝ DỮ LIỆU LỚN
ĐỀ TÀI: PHÂN TÍCH DỮ LIỆU THỜI TIẾT NHÓM 16
Sinh viên thực hiện: Trương Công Đạt 20215346 Hoàng Đình Hùng 20210399 Hoàng Công Phú 20215451 Nguyễn Hoàng Phúc 20215452 Trần Hồ Khánh Ly 20210561
Giảng viên hướng dẫn: TS.Trần Việt Trung
Hà Nội, Ngày 10 tháng 12 năm 2024 MỤC LỤC
CHƯƠNG 1. ĐẶT VẤN ĐỀ ....................................................................................... 1
1.1 Bài toán được lựa chọn............................................................................................ 1
1.2 Tính phù hợp của bài toán với big data...................................................................... 1
1.3 Phạm vi và giới hạn của project................................................................................ 2
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ................................................................. 3
2.1 Kiến trúc tổng thể................................................................................................... 3
2.2 Chi tiết từng component và vai trò............................................................................ 4
2.2.1 Dữ liệu ....................................................................................................... 4
2.2.2 Terraform .................................................................................................... 5
2.2.3 Docker ............................................................................................ ........... 5
2.2.4 Mage .......................................................................................................... 6
2.2.5 Google Cloud Storage (GCS) ........................................................................ 7
2.2.6 Google BigQuery......................................................................................... 8
2.2.7 Spark .......................................................................................................... 9
2.2.8 Kafka.......................................................................................................... 11
2.2.9 Streamlit ........ ............................................................................................ 13
2.3 Data flow và component interaction diagrams ........................................................... 13
2.3.1 Luồng dữ liệu từ web sang GCS và Bigquery.................................................. 13
2.3.2 Streaming dữ liệu với kafka........................................................................... 17
2.3.3 Xử lý dữ liệu với spark.................................................................................. 22
2.3.4 Trực quan hóa dữ liệu và kết quả với streamlit................................................. 27
CHƯƠNG 3. CHI TIẾT TRIỂN KHAI...................................................................... 29
3.1 Source code và documentation................................................................................. 29
3.2 Configuration files theo môi trường.......................................................................... 29
3.3 Deployment strategy ............................................................................................... 30
3.4 Monitoring setup .................................................................................................... 30
CHƯƠNG 4. BÀI HỌC KINH NGHIỆM................................................................... 32
4.1 Kinh nghiệm về Data Ingestion ................................................................................ 32
4.1.1 Xử lý nhiều nguồn dữ liệu đa dạng................................................................. 32
4.1.2 Đảm bảo Data Quality.................................................................................. 32
4.1.3 Xử lý Late Arriving Data .............................................................................. 33
4.2 Kinh nghiệm về Stream Processing .......................................................................... 33
4.2.1 Kinh nghiệm 1:Exactly-once processing......................................................... 33
4.2.2 Kinh nghiệm 2: State management................................................................. 34
4.2.3 Kinh nghiệm 3: Recovery mechanism ............................................................ 34
4.3 Kinh nghiệm về Batch Processing ............................................................................ 35
4.3.1 Kết nối giao diện Spark Web UI từ web browser ............................................. 35
4.3.2 Vấn đề chia partition khi submit spark job...................................................... 35
4.4 Kinh nghiệm về Data Storage................................................................................... 35
4.5 Kinh nghiệm về Performance Optimization............................................................... 36
4.6 Kinh nghiệm về Monitoring & Debugging ..................... .......................................... 37
4.7 Kinh nghiệm về Data Quality & Testing.................................................................... 38
4.7.1 Data validation ............................................................................................ 38
4.7.2 Unit testing.................................................................................................. 38
4.8 Kinh nghiệm về Security & Governance ................................................................... 38 ii
4.9 Kinh nghiệm về Fault Tolerance............................................................................... 39
4.9.1 Kinh nghiệm 1: Failure recovery.................................................................... 39
4.9.2 Kinh nghiệm 2: Data replication.................................................................... 39
4.9.3 Kinh nghiệm 3: Backup strategies ................................................................. 40
4.9.4 Kinh nghiệm 4: Disaster recovery.................................................................. 40
4.10 Các kinh nghiệm khác ........................................................................................... 40
4.10.1 Kinh nghiệm 1: Giả lập streaming với dữ liệu không liên tục.......................... 40
4.10.2 Kinh nghiệm 2: Xóa nhầm máy ảo trên Google Cloud ................................... 41 DANH MỤC HÌNH VẼ
Hình 2.1 Kiến trúc hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Hình 2.2 Dashboard của Mage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Hình 2.3 Hình ảnh Buckets trong GCS . . . . . . . . . . . . . . . . . . . . . . . . . 7
Hình 2.4 Metadata của một Parquet . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Hình 2.5 Giao diện chính của BigQuery Studio . . . . . . . . . . . . . . . . . . . . 9
Hình 2.6 Một ví dụ về query độ ẩm . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Hình 2.7 Máy ảo trên Google Cloud Platform. . . . . . . . . . . . . . . . . . . . . 10
Hình 2.8 Giao diện hiển thị của Spark. . . . . . . . . . . . . . . . . . . . . . . . . . 11
Hình 2.9 Giao diện hiển thị của Spark Jobs. . . . . . . . . . . . . . . . . . . . . . . 11
Hình 2.10 Zookeeper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Hình 2.11 Broker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Hình 2.12 Pipeline của dữ liệu lượng mưa trong Mage . . . . . . . . . . . . . . . . . 14
Hình 2.13 Pipeline về các trường weather trong dữ liệu . . . . . . . . . . . . . . . . 14
Hình 2.14 Lập lịch chạy pipeline của lượng mưa theo ngày . . . . . . . . . . . . . . 15
Hình 2.15 Lập lịch chạy pipeline của weather theo ngày . . . . . . . . . . . . . . . . 15
Hình 2.16 Hình ảnh về Cloud Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Hình 2.17 Kết quả dữ liệu về thời tiết sau khi đưa lên data lake. . . . . . . . . . . . . 16
Hình 2.18 Kết quả dữ liệu về lượng mưa sau khi đưa lên data lake. . . . . . . . . . . 16
Hình 2.19 Streaming Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Hình 2.20 Quá trình đọc dữ liệu của 2 producer. . . . . . . . . . . . . . . . . . . . . 20
Hình 2.21 Messages từ Kafka Cluster. . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Hình 2.22 Dữ liệu được lưu trữ vào GCS. . . . . . . . . . . . . . . . . . . . . . . . . 21
Hình 2.23 Dữ liệu được lưu trữ vào Google Bigquery. . . . . . . . . . . . . . . . . . 21
Hình 2.24 Dữ liệu được lưu trữ vào Google Bigquery. . . . . . . . . . . . . . . . . . 22
Hình 2.25 Khi spark job thực hiện gộp dữ liệu với 2 node workers được thực thi xong. 23
Hình 2.26 Khi spark job thực hiện gộp dữ liệu với 2 node workers thì 1 worker bị kill. 23
Hình 2.27 Khi spark job thực hiện gộp dữ liệu với 1 worker còn lại. . . . . . . . . . 24
Hình 2.28 Khi spark job thực hiện biến đổi tính toán với 2 node workers được thực
thi xong. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Hình 2.29 Các trường dữ liệu về thời tiết được tính toán. . . . . . . . . . . . . . . . 25
Hình 2.30 Thông tin dữ liệu sau khi thực hiện tính toán. . . . . . . . . . . . . . . . . 25 v
Hình 2.31 Tính toán dữ liệu bão với 2 worker . . . . . . . . . . . . . . . . . . . . . . 26
Hình 2.32 Tính toán dữ liệu bão với 1 worker . . . . . . . . . . . . . . . . . . . . . . 26
Hình 2.33 Các trường dữ liệu về bão được tính toán. . . . . . . . . . . . . . . . . . . 27
Hình 2.34 Thông tin dữ liệu bão sau khi thực hiện tính toán. . . . . . . . . . . . . . 27
Hình 2.35 Giao diện chung streamlit. . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Hình 2.36 Giao diện detect bão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Hình 3.1 Quick CPU/Mem/Disk in Monitoring . . . . . . . . . . . . . . . . . . . . 30
Hình 3.2 CPU/Mem/Net/Disk detail in Monitoring . . . . . . . . . . . . . . . . . . 31
Hình 3.3 Monitoring sum query in bigquery and request count in GCS Bucket . . 31 vi DANH MỤC BẢNG
Bảng 2.1 Danh sách các thông số đo lường và mô tả chi tiết . . . . . . . . . . . . . 5
Bảng 2.2 Cấu trúc dữ liệu thu thập từ API thời tiết. . . . . . . . . . . . . . . . . . . 18
Bảng 4.1 So sánh hiệu năng giữa các giải pháp phân cụm . . . . . . . . . . . . . . 37 vii
CHƯƠNG 1. ĐẶT VẤN ĐỀ
1.1 Bài toán được lựa chọn
Trong bối cảnh biến đổi khí hậu toàn cầu đang diễn ra ngày càng phức tạp, việc nghiên cứu
và phân tích dữ liệu khí hậu đã trở thành một yếu tố quan trọng để hỗ trợ các quyết định liên
quan đến quản lý tài nguyên, hoạch định chính sách và ứng phó với các thách thức môi trường.
Dữ liệu khí hậu không chỉ cung cấp thông tin về các hiện tượng tự nhiên mà còn là cơ sở để dự
báo và xây dựng các kịch bản về biến đổi khí hậu trong tương lai.
Một trong những nguồn dữ liệu khí hậu đáng tin cậy và phổ biến nhất hiện nay là Cli-
mate Data Store (CDS), được phát triển bởi Trung tâm Dự báo Thời tiết Trung hạn Châu Âu
(ECMWF) trong khuôn khổ chương trình Copernicus. CDS cung cấp một kho dữ liệu phong
phú, bao gồm thông tin về nhiệt độ, lượng mưa, gió, độ ẩm và nhiều yếu tố khí hậu khác, với
phạm vi không gian và thời gian đa dạng. Điều này giúp các nhà nghiên cứu, tổ chức và cá nhân
có thể tiếp cận, khai thác và xử lý dữ liệu khí hậu một cách hiệu quả để phục vụ cho nhiều mục đích khác nhau.
Trong bài tập lớn này, nhóm tập trung vào việc tìm hiểu nguồn dữ liệu từ Climate Data Store.
Mục tiêu của project này là xây dựng một data pipeline tự động thu thập, biến đổi và biểu diễn
lượng dữ liệu trên nhằm phục vụ cho các bài toán phân tích sau này. Mage được sử dụng để
xây dựng pipeline download data từ web về và upload lên Google Cloud Storage (GCS) và
Google BigQuery. Trong BigQuery, dữ liệu được làm sạch, biến đổi sử dụng Spark nhằm tạo
ra bộ dữ liệu cuối cùng cho mục đích trực quan hóa. Về trực quan hóa dữ liệu, nhóm sử dụng
streamlit với những ưu điểm về biểu diễn nội suy. Ngoài ra nhóm cũng giả lập dữ liệu dưới dạng
streaming và sử dụng kafka để xử lý. Hệ thống cũng được tích hợp với Google Monitoring và
Google Logging để có thể theo dõi tổng thể, cảnh báo khi xảy ra các bất thường và dễ dàng xử lý khi gặp lỗi.
1.2 Tính phù hợp của bài toán với big data
Ngoài tính cấp thiết và tính thời sự của dữ liệu về thời tiết, nhóm dựa chọn bộ dữ liệu này vì
đáp ứng đủ tiêu chí 5V của môn học, cụ thể:
Khối lượng dữ liệu lớn (Volume): Dữ liệu khí hậu bao gồm thông tin về nhiều yếu tố như
nhiệt độ, độ ẩm, lượng mưa, gió và các chỉ số khác, được thu thập trên phạm vi toàn cầu
với độ phân giải cao. Bên cạnh đó, dữ liệu này thường được lưu trữ theo chuỗi thời gian
dài (theo giờ, ngày, tháng hoặc năm), dẫn đến khối lượng dữ liệu cực kỳ lớn, đáp ứng đặc 1 CHƯƠNG 1. ĐẶT VẤN ĐỀ
trưng "Volume" của Big Data.
Tốc độ phát sinh dữ liệu (Velocity): Dữ liệu khí hậu liên tục được cập nhật từ các trạm
quan trắc, vệ tinh và các mô hình dự báo. Tính chất liên tục này đòi hỏi một hệ thống xử lý
dữ liệu thời gian thực hoặc gần thời gian thực để đảm bảo khai thác dữ liệu kịp thời, phục
vụ các ứng dụng như dự báo thời tiết hoặc cảnh báo thiên tai.
Tính đa dạng của dữ liệu (Variety): Dữ liệu khí hậu đến từ nhiều nguồn khác nhau và có
nhiều định dạng, bao gồm dữ liệu dạng bảng (các chỉ số đo đạc), dữ liệu raster (bản đồ khí
hậu), và các dữ liệu phi cấu trúc khác. Sự đa dạng này yêu cầu các phương pháp lưu trữ và
xử lý dữ liệu phù hợp để quản lý hiệu quả.
Giá trị khai thác từ dữ liệu (Value): Dữ liệu khí hậu có giá trị lớn trong việc hỗ trợ ra
quyết định ở nhiều lĩnh vực, từ hoạch định chính sách, quản lý tài nguyên đến dự báo thời
tiết và ứng phó với biến đổi khí hậu. Bài toán này cho thấy rõ giá trị của việc xử lý Big
Data, không chỉ dừng lại ở lưu trữ mà còn mở rộng đến phân tích và khai thác thông tin quan trọng.
Tính xác thực của dữ liệu (Veracity): Dữ liệu từ CDS được cung cấp bởi các tổ chức uy
tín như ECMWF, đã qua kiểm định và hiệu chỉnh nghiêm ngặt, đảm bảo độ tin cậy cao.
Do đó, bộ dữ liệu này hoàn toàn có thể đáp ứng được yêu cầu cho việc học tập, nghiên cứu
các công nghệ thu thập, lưu trữ và xử lý dữ liệu được giới thiệu trong môn học.
1.3 Phạm vi và giới hạn của project
Trong phạm vi và giới hạn của môn học, nhóm tập trung vào việc xây dựng hệ thống xử lý
dữ liệu khí hậu tự động từ nguồn Climate Data Store (CDS) với các bước chính:
• Thu thập và lưu trữ dữ liệu trên Google Cloud Storage (GCS).
• Xử lý, làm sạch và biến đổi dữ liệu bằng Apache Spark trên nền tảng Google BigQuery.
• Trực quan hóa dữ liệu qua Streamlit, bao gồm hướng gió, nhiệt độ cảm nhận, áp xuất mực
nước biển, áp xuất bề mặt,tổng diện tích mây bao phủ,tổng lượng tinh thể băng trong mây,
tổng lượng nước trong mây, thông tin các cơn bão.
• Thử nghiệm giả lập streaming bằng cách sử dụng Kafka.
• Do giới hạn thời gian và tài nguyên, phạm vi xử lý dữ liệu từ 2022-2024 với dữ liệu thời
tiết ở Việt Nam (vĩ độ từ 8o-24o vĩ bắc, kinh độ từ 102o-112o kinh đông). 2
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
2.1 Kiến trúc tổng thể
Kiến trúc và các công nghệ sử dụng:
Hình 2.1: Kiến trúc hệ thống.
Kiến trúc xử lý dữ liệu được nhóm sử dụng là kiến trúc Lambda kết hợp 2 hướng xử lý:
Batch Processing (Xử lý lô): Xử lý một lượng lớn dữ liệu trong khoảng thời gian từ tháng 1/2022 đến 10/2024.
Stream Processing (Xử lý thời gian thực): Giả lập xử lý thời gian thực vào ngày 01/11/2024.
Các thành phần trong hệ thống:
Thành phần xử lý thời gian thực (Stream Layer): Dữ liệu từ Climate Data Store
được gửi tới Kafka. Dữ liệu thời gian thực từ Kafka được chuyển đến Spark để thực
hiện các phép biến đổi và cập nhật vào BigQuery.
Thành phần xử lý lô (Batch Layer): Mage giúp thu thập dữ liệu lịch sử từ Climate
Data Store và tải lên Google Cloud Storage (GCS) để lưu trữ. Sau khi dữ liệu được tải
lên GCS, Spark thực hiện việc xử lý, làm sạch và biến đổi dữ liệu. Dữ liệu đã qua xử lý được tải vào BigQuery. 3
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
Thành phần tích hợp dữ liệu (Serving Layer): BigQuery đóng vai trò là kho dữ liệu
hợp nhất (Serving Layer), nơi chứa cả dữ liệu thời gian thực và dữ liệu lô đã xử lý.
Streamlit kết nối trực tiếp với BigQuery, giúp hiển thị dữ liệu và tạo giao diện trực quan cho người dùng.
2.2 Chi tiết từng component và vai trò 2.2.1 Dữ liệu
• Dữ liệu thời tiết lấy từ Climate Data Store được tổ chức theo giờ.
• Dữ liệu đưuọc lấy trong khoảng thời gian từ 01/01/2022 – 31/10/2024 và trong phạm vi Việt Nam.
• Kích thước dữ liệu 15GB với gần 80000000 bản ghi.
• Các trường dữ liệu bao gồm: Thông số Mô tả Time Thời gian đo Latitude Vĩ độ Longitude Kinh độ
Thành phần gió theo hướng Đông – Tây tại 10m u-component of wind độ cao 10 mét
Thành phần gió theo hướng Bắc – Nam tại 10m v-component of wind độ cao 10 mét 2m dewpoint temperature
Nhiệt độ điểm sương ở độ cao 2 mét 2m temperature
Nhiệt độ không khí ở độ cao 2 mét Mean sea level pressure
Áp suất trung bình tại mực nước biển Sea surface temperature
Nhiệt độ bề mặt nước biển
Áp suất bề mặt tại điểm đo (trên mặt đất Surface pressure hoặc trên mặt biển) Total cloud cover
Tổng độ che phủ của mây
Tổng lượng nước trong cột khí quyển ở Total column cloud ice water dạng tinh thể băng
Tổng lượng nước trong cột khí quyển ở
Total column cloud liquid water dạng tinh thể lỏng Total precipitation Lượng mưa 4
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ Thông số Mô tả
Bảng 2.1: Danh sách các thông số đo lường và mô tả chi tiết 2.2.2 Terraform
Terraform được sử dụng để quản lý và tự động hóa việc triển khai cơ sở hạ tầng trên Google
Cloud Platform. Nó cho phép định nghĩa các tài nguyên như Google Cloud Storage, Google
BigQuery dưới dạng code (IaC), giúp việc triển khai và quản lý dễ dàng hơn. Ngoài ra, Ter-
raform cũng được dùng để cấu hình và triển khai các dịch vụ khác như Cloud Run cho Mage và
quản lý cơ sở hạ tầng cho Kafka và PySpark. Lợi ích:
Infrastructure as Code (IaC): Cơ sở hạ tầng được quản lý dưới dạng code, giúp dễ
dàng theo dõi, phiên bản hóa và tự động hóa việc triển khai.
Triển khai đơn giản và nhanh chóng: Tự động hóa việc tạo và cấu hình các tài nguyên,
giảm thiểu lỗi do cấu hình thủ công.
Khả năng tái sử dụng: Các module Terraform có thể được tái sử dụng cho các dự án khác. Nhược điểm:
Đòi hỏi kiến thức về HCL: Cần học ngôn ngữ HCL để viết cấu hình Terraform.
Quản lý state file: Cần quản lý state file để theo dõi trạng thái của cơ sở hạ tầng. 2.2.3 Docker
Docker được sử dụng để đóng gói, phân phối và chạy các ứng dụng trong môi trường cô lập
(container). Trong dự án này, Docker được sử dụng để đóng gói ứng dụng Mage và tạo môi
trường chạy nhất quán cho Kafka và Zookeeper. Việc sử dụng Docker giúp đơn giản hóa việc
triển khai và đảm bảo tính nhất quán giữa các môi trường khác nhau (phát triển, kiểm thử, sản xuất). Lợi ích:
Tính nhất quán: Docker đảm bảo ứng dụng chạy giống nhau trên mọi môi trường, từ
máy tính cá nhân của nhà phát triển đến môi trường production trên cloud.
Cô lập: Các ứng dụng chạy trong container được cô lập với nhau và với hệ điều hành
host, tránh xung đột về dependency và tài nguyên. 5
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
Triển khai dễ dàng: Docker image có thể dễ dàng được triển khai lên các nền tảng cloud như Google Cloud Run.
Khả năng mở rộng: Dễ dàng scale ứng dụng bằng cách chạy nhiều container. Nhược điểm:
Độ phức tạp: Việc quản lý nhiều container và orchestration có thể trở nên phức tạp.
Hiệu suất: Chạy ứng dụng trong container có thể ảnh hưởng đến hiệu suất, tuy nhiên
ảnh hưởng này thường không đáng kể. 2.2.4 Mage
Mage là một phần mềm vận hành workflow tương tự như Airflow, cho phép người dùng xây
dựng, giám sát và vận hành data pipelines một cách hiệu quả. Mage có thể biến bất cứ hàm nào
trong Python thành một đơn vị có thể giám sát và vận hành được. Bên cạnh các chức năng như
logging, scheduling, caching, Mage còn cung cấp các hàm, tiện ích có sẵn cho phép xử lý lỗi và
chạy các tác vụ song song. Đây cũng là lí do nhóm lựa chọn sử dụng Mage cho project này.
Hình 2.2: Dashboard của Mage
Trong Mage, các pipeline dữ liệu được cấu thành từ các cell, mỗi cell có một nhiệm vụ riêng
với các hàm template hỗ trợ tương tác với các dịch vụ cloud như Google cloud storage và Big query:
• Data loader: Extract dữ liệu.
• Transformer: Biến đổi dữ liệu. 6
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
• Data exporter: Load dữ liệu vào data lake và data warehouse.
2.2.5 Google Cloud Storage (GCS)
Google Cloud Storage (GCS) là một dịch vụ lưu trữ đối tượng trên cloud, cung cấp khả năng
lưu trữ dữ liệu với dung lượng lớn, độ tin cậy cao và chi phí hợp lý. Trong dự án này, GCS
được sử dụng như một kho lưu trữ dữ liệu thô (Data Lake) cho dữ liệu thời tiết được thu thập
từ Climate Data Store. Dữ liệu được lưu trữ dưới dạng các file Parquet, một định dạng cột hiệu
quả cho việc truy vấn và phân tích dữ liệu lớn. Lợi ích:
Khả năng mở rộng: GCS có thể lưu trữ một lượng dữ liệu khổng lồ và tự động mở rộng theo nhu cầu.
Độ tin cậy cao: Dữ liệu được lưu trữ một cách an toàn và có khả năng phục hồi cao.
Tích hợp với các dịch vụ khác của GCP: GCS tích hợp chặt chẽ với các dịch vụ khác
như BigQuery, Dataproc và Dataflow, giúp dễ dàng xử lý và phân tích dữ liệu.
Chi phí hợp lý: GCS cung cấp nhiều lựa chọn lưu trữ với mức giá khác nhau, phù hợp
với nhu cầu và ngân sách của dự án. Nhược điểm:
Chi phí truy xuất dữ liệu: Cần lưu ý đến chi phí truy xuất dữ liệu, đặc biệt là khi truy
xuất một lượng lớn dữ liệu thường xuyên.
Hình 2.3: Hình ảnh Buckets trong GCS 7
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
Hình 2.4: Metadata của một Parquet 2.2.6 Google BigQuery
Google BigQuery là một kho dữ liệu phân tích doanh nghiệp, có khả năng mở rộng cao trên
cloud. Trong dự án này, BigQuery được sử dụng để lưu trữ và phân tích dữ liệu thời tiết đã được
xử lý. Dữ liệu từ GCS được tải vào BigQuery, nơi nó có thể được truy vấn bằng SQL để phân tích và trực quan hóa. Lợi ích:
Hiệu suất truy vấn cao: BigQuery được thiết kế để xử lý các truy vấn trên tập dữ liệu
lớn với tốc độ rất nhanh.
Khả năng mở rộng: BigQuery có thể xử lý petabyte dữ liệu và tự động mở rộng theo nhu cầu.
Phân tích SQL: BigQuery hỗ trợ SQL tiêu chuẩn, giúp dễ dàng phân tích dữ liệu.
Tích hợp với các dịch vụ khác của GCP: BigQuery tích hợp với các dịch vụ khác như
Data Studio, Looker giúp dễ dàng chia sẻ kết quả phân tích.
Serverless: Không cần quản lý cơ sở hạ tầng, giúp tiết kiệm thời gian và công sức. Nhược điểm:
Chi phí: BigQuery tính phí dựa trên dung lượng lưu trữ và lượng dữ liệu được xử lý.
Cần quản lý chi phí một cách hiệu quả. 8
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
Hình 2.5: Giao diện chính của BigQuery Studio
Hình 2.6: Một ví dụ về query độ ẩm 2.2.7 Spark
Apache Spark là một nền tảng xử lý dữ liệu phân tán mã nguồn mở, được thiết kế để xử lý
khối lượng lớn dữ liệu (big data) với tốc độ cao. Spark cung cấp một giao diện lập trình dễ sử
dụng và hỗ trợ nhiều ngôn ngữ lập trình phổ biến như Python, Scala, Java và R. Apache Spark
hỗ trợ batch processing hiệu quả, giúp xử lý khối lượng lớn dữ liệu tĩnh trong một hoặc nhiều
bước tính toán. Batch processing thường được sử dụng cho các tác vụ như xử lý ETL (Extract, 9
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
Transform, Load) tổng hợp dữ liệu, phân tích dữ liệu lớn, và tạo các báo cáo định kỳ. Ưu điểm:
• Hiệu suất cao nhờ cơ chế in-memory computing giúp tăng tốc độ xử lý batch processing
so với các hệ thống truyền thống.
• Dễ dàng mở rộng, hỗ trợ dữ liệu phân tán.
• Tích hợp nhiều nguồn dữ liệu khác nhau như Cassandra, HBase, SQL...
• Dễ dàng tích hợp với hệ sinh thái dữ liệu lớn, chẳng hạn như Apache Kafka, Hive hoặc
các công cụ học máy như Mlib.
• Tái sử dụng dữ liệu trong bộ nhớ và hỗ trợ chạy trên các hệ thống cloud. Nhược điểm:
• Việc xử lý trong bộ nhớ yêu cầu nhiều tài nguyên, đặc biệt là RAM.
• Đối với các tác vụ đơn giản, Spark không mang lợi ích đáng kể so với các công cụ như
Pandas hoặc SQL thông thường.
• Spark thường có độ trễ khi khởi tạo các job, không lý tưởng với các tác vụ cần kết quả nhanh.
Trong bài tập lớn, nhóm sử dụng Spark để xử lý dữ liệu theo batch processing. Apache Spark
được cài đặt trên máy ảo của Google Cloud Platform (GCP) với cấu hình gồm 1 master node và 2 worker node.
Hình 2.7: Máy ảo trên Google Cloud Platform. 10
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
Hình 2.8: Giao diện hiển thị của Spark.
Thông tin về các Spark jobs được hiển thị qua localhost:4040 từ máy tính cá nhân (local).
Hình 2.9: Giao diện hiển thị của Spark Jobs. 2.2.8 Kafka
Kafka là một nền tảng truyền tải dữ liệu theo thời gian thực (real-time data streaming plat-
form). Vì nguồn dữ liệu nhóm xử dụng được cập nhật ba ngày một lần, vì thế nhóm tiến hành
giả lập luồng xử lý dữ liệu realtime. Do đó, Kafka được sử dụng để mô phỏng dòng dữ liệu thời
tiết từ website Climate Data Store. Dữ liệu từ nguồn gốc ban đầu được tải về theo từng giờ, nhờ
Kafka, dữ liệu được chuyển đổi thành luồng dữ liệu liên tục (streaming) giống như việc nhận
dữ liệu thời gian thực từ các trạm đo.
Kafka cung cấp khả năng lưu trữ ngắn hạn dữ liệu thời tiết trong các topic, đảm bảo rằng dữ 11
CHƯƠNG 2. KIẾN TRÚC VÀ THIẾT KẾ
liệu có thể được truy cập ngay cả khi một thành phần trong hệ thống bị lỗi hoặc cần khởi động lại.
Với dự án này, nhóm sử dụng kafka như là một thành phần trung gian giữa Nguồn dữ liệu
(Climate Data Store) với Hệ thống lưu trữ (Google Cloud Storage - GCS) và Google Bigquery.
Kafka cluster sẽ được xây dựng sử dụng Docker trên một máy ảo của GCP. Cluster gồm có 1
zookeeper và 2 brokers. Zookeeper được xử dụng để quản lý metadata, điều phối các broker và
phân phối vai trò leader cho các phân vùng (partitions), đảm bảo tính nhất quán và khả năng
chịu lỗi của hệ thống. Hai broker chịu trách nhiệm lưu trữ, quản lý và truyền tải dữ liệu, với mỗi
broker xử lý một hoặc nhiều phân vùng của topic. Zookeeper giám sát trạng thái của các broker,
trong khi broker đảm bảo lưu trữ dữ liệu an toàn, phục vụ yêu cầu từ producer và consumer, và
hỗ trợ nhân bản (replication) để tăng khả năng chịu lỗi và hiệu suất.
• Cấu hình Zookeeper trong Docker: Hình 2.10: Zookeeper
• Cấu hình của một Kafka broker trong Docker: Hình 2.11: Broker 12