Ôn Thi Cuối Kỳ Big Data

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 13

Công nghệ phân tích dữ liệu lớn

Câu 1: Lý thuyết (đã ôn)


Câu 1: Dữ liệu lớn là gì cà các công nghệ dữ liệu lớn?
Dữ liệu lớn, hay còn gọi là Big Data, là thuật ngữ dùng để mô tả khối lượng dữ liệu lớn đến mức
không thể xử lý hiệu quả bằng các phương pháp truyền thống. Dữ liệu lớn có ba đặc trưng chính,
thường được gọi là 3V:
1. Volume (Khối lượng dữ liệu): Dữ liệu lớn liên quan đến lượng dữ liệu rất lớn được tạo ra mỗi
ngày từ nhiều nguồn khác nhau, bao gồm các trang web, ứng dụng di động, máy chủ, cảm biến
và nhiều hơn nữa.
2. Velocity (Tốc độ xử lý): Dữ liệu được tạo ra với tốc độ nhanh chóng, và cần được thu thập, lưu
trữ và phân tích trong thời gian thực hoặc gần như thời gian thực.
3. Variety (Đa dạng): Dữ liệu lớn bao gồm nhiều loại dữ liệu khác nhau, từ dữ liệu có cấu trúc
(như cơ sở dữ liệu SQL) đến dữ liệu không cấu trúc (như email, video, hình ảnh, văn bản tự do,
bản ghi log).
Câu 2 : Phân Loại cấu trúc dữ liệu big data?
Phân loại theo 3 loại cấu trúc
Dữ liệu có cấu trúc: Đây là dữ liệu được tổ chức theo một mô hình dữ liệu đã được xác định
trước và dễ dàng phân tích. Dữ liệu này được lưu trữ trong các hệ thống cơ sở dữ liệu truyền
thống.
Dữ liệu bán cấu trúc: Loại dữ liệu này không nằm trong cơ sở dữ liệu quan hệ nhưng có một số
đặc tính tổ chức giúp việc phân tích dễ dàng hơn. Ví dụ bao gồm các tệp XML và JSON.
Dữ liệu không cấu trúc: Dữ liệu này không có hình thức hoặc cấu trúc cụ thể, làm cho việc quản
lý và phân tích trở nên phức tạp hơn. Ví dụ bao gồm văn bản, hình ảnh và video.
Câu 3 : Quy trình triển khai dữ liệu lớn?
Quy trình khai thác dữ liệu lớn thường bao gồm 8 bước sau :
1. Xác định Mục tiêu: Xác định mục tiêu cụ thể mà bạn muốn đạt được từ việc khai thác dữ
liệu lớn.
2. Thu thập Dữ liệu: Thu thập dữ liệu từ nhiều nguồn khác nhau như cơ sở dữ liệu, hệ thống
log, thiết bị IoT, v.v.
3. Tiền xử lý Dữ liệu: Làm sạch và chuẩn hóa dữ liệu để loại bỏ nhiễu và giảm thiểu sai số.
4. Chuyển đổi Dữ liệu: Chuyển đổi dữ liệu thành định dạng phù hợp để phân tích.
5. Phân tích Dữ liệu: Sử dụng các công cụ và kỹ thuật phân tích để khám phá thông tin hữu
ích từ dữ liệu.
6. Hiển thị Kết quả: Trình bày kết quả phân tích dữ liệu một cách trực quan để người dùng
dễ dàng hiểu.
7. Đưa ra Quyết định: Dựa trên kết quả phân tích, đưa ra quyết định hoặc hành động cụ thể.
8. Lặp lại Quy trình: Quy trình triển khai dữ liệu lớn là một quy trình lặp đi lặp lại, cần được
cải tiến và tinh chỉnh liên tục để đạt được kết quả tốt nhất.
Câu 4 : Trình bày Hệ thống phân tán và cho ví dụ minh họa?
- Hệ thống phân tán là gì?
Hệ thống phân tán là một tập hợp các máy tính độc lập, không phụ thuộc lẫn nhau, kết
nối với nhau bằng hạ tầng truyền thông, có khả năng phối hợp và chia sẻ tài nguyên để
hoàn thành một nhiệm vụ chung. Mỗi máy tính trong hệ thống được gọi là một nút (node)
và có thể chạy các chương trình riêng biệt.
- Đặc điểm chính của hệ thống phân tán
1. Tính phân tán: Các thành phần của hệ thống được phân chia trên nhiều máy tính
khác nhau, không có máy tính nào là trung tâm.
2. Tính minh bạch: Hệ thống phân tán hoạt động như một hệ thống thống nhất đối
với người dùng, che giấu đi sự phân chia nội bộ.
3. Tính mở rộng: Hệ thống có thể dễ dàng mở rộng bằng cách thêm các nút mới vào
mạng.
4. Tính chịu lỗi: Hệ thống có thể tiếp tục hoạt động ngay cả khi một số nút bị lỗi.
5. Tính đồng thời: Hệ thống có thể thực hiện nhiều nhiệm vụ cùng lúc trên các nút
khác nhau.
- Ví dụ hệ thống phân tán ( ghi 1-2 cái thôi )
 Mạng internet: Mạng internet là một hệ thống phân tán khổng lồ bao gồm hàng tỷ máy
tính trên toàn thế giới. Mỗi máy tính trên mạng internet là một nút và có thể lưu trữ thông
tin, cung cấp dịch vụ hoặc truy cập thông tin từ các nút khác.
 Điện toán đám mây: Điện toán đám mây là một hệ thống phân tán cung cấp các dịch vụ
máy tính như lưu trữ dữ liệu, tính toán và mạng thông qua internet. Các dịch vụ này được
cung cấp bởi các nhà cung cấp dịch vụ điện toán đám mây như Amazon Web Services
(AWS), Microsoft Azure và Google Cloud Platform.
 Mạng xã hội: Các mạng xã hội như Facebook, Twitter và Instagram là những hệ thống
phân tán cho phép người dùng chia sẻ thông tin và kết nối với nhau. Dữ liệu của người
dùng được lưu trữ trên các máy chủ phân tán trên toàn thế giới.
 Hệ thống chia sẻ tệp ngang hàng: Các hệ thống chia sẻ tệp ngang hàng như BitTorrent
cho phép người dùng chia sẻ tệp với nhau một cách trực tiếp. Mỗi máy tính tham gia vào
hệ thống chia sẻ tệp đóng vai trò là cả máy khách và máy chủ.
Câu 5 : Trình bày hệ thống tính toán song song và cho ví dụ về hệ thống tính toán song song?
- Hệ thống tính toán song song (Parallel Computing System) là gì?
Hệ thống tính toán song song (HTSTS) là một tập hợp các máy tính được kết nối với
nhau để thực hiện các phép tính một cách đồng thời. Mục tiêu của HTSTS là tăng tốc độ xử lý
thông tin bằng cách chia nhỏ các bài toán lớn thành nhiều bài toán nhỏ hơn và thực hiện các bài
toán nhỏ hơn này trên các máy tính khác nhau.
- Hai hệ thống tính toán song song chính
1. Hệ thống chia sẻ bộ nhớ (Shared Memory System): Các máy tính trong hệ thống chia sẻ
bộ nhớ chung, cho phép chúng truy cập và cập nhật dữ liệu một cách nhanh chóng và dễ
dàng. Tuy nhiên, hệ thống chia sẻ bộ nhớ có thể gặp phải vấn đề về hiệu suất khi số lượng
máy tính trong hệ thống tăng lên.
2. Hệ thống truyền thông (Message Passing System): Các máy tính trong hệ thống truyền
thông giao tiếp với nhau thông qua việc truyền tin nhắn. Hệ thống truyền thông có thể mở
rộng tốt hơn hệ thống chia sẻ bộ nhớ, nhưng việc truyền tin nhắn có thể làm giảm hiệu
suất.
- Ví dụ về hệ thống song song ( ghi 1-2 cái thôi )
1. Siêu máy tính: Siêu máy tính là những hệ thống tính toán song song mạnh mẽ
được sử dụng để giải quyết các bài toán khoa học và kỹ thuật phức tạp. Siêu máy
tính thường sử dụng hệ thống chia sẻ bộ nhớ hoặc hệ thống truyền thông.
2. Máy tính đám mây: Máy tính đám mây cung cấp các dịch vụ máy tính như lưu trữ
dữ liệu, tính toán và mạng thông qua internet. Các dịch vụ này được cung cấp bởi
các nhà cung cấp dịch vụ điện toán đám mây như Amazon Web Services (AWS),
Microsoft Azure và Google Cloud Platform. Máy tính đám mây thường sử dụng
hệ thống truyền thông để kết nối các máy tính với nhau.
3. Điện thoại thông minh: Điện thoại thông minh hiện đại có nhiều lõi xử lý, cho
phép chúng thực hiện các phép tính song song. Điều này giúp cải thiện hiệu suất
của các ứng dụng như trò chơi và video.
4. Xe tự lái: Xe tự lái sử dụng các hệ thống tính toán song song để xử lý dữ liệu từ
các cảm biến như camera, radar và lidar. Dữ liệu này được sử dụng để tạo ra bản
đồ môi trường xung quanh xe và điều khiển xe một cách an toàn.
Câu 6 : Trình bài bài toán Mapreduce trong big data?
MapReduce là mô hình được thiết kế từ ý tưởng bởi Google, nó có khả năng lập trình xử lý các
tập dữ liệu lớn theo thuật toán song song và phân tán trên 1 cụm máy tính. MapReduce trở thành
một trong những thành ngữ tổng quát hóa trong phân tích dữ liệu lớn. ( đề kêu thì mới viết )
- Bài toán Mapreduce trong big data
Các bài toán:
 Hệ thống quan trắc nhiệt độ của 1 trạm đo, máy đo sẽ ghi nhận nhiệt độ mỗi 5
giây để tính nhiệt độ trung bình trong 01 ngày. (tính trung bình)
 Hệ thống giám sát lưu lượng xe đi qua 1 trạm kiểm soát, hệ thống sẽ ghi nhận
các loại xe (tải, khách, quân sự, xe gắn máy, ..) qua trạm. (đếm)
 Hệ thống kiểm soát giao dịch tài chính của một ngân hàng, cần phải ghi nhận
tổng số tiền đã thực hiện giao dịch thông qua ngân hàng trong một khoảng thời
gian nào đó. (tổng)
( trong slide của thầy)

1. Đếm số lượng từ trong một tập tài liệu lớn:


- Hàm Map: Chia nhỏ tài liệu thành các câu, đếm số lượng từ trong mỗi câu, tạo
ra các cặp key-value (từ, số lượng xuất hiện).
- Sắp xếp và phân nhóm: Sắp xếp các cặp key-value theo key (từ), phân nhóm
dựa trên key.
- Hàm Reduce: Cộng tổng số lượng xuất hiện của mỗi từ trong cùng một nhóm,
tạo ra kết quả cuối cùng là số lượng xuất hiện của mỗi từ trong toàn bộ tài liệu.
2. Phân tích dữ liệu log:
- Hàm Map: Trích xuất thông tin hữu ích từ các bản ghi log, tạo ra các cặp key-
value (thông tin, giá trị).
- Sắp xếp và phân nhóm: Sắp xếp các cặp key-value theo key (thông tin), phân
nhóm dựa trên key.
- Hàm Reduce: Tính toán các thống kê cho mỗi nhóm (ví dụ: trung bình, tổng,
giá trị tối đa), tạo ra kết quả là các báo cáo phân tích dữ liệu log.
3. Lọc dữ liệu:
- Hàm Map: Kiểm tra từng phần dữ liệu theo tiêu chí lọc, tạo ra các cặp key-
value (thỏa mãn, dữ liệu).
- Hàm Reduce: Ghi lại dữ liệu thỏa mãn tiêu chí lọc, tạo ra kết quả là tập dữ liệu
đã được lọc.
4. Tìm kiếm web:
- Hàm Map: Lập chỉ mục các trang web, tạo ra các cặp key-value (từ khóa,
URL).
- Sắp xếp và phân nhóm: Sắp xếp các cặp key-value theo key (từ khóa), phân
nhóm dựa trên key.
- Hàm Reduce: Lưu trữ danh sách URL cho mỗi từ khóa, tạo ra kết quả là chỉ
mục web.
( Anh gemini chỉ )

- Vẽ sơ dồ Mapreduce
Dữ liệu đầu vào -> Chia nhỏ dữ liệu -> Hàm Map -> Sắp xếp & Phân nhóm -> Hàm Reduce -
> Kết quả
Ảnh minh họa ( nếu đề kêu làm )
- Nguyên tắc hoạt động của Mapreduce
1. Chia nhỏ dữ liệu: Dữ liệu đầu vào được chia thành nhiều phần nhỏ hơn, gọi là các split.
2. Áp dụng hàm Map: Hàm Map được áp dụng cho từng split để tạo ra các cặp key-value.
3. Sắp xếp và phân nhóm: Các cặp key-value được sắp xếp theo key và phân nhóm lại dựa
trên key.
4. Áp dụng hàm Reduce: Hàm Reduce được áp dụng cho từng nhóm key-value để tạo ra kết
quả cuối cùng.
Câu 2: Cho trước collection orders, hãy trình bày (gọi hàm có sẵn của mongodb + vẽ lược đồ)
chi tiết các bước Map-Reduce để tính tổng (Array.sum(…)) số lượng (amount) hàng hóa đã mua
của khách hàng có trạng thái (status) là A
Giải

Cho trước Cơ sở dữ liệu được lưu trữ trong trong Hệ quản trị MongoDB như sau
db.orders.insertMany([
{ _id: 1, cust_id: "Ant O. Knee", ord_date: new Date("2024-05-01"), price: 25, items: [ { sku:
"oranges", qty: 5, price: 2.5 }, { sku: "apples", qty: 5, price: 2.5 } ], status: "A" },
{ _id: 2, cust_id: "Ant O. Knee", ord_date: new Date("2024-05-08"), price: 70, items: [ { sku:
"oranges", qty: 8, price: 2.5 }, { sku: "chocolates", qty: 5, price: 10 } ], status: "B" },
{ _id: 3, cust_id: "Busby Bee", ord_date: new Date("2024-05-08"), price: 50, items: [ { sku:
"oranges", qty: 10, price: 2.5 }, { sku: "pears", qty: 10, price: 2.5 } ], status: "A" },
{ _id: 4, cust_id: "Busby Bee", ord_date: new Date("2024-05-18"), price: 25, items: [ { sku:
"oranges", qty: 10, price: 2.5 } ], status: "A" },
{ _id: 5, cust_id: "Busby Bee", ord_date: new Date("2024-05-19"), price: 50, items: [ { sku:
"chocolates", qty: 5, price: 10 } ], status: "A"},
{ _id: 6, cust_id: "Cam Elot", ord_date: new Date("2024-05-19"), price: 35, items: [ { sku:
"carrots", qty: 10, price: 1.0 }, { sku: "apples", qty: 10, price: 2.5 } ], status: "A" },
{ _id: 7, cust_id: "Cam Elot", ord_date: new Date("2024-05-20"), price: 25, items: [ { sku:
"oranges", qty: 10, price: 2.5 } ], status: "A" },
{ _id: 8, cust_id: "Don Quis", ord_date: new Date("2024-05-20"), price: 75, items: [ { sku:
"chocolates", qty: 5, price: 10 }, { sku: "apples", qty: 10, price: 2.5 } ], status: "A" },
{ _id: 9, cust_id: "Don Quis", ord_date: new Date("2024-05-20"), price: 55, items: [ { sku:
"carrots", qty: 5, price: 1.0 }, { sku: "apples", qty: 10, price: 2.5 }, { sku: "oranges", qty: 10,
price: 2.5 } ], status: "A" },
{ _id: 10, cust_id: "Don Quis", ord_date: new Date("2024-05-23"), price: 25, items: [ { sku:
"oranges", qty: 10, price: 2.5 } ], status: "A" }
])
Câu 3: Sử dụng javascript, sinh viên hãy tự viết hàm map, hàm reduce để tính tổng giá tiền
(price) phải trả của mỗi khách hàng dựa vào cust_id của khách hàng. Sau đó, xuất kết quả
(map_reduce_result)và xếp thứ tự kết quả.
Giải
- Định nghĩa hàm map cho mỗi document đầu vào
var mapFunction = function() {
emit(this.cust_id, this.price);
};

- Định nghĩa hàm reduce với 2 arguments key là cust_id và values là price
var reduceFunction = function(cust_id, price) {
return Array.sum(price);
};

- Hiện thực map reduce cho tất cả documents của orders collection
db.orders.mapReduce(
mapFunction,
reduceFunction,
{ out: "map_reduce_results" }
)

- Xuất kết quả có thứ tự


db.map_reduce_results.find().sort( { _id: 1 } )

- Kết quả đạt được


{ "_id" : "Ant O. Knee", "value" : 95 }
{ "_id" : "Busby Bee", "value" : 125 }
{ "_id" : "Cam Elot", "value" : 60 }
{ "_id" : "Don Quis", "value" : 155 }
Câu 4: Hãy dùng Aggregation Alternative để viết lại Câu 3
Giải
db.orders.aggregate([
{ $group: { _id: "$cust_id", value: { $sum: "$price" } } },
{ $out: "map_reduce_results" }
])

db. map_reduce_results.find().sort( { _id: 1 } )

Câu 5: Từ collection orders, hãy dùng hàm có sẵn của mongodb để tính tổng (Array.sum(…))
số tiền (price) mua hàng của mỗi khách hàng có trạng thái (status) là A và lưu kết quả trong
map_reduce_results collection và xuất kết quả có thứ tự
Giải
> db. orders.mapReduce(
function () {emit (this. cust_id, this. price);},
function (cust_id, price) {return Array.sum(price)}, {
query: {status: "A”},
out:" map_reduce_results "
}
)

- Xuất kết quả có thứ tự


- db. map_reduce_results.find().sort( { _id: 1 } )
{ "_id" : "Ant O. Knee", "value" : 25 }
{ "_id" : "Busby Bee", "value" : 125 }
{ "_id" : "Cam Elot", "value" : 60 }
{ "_id" : "Don Quis", "value" : 155 }

Chúc mừng các em đã hoàn thành môn học


Thực hành tận tay, ôn thi tận tâm nên NHỚ học bài và thi tốt hen!
Code mẫu

You might also like