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

TRƯỜNG ĐẠI HỌC THỦY LỢI

KHOA CÔNG NGHỆ THÔNG TIN

-----🙡🕮🙣-----

ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
Ngành Công nghệ thông tin

Đề tài:
TÌM HIỂU THUẬT TOÁN K-MEANS DỰA TRÊN
MÔ HÌNH MAPREDUCE VÀ ỨNG DỤNG TRONG
PHÂN CỤM ẢNH

Sinh viên thực hiện: VŨ THỊ HƯỜNG


Lớp: 57TH2; Hệ chính quy
Giáo viên hướng dẫn: TS. Nguyễn Tu Trung

Hà Nội, năm 2019


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

LỜI CẢM ƠN
Sau hơn 4 năm học tập và nghiên cứu tại Khoa Công nghệ thông tin - Trường
Đại học Thủy Lợi, em đã được trải nghiệm trong môi trường đào tạo tốt và nhận
được sự chỉ dạy nhiệt tình của các thầy, các cô trong khoa.
Trước hết, em xin được bày tỏ lòng biết ơn và gửi lời cảm ơn chân thành đến
TS. Nguyễn Tu Trung đã dạy cho em có được những kiến thức vững chắc, tận tình
chỉ bảo, nhắc nhở và hướng dẫn em trong suốt quá trình làm đồ án tốt nghiệp.
Em cũng xin chân thành cảm ơn các thầy cô giáo trong khoa Công nghệ
thông tin nói riêng và trường Đại học Thủy Lợi nói chung đã trang bị cho tôi những
kiến thức quý báu làm hành trang trong những năm học vừa qua.
Em cũng xin bày tỏ lòng biết ơn sâu sắc đến: Cha mẹ và những người thân
trong gia đình đã chăm sóc, nuôi dạy, hỗ trợ, động viên và tạo mọi điều kiện thuận
lợi nhất cho em trong suốt thời gian qua và đặc biệt trong thời gian em làm đồ án tốt
nghiệp.
Ngoài ra, em cũng chân thành cảm ơn các bạn, các anh, các chị đã ủng hộ,
giúp đỡ, trao đổi kiến thức, kinh nghiệm và động viên tôi trong thời gian học tập và
nghiên cứu.
Trong quá trình nghiên cứu của mình, mặc dù được sự hướng dẫn rất nhiệt
tình, nghiêm túc của TS. Nguyễn Tu Trung cùng với sự nỗ lực của cá nhân nhưng
cũng không thể tránh được những thiếu sót. Em rất mong nhận được sự cảm thông
và những góp ý từ quý Thầy, Cô và các bạn để đề tài được hoàn thiện hơn.

Em xin chân thành cảm ơn!

Hà Nội, ngày … tháng … năm 2019


Sinh viên thực hiện

Vũ Thị Hường

SVTH: VŨ THỊ HƯỜNG 1 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

MỤC LỤC
LỜI CẢM ƠN.............................................................................................................1

DANH MỤC BẢNG BIỂU........................................................................................5

DANH MỤC HÌNH ẢNH..........................................................................................6

MỞ ĐẦU....................................................................................................................8

CHƯƠNG 1: TỔNG QUAN VỀ BIGDATA VÀ PHÂN CỤM DỮ LIỆU.............11

1.1 Tổng quan về dữ liệu lớn (Big Data)...............................................................11

1.1.1 Tổng quan..................................................................................................11

1.1.2 Tổng quan về phân tích dữ liệu lớn...........................................................14

1.2 Tổng quan về phân cụm dữ liệu......................................................................16

1.2.1 Tổng quan..................................................................................................16

1.2.2 Tổng quan về phân cụm ảnh.....................................................................19

CHƯƠNG 2: MÔ HÌNH MAPREDUCE TRONG PHÂN TÍCH DỮ LIỆU LỚN..22

2.1 Mô hình MapReduce.......................................................................................22

2.1.1 Tổng quan về mô hình MapReduce..........................................................22

2.1.2 Kiến trúc của MapReduce.........................................................................23

2.1.3 Nguyên tắc hoạt động của mô hình MapReduce......................................23

2.2.4 Ưu và nhược điểm của mô hình MapReduce............................................26

2.2.5 Ứng dụng của MapReduce........................................................................27

2.2 Apache Hadoop...............................................................................................27

2.2.1 Tổng quan về Apache Hadoop..................................................................27

2.2.2 Kiến trúc của Apache Hadoop..................................................................29

2.2.3 Các trình nền của Hadoop.........................................................................32

2.1.4 Nguyên tắc hoạt động của Hadoop MapReduce.......................................34

2.1.5 Ứng dụng của hadoop...............................................................................34


SVTH: VŨ THỊ HƯỜNG 2 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

CHƯƠNG 3: PHÂN CỤM DỮ LIỆU VỚI THUẬT TOÁN KMEANS.................35

3.1 Thuật toán KMeans.........................................................................................35

3.1.1 Tổng quan về thuật toán KMeans.............................................................35

3.1.2 Giải thuật của thuật toán KMeans.............................................................37

3.1.3 Ví dụ tính toán bằng tay............................................................................38

3.1.4 Ưu điểm và nhược điểm của KMeans.......................................................41

3.2 Ý tưởng và giải pháp MapReduce hoá thuật toán KMeans.............................42

3.2.1 Đặc trưng của KMeans để MapReduce.....................................................42

3.2.2 Ý tưởng MapReduce hóa KMeans............................................................42

3.4 Thuật toán IPKMeans – cải tiến của PKMeans cho phân cụm ảnh.................44

3.4.1 Chuyển đổi dữ liệu....................................................................................45

3.4.2 Phân cụm ảnh với thuật toán IPKMeans...................................................45

3.4.3 Khôi phục kết quả phân cụm ảnh..............................................................48

CHƯƠNG 4: CƠ SỞ CÔNG NGHỆ........................................................................49

4.1 Hệ điều hành Linux.........................................................................................49

4.2 Công nghệ docker............................................................................................50

4.2.1 Tổng quan về docker.................................................................................50

4.2.2 Docker ứng dụng trong multi-node...........................................................53

4.3 Ngôn ngữ lập trình Java...................................................................................54

4.3.1 Tổng quan về Java.....................................................................................54

4.3.2 Java swing.................................................................................................56

4.4 Môi trường lập trình Intellij IDEA Ultimate...................................................56

CHƯƠNG 5: XÂY DỰNG CHƯƠNG TRÌNH VÀ THỰC NGHIỆM ĐÁNH GIÁ


...................................................................................................................................58

5.1 Yêu cầu hệ thống.............................................................................................58


SVTH: VŨ THỊ HƯỜNG 3 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

5.1.1 Yêu cầu chung...........................................................................................58

5.1.2 Yêu cầu chức năng....................................................................................58

5.2 Xây dựng chương trình....................................................................................58

5.2.1 Môi trường thực nghiệm...........................................................................59

5.2.2 Dữ liệu thực nghiệm..................................................................................59

5.2.3 Cài đặt chương trình..................................................................................59

5.3 Thực nghiệm và đánh giá................................................................................60

5.3.1 Kết quả cài đặt...........................................................................................60

3.3.2 Kết quả thực nghiệm và đánh giá..............................................................61

KẾT LUẬN...............................................................................................................67

TÀI LIỆU THAM KHẢO........................................................................................69

SVTH: VŨ THỊ HƯỜNG 4 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

DANH MỤC BẢNG BIỂU


Bảng 1. Công nghệ phân tích dữ liệu lớn.................................................................15
Bảng 2. Giải thuật thuật toán KMeans......................................................................37
Bảng 3. Mô tả bài toán phân cụm KMeans...............................................................38
Bảng 4. Lần lặp 1 tâm cụm và điểm thuộc tâm cụm.................................................38
Bảng 5. Lặp lần 2 tâm cụm và điểm thuộc tâm cụm.................................................40
Bảng 6. Lặp lần 3 tâm cụm và điểm thuộc tâm cụm.................................................40
Bảng 7. Thuật toán cho hàm map(key,value)...........................................................43
Bảng 8. Thuật toán cho hàm reduce(key,V).............................................................44
Bảng 9. Mã giả thuật toán IPKMeans cho hàm mapImage(key, value)...................46
Bảng 10. Thuật toán IPKMeans cho hàm reduceImage(key, value)........................47
Bảng 11. Ảnh dữ liệu đầu vào..................................................................................62
Bảng 12. Kết quả ảnh sau khi phân cụm kích thước 128x128 và 300x300..............62
Bảng 13. Kết quả ảnh sau khi phân cụm kích thước 500x500 và 700x700..............62
Bảng 14. Kết quả tâm cụm sinh ra sau khi hội tụ 1..................................................64
Bảng 15. Kết quả tâm cụm sinh ra sau khi hội tụ 2..................................................64
Bảng 16. Kết quả thống kê thời gian thực thi 128x128............................................65
Bảng 17. Kết quả thống kê thời gian thực thi 300x300............................................65
Bảng 18. Kết quả thống kê thời gian thực thi 500x500............................................65
Bảng 19. Kết quả thống kê thời gian thực thi 700x700............................................65
Bảng 20. Kết quả đánh giá hiệu suất theo kích thước dữ liệu..................................66
Bảng 21. Biểu đồ đánh giá hiệu suất thực thi...........................................................67

SVTH: VŨ THỊ HƯỜNG 5 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

DANH MỤC HÌNH ẢNH

Hình 1. Tốc độ gia tăng nguồn dữ liệu....................................................................11


Hình 2. Xu hướng doanh thu từ phân tích dữ liệu lớn đem lại................................12
Hình 3. Đặc trưng của dữ liệu lớn............................................................................13
Hình 4. Công cụ quản lý dữ liệu lớn........................................................................14
Hình 5. Minh họa quá trình phân cụm....................................................................16
Hình 6. Quá trình phân cụm dữ liệu........................................................................17
Hình 7. Minh hoạ một số ví dụ phân cụm................................................................18
Hình 8. Ví dụ phân cụm ảnh....................................................................................20
Hình 9. Quy trình cơ bản trong phân cụm ảnh.........................................................20
Hình 10. Logo mô hình MapReduce........................................................................22
Hình 11. Kiến trúc của MapReduce.........................................................................23
Hình 12. Mô hình hoạt động của MapReduce.........................................................24
Hình 13. Một số lĩnh vực áp dụng MapReduce.......................................................27
Hình 14. Logo Apache Hadoop...............................................................................28
Hình 15. Lợi ích hadoop.........................................................................................29
Hình 16. Thành phần của hadoop............................................................................29
Hình 17. Cấu trúc cây phân cấp file của Hadoop....................................................30
Hình 18. Kiến trúc tổng quát của HDFS..................................................................30
Hình 19. Hoạt động đọc trên HDFS.........................................................................31
Hình 20. Hoạt động ghi trên HDFS.........................................................................31
Hình 21. Mô tả hoạt động của JobTracker...............................................................33
Hình 22. Mô hình phân cụm đơn giản.....................................................................35
Hình 23. Minh họa quá trình phân cụm...................................................................36
Hình 24. Lưu đồ thuật toán IPKMeans....................................................................46
Hình 25. Tổng quan hệ điều hành linux...................................................................49
Hình 26. Kiến trúc của hệ điều hành linux..............................................................49
Hình 27. Logo công nghệ docker.............................................................................51
Hình 28. Kiến trúc của docker.................................................................................51
SVTH: VŨ THỊ HƯỜNG 6 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 29. Quy trình thực thi hệ thống trên docker....................................................52


Hình 30. Cài đặt nhiều node bên trong một mạng docker.......................................54
Hình 31. Logo ngôn ngữ lập trình Java...................................................................55
Hình 32. Minh hoạ ứng dụng của Java....................................................................56
Hình 33. Các chức năng của ứng dụng....................................................................58
Hình 34. Giao diện ứng dụng phân cụm..................................................................61

SVTH: VŨ THỊ HƯỜNG 7 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

MỞ ĐẦU
1. Tổng quan về vấn đề nghiên cứu.
Những năm gần đây, sự phát triển mạnh của công nghệ thông tin đã làm cho
khả năng thu thập và lượng thông tin tăng nhanh một cách chóng mặt. Sự ra đời của
các kênh truyền thông mới như mạng xã hội và các thiết bị tiên tiến hơn đã đặt ra
thách thức cho các nền công nghiệp phải tìm những cách để xử lý dữ liệu.
Các phương pháp song song hóa đã được đề cập từ lâu, khi mà J.Von
Neumann giới thiệu mô hình tính toán song song có tên Otomat tế bào. Từ đó đến
nay, lý thuyết về xử lý song song trở thành lĩnh vực nghiên cứu quan trọng và ngày
càng đem lại tính năng vượt trội so với mô hình lập trình tuần tự truyền thống.
Năm 2004, Google giới thiệu thiệu mô hình tính toán MapReduce tính toán
phân tán nhanh trên một tập dữ liệu lớn và dữ liệu được đặt trên nhiều cụm máy
tính. Cho đến nay MapReduce đã có tầm ảnh hưởng lớn nhất [9].
2. Lý do chọn đề tài.
Ngày nay, mọi doanh nghiệp lớn và vừa đều bị bao vây bởi hàng tấn dữ liệu
phi cấu trúc từ nhiều nguồn khác nhau và không ngừng gia tăng từng ngày.Vì vậy,
chúng ta luôn phải đối mặt với việc xử lý một lượng dữ liệu khổng lồ được gọi là
Big Data. Hầu hết dữ liệu lớn được tạo ra là ảnh.
Thị giác máy tính là một lĩnh vực nghiên cứu mới mẻ đầy tiềm năng và rất
được quan tâm. Tầm quan trọng và những khó khăn của việc gom cụm các đối
tượng mang tính tri giác của con người từ lâu đã được nghiên cứu nhiều trong các
lĩnh vực của thị giác máy tính đặc biệt trong lĩnh vực xử lý ảnh.
Phân cụm ảnh được ứng dụng rất mạnh mẽ trong các bài toán phân tích và
hiểu ảnh tự động, một trong những bước quan trọng của việc khai thác các hình ảnh,
nhưng đó cũng là một bài toán khó mà tới bây giờ các nhà khoa học cũng chưa tìm
ra cách giải hoàn toàn thấu đáo. Vậy: Làm thế nào để phân chia một ảnh thành các
tập con? Những cách khả thi để có thể làm được điều đó là gì?
Trong khoảng 30 trở lại đây đã có rất nhiều thuật toán được đề xuất để giải
quyết vấn đề phân cụm ảnh. Các thuật toán này hầu hết đều tiếp cận theo 2 hướng
chủ yếu là: dựa trên pixel và dựa trên trên đồi tượng [10]. Tuy nhiên việc xử lý ảnh
SVTH: VŨ THỊ HƯỜNG 8 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

còn tồn tại nhiều vấn đề như: Độ phức tạp của thời gian tính toán theo cấp số nhân;
khối lượng dữ liệu được xử lý giới hạn, vấn đề về lỗi, … [11]
Xuất phát từ thực tế và để giải quyết vấn đề đặt ra, em đã chọn thuật toán
IPKMeans - phương pháp phân cụm ảnh song song hoá dựa trên mô hình
MapReduce để giải quyết bài toán phân cụm ảnh lớn với đề tài "Tìm hiểu thuật
toán K-Means dựa trên mô hình MapReduce và ứng dụng trong phân cụm
ảnh." thực hiện làm học phần tốt nghiệp của mình.
3. Đối tượng nghiên cứu.
- Nghiên cứu kỹ thuật chuyển đổi điểm ảnh sang không gian màu RGB.
- Nghiên cứu mô hình lập trình MapReduce và Hadoop.
- Nghiên cứu phân cụm ảnh với thuật toán K-Means, PKMeans và IPKMeans.
- Nghiên cứu nền tảng mở docker, docker-compose tạo lập môi trường nhiều
máy ảo xử lý tính toán song song.
4. Phạm vi nghiên cứu.
- Mô hình MapReduce và Apache Hadoop.
- Thuật toán KMeans, PKMeans, IPKMeans.
- Ứng dụng phân cụm ảnh với Kmeans và IPKMeans.
- Xử lý phân cụm ảnh tính toán song song.
- Nền tảng mở docker, docker-compose.
5. Mục tiêu đề tài.
- Tìm hiểu về kỹ thuật xử lý ảnh, bài toán phân cụm ảnh xám, ảnh màu.
- Hiểu về cơ chế hoạt động của Hadoop bao gồm HDFS (Hadoop Distributed
File System) và MapReduce.
- Hiểu về thuật toán KMeans và IPKMeans.
- Xây dựng ứng dụng demo phân cụm ảnh với thuật toán KMeans và
IPKMeans.
- Chạy thử nghiệm ứng dụng song song nhiều node sử dụng docker.
- Thử nghiệm, phân tích đánh giá giải pháp KMeans và IPKMeans.

SVTH: VŨ THỊ HƯỜNG 9 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

6. Cấu trúc của đồ án tốt nghiệp.


Cấu trúc đồ án tốt nghiệp
Nội dung của đồ án tốt nghiệp được trình bày trong ba phần chính như sau:
1. Phần mở đầu
2. Phần nội dung: bao gồm năm chương:
Chng 1: Tng quan v BigData và phân cụm dữ liệu.
Chương này, trình bày tổng quan về dữ liệu lớn, phân tích dữ liệu lớn, phân
cụm dữ liệu, phân cụm ảnh, phân tích quy trình phân cụm ảnh, đưa ra vấn đề bài
toán phân cụm, quy trình hoạt động và một số ứng dụng của phân cụm.
Chng 2: Mô hình MapReduc e trong phân tích dữ liệu lớn.
Chương này, trình bày về mô hình MapReduce, kiến trúc, nguyên tắc hoạt
động, ưu nhược điểm và ứng dụng của MapReduce; tổng quan về apache hadoop.
Chng 3: Phân cụm dữ liệu với thuật toán KMeans.
Chương này, trình bày về tổng quan, các bước xử lý, tính toán của thuật toán
KMeans. Trình bày thuật toán cải tiến của KMeans là PKMeans và IPKMeans, phân
tích từng giải thuật hàm map, hàm reduce, lưu đồ biểu diễn thuật toán IPKMeans và
áp dụng phân cụm ảnh.
Chng 4: C s công ngh.
Chương này, trình các công nghệ cần thiết xây dựng ứng dụng xử lý phân
cụm ảnh dữ liệu lớn song song. Đưa ra lý do dùng công nghệ đó vào vai trò nào của
ứng dụng và giải thích rõ ưu và nhược điểm.
Chng 5: Phân tích ứng dụng và thực nghiệm đánh giá.
Chương này, trình bày các phân tích, các tính năng của ứng dụng; mô tả dữ
liệu thực nghiệm, đưa ra kết quả và phân tích đánh giá kết quả thực nghiệm.
Phần 3: Phần kết luận.

SVTH: VŨ THỊ HƯỜNG 10 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

CHƯƠNG 1: TỔNG QUAN VỀ BIGDATA VÀ PHÂN CỤM DỮ LIỆU

1.1 Tổng quan về dữ liệu lớn (Big Data).


1.1.1 Tổng quan.
Định nghĩa:
Theo wikipedia: Dữ liệu lớn(Big data) là một thuật ngữ chỉ bộ dữ liệu lớn
hoặc phức tạp mà các phương pháp truyền thống không đủ các ứng dụng để xử lý
dữ liệu này.
Theo Gartner : Dữ liệu lớn là những nguồn thông tin có đặc điểm chung khối
lượng lớn, tốc độ nhanh và dữ liệu định dạng dưới nhiều hình thức khác nhau, do đó
muốn khai thác được phải đòi hỏi phải có hình thức mới để đưa ra quyết định khám
phá và tối ưu hóa quy trình.
Nguồn dữ liệu lớn: Dữ liệu đến từ rất nhiều nguồn khác nhau:

Hình 1. Tốc độ gia tăng nguồn dữ liệu.

- Dữ liệu lớn được hình thành chủ yếu từ 9 nguồn: [3]


(1) Dữ liệu hành chính (phát sinh từ chương trình của một tổ chức, có thể là chính
phủ hay phi chính phủ). Ví dụ: hồ sơ y tế điện tử ở bệnh viện, hồ sơ bảo hiểm, ...
(2) Dữ liệu từ hoạt động thương mại (phát sinh từ các giao dịch giữa các thực thể).
Ví dụ: các giao dịch thẻ tín dụng, giao dịch trên mạng, …

SVTH: VŨ THỊ HƯỜNG 11 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

(3) Dữ liệu từ các thiết bị cảm biến như thiết bị chụp hình ảnh vệ tinh, cảm biến
đường, cảm biến khí hậu.
(4) Dữ liệu từ các thiết bị theo dõi. Ví dụ theo dõi dữ liệu từ điện thoại di động.
(5) Dữ liệu từ các hành vi. Ví dụ như tìm kiếm trực tuyến (tìm kiếm sản phẩm, dịch
vụ hay thông tin khác), đọc các trang mạng trực tuyến, ...
(6) Dữ liệu từ các thông tin về ý kiến, quan điểm của các cá nhân, tổ chức, trên các
phương tiện thông tin xã hội.
(7) Dữ liệu điện lực bao gồm các thông tin cụ thể từ các điểm giao nhau của các nút
thông tin sử dụng.
(8) Dữ liệu các thiết bị tìm kiếm, công cụ tìm kiếm có cơ sở dữ liệu cực kỳ rộng lớn,
nơi họ có thể tìm thấy dữ liệu họ cần.
(9) Dữ liệu từ các kênh truyền thông xã hội, được tạo ra và phát triển bởi các trang
truyền thông xã hội như Facebook, Instagram,…
- Dự báo quy mô thị trường dữ liệu lớn: Dựa trên doanh thu, từ năm 2011 đến
năm 2027 (tính bằng tỷ USD).

Hình 2. Xu hướng doanh thu từ phân tích dữ liệu lớn đem lại.

Thị trường dữ liệu lớn toàn cầu được dự báo sẽ tăng lên 103 tỷ USD vào năm
2027, gấp đôi quy mô thị trường dự kiến vào năm 2018. .

Đặc trưng cơ bản của dữ liệu lớn [3].

SVTH: VŨ THỊ HƯỜNG 12 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 3. Đặc trưng của dữ liệu lớn.

(1) Khối lượng lớn (Volume):


- Khối lượng dữ liệu rất lớn là đặc điểm tiêu biểu nhất của dữ liệu lớn và dữ liệu
đang ngày càng tăng lên.
- Kích cỡ tính đến 2014 thì có thể trong khoảng vài trăm terabyte (1 petabyte =
1024 terabyte) chỉ cho 1 tập hơn dữ liệu.
- Sử dụng công nghệ “đám mây” mới có khả năng lưu trữ được dữ liệu lớn.
(2) Tốc độ (Velocity):
- Khối lượng dữ liệu gia tăng rất nhanh (mỗi giây có tới 72,9 triệu các yêu cầu truy
cập tìm kiếm trên web bán hàng của Amazon).
- Xử lý dữ liệu nhanh ở mức thời gian thực (real-time), có nghĩa dữ liệu được xử lý
ngay tức thời sau khi chúng được phát sinh.
(3) Đa dạng (Variety):
- Dữ liệu truyền thống chúng ta hay nói đến dữ liệu có cấu trúc.
- Ngày nay hơn 80% dữ liệu được sinh ra là phi cấu trúc( tài liệu, blog, hình ảnh,...)
- Big data cho phép liên kết và phân tích nhiều dạng dữ liệu khác nhau.
(4) Độ tin cậy/chính xác (Veracity):
- Một trong những tính chất phúc tạp nhất của BigData là độ tin cậy/chính xác của
dữ liệu.

SVTH: VŨ THỊ HƯỜNG 13 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

- Xu hướng phương tiện truyền thông xã hội và mạng xã hội ngày nay và sự gia
tăng mạng mẽ tính tương tác và chia sẻ của người dùng mobile làm cho bức trang
xác định về độ tin cậy và chính xác của dữ liệu ngày một khó khăn hơn.
- Bài toán phân tích và loại bỏ dữ liệu thiếu chính xác và nhiễu đang là tính chất
quan trọng của bigdata.
(5) Giá trị(Value):
- Là đặc điểm quan trọng nhất của dữ liệu lớn. Trước khi làm phân tích dữ liệu lớn
thì việc đầu tiên là lảm rõ, xác định rõ được giá trị của thông tin mang lại ra sao.
- Kết quả dự báo chính xác thể hiện rõ nét nhất về giá trị của dữ liệu lớn mang lại.
1.1.2 Tổng quan về phân tích dữ liệu lớn.
✯Nhiệm vụ khoa học công nghệ dữ liệu lớn:
- Quản trị dữ liệu (Data management): Lưu trữ, bảo trì và truy nhập các nguồn dữ
liệu lớn.
- Mô hình hoá và phân tích dữ liệu (Big Modeling and analytics): Tìm cách hiểu
được dữ liệu và tìm ra các thông tin hoặc tri thức quý báu từ dữ liệu.
- Trao đổi, hiển thị dữ liệu và kết quả phân tích dữ liệu (Visualization Decisions and
Values) để tạo ra sản phẩm giá trị.
✯ Quản lý dữ liệu lớn:

Hình 4. Công cụ quản lý dữ liệu lớn.

SVTH: VŨ THỊ HƯỜNG 14 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Ứng dụng của dữ liệu lớn:

- Được ứng dụng trong nhiều lĩnh vực như:

+ Hoạt động chính trị.

+ Giao thông.

+ Y tế. …

Yêu cầu khi phân tích dữ liệu lớn.


- Khả năng mở rộng: Hệ thống có khả năng đối phó với sự tăng trưởng của dữ liệu,
tính toán và độ phức tạp.
- Hiệu suất vào ra dữ liệu: Tốc độ truyền dữ liệu giữa hệ thống và thiết bị ngoại vi.
- Khả năng chấp nhận lỗi: Khả năng tiếp tục hoạt động đúng trong trường hợp thất
bại của một hay nhiều thành phần.
- Xử lý thời gian thực: Khả năng xử lý dữ liệu và đưa ra kết quả chính xác trong
những ràng buộc thời gian nhất định.
- Hỗ trợ kích thước dữ liệu: Kích thước của dữ liệu mà hệ thống có thể xử lý tốt.
- Hỗ trợ tác vụ lặp: Hệ thống hỗ trợ hiệu quả tác vụ lặp.
✯Công nghệ chính trong phân tích dữ liệu lớn: Tính toán phân tán, tính toán
song song, song song hóa bằng CPU đa nhân, xử lý phân tán với hệ thống cluster,
xử lý phân tán trên cloud.
Công cụ hỗ trợ phân tích dữ liệu lớn.
Big Data là một tập hợp dữ liệu mà không thể phân tích/khai thác theo các
phương pháp truyền thống. Do đó việc kiểm thử trên các tập dữ liệu lớn cũng cần sử
dụng nhiều công cụ, kỹ thuật và nền tảng đặc thù khác nhau.

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

Big Data Big Data Tools

NoSQL Databases MongoDB, Cassandra, Redis, ZooKeeper, Hbase

MapReduce Hadoop, Hive, Pig, Cascading, Kafka, S4, MapR, Flume

SVTH: VŨ THỊ HƯỜNG 15 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Storage S3, HDFS ( Hadoop Distributed File System)

Servers Elastic, Heroku, Elastic, Google App Engine, EC2

Processing R, Yahoo! Pipes, Mechanical Turk, BigSheets, Datamee


Lợi ích của khai thác dữ liệu lớn:
- Tiết kiệm chi phí.
- Tiết kiệm thời gian và giúp tối ưu hoá sản phẩm.
- Hỗ trợ con người đưa ra những quyết định đúng và hợp lý hơn.
1.2 Tổng quan về phân cụm dữ liệu.
1.2.1 Tổng quan.
• Khái niệm: Ở một mức cơ bản nhất, người ta đã đưa ra định nghĩa phân cụm dữ
liệu (PCDL) như sau: [3]
"Phân cụm dữ liệu là một kỹ thuật trong khai phá dữ liệu (Data mining),
nhằm tìm kiếm, phát hiện các cụm, các mẫu dữ liệu tự nhiên tiềm ẩn, quan tâm
trong tập dữ liệu lớn, từ đó cung cấp thông tin, tri thức hữu ích cho ra quyết định.”
• Mục đích: Quá trình PCDL là quá trình phân chia một tập dữ liệu ban đầu thành
các cụm dữ liệu sao các phần tử trong cùng một cụm thì “tương tự” nhau và các
phần tử khác cụm nhau thì “phi tương tự nhau”.

Hình 5. Minh họa quá trình phân cụm.

• Giải quyết vấn đề: Một số bài toán học máy không giám sát như tìm kiếm, phát
hiện các cụm, các mẫu dữ liệu trong một tập hợp dữ liệu ban đầu, các dữ liệu không

SVTH: VŨ THỊ HƯỜNG 16 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

có nhãn.
• Quá trình phân cụm dữ liệu:

Hình 6. Quá trình phân cụm dữ liệu.

(1) Lựa chọn đặc trưng: Các đặc trưng được chọn một cách hợp lý để có thể "mã
hóa" nhiều nhất thông tin liên quan đến công việc quan tâm.
=> Mục tiêu chính là: Giảm thiểu độ dư thừa thông tin giữa các đặc trưng.
+ Chọn độ đo tương tự: Đưa ra mức độ tương tự hay không tương tự giữa hai
vector đặc trưng góp phần như nhau trong việc tính toán.
+ Tiêu chuẩn phân cụm: Có thể diễn đạt bởi kinh nghiệm của chuyên gia,
cũng có thể được diễn đạt bởi hàm chi phí hay loại quy tắc khác.
(2) Thuật toán phân cụm: Lựa chọn 1 thuật toán phân cụm riêng biệt nhằm làm
sáng tỏ cấu trúc cụm của tập dữ liệu.
(3) Đánh giá cụm: Khi đã có kết quả phân cụm thì tiến hành kiểm tra tính đúng đắn
của nó. Bằng việc dùng các kiểm định phù hợp.
(4) Giải thích kết quả: Trong nhiều trường hợp, phải kết hợp giữa kết quả phân loại
với bằng chứng thực nghiệm và phân tích để đưa ra các kết luận đúng đắn.
• Thế nào là phân cụm tốt?

SVTH: VŨ THỊ HƯỜNG 17 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

- Một phương pháp phân cụm tốt sẽ sinh ra các cụm có chất lượng cao [3], trong đó:
+ Mức độ tương tự giữa các đối tượng trong cùng một cụm là cao.
+ Mức độ tương tự giữa các đối tượng nằm trong các cụm khác nhau là thấp.
- Chất lượng của kết quả phân cụm phụ thuộc vào cả độ đo tương tự được sử dụng
và cách thức thực hiện.
- Chất lượng của phương pháp phân cụm cũng được đánh giá bởi khả năng phát
hiện các mẫu tiềm ẩn.
✯ Một số ví dụ về phân cụm dữ liệu.
Phân cụm được ứng dụng trong nhiều lĩnh vực. Ví dụ như:

Hình 7. Minh hoạ một số ví dụ phân cụm.

(1) Xử lý dữ liệu lớn: Việc khám phá tri thức trong các cơ sở dữ liệu thường phải xử
lý khối lượng dữ liệu rất lớn, nhiều khi ngay cả các thuật toán với độ phức tạp tính
toán là đa thức cũng không dùng được. Do đó, việc phân và xử lý theo các cụm là
một giải pháp hữu hiệu.

SVTH: VŨ THỊ HƯỜNG 18 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

(2) Phân cụm dữ liệu trong hoạt động phân đoạn ảnh: Phân đoạn ảnh là việc phân
tích mức xám hay màu của ảnh thành lát đồng nhất.
(3) Tạo giả thuyết: Phân tích cụm được sử dụng để suy ra một số giả thuyết liên
quan đến dữ liệu.
(4) Thương mại: Tìm kiếm nhóm các khách hàng quan trọng có đặc trưng tương
đồng và những đặc tả họ từ các bản ghi mua bán trong cơ sở dữ liệu khách hàng.
(5) Phân cụm dữ liệu trong hoạt động nghiên cứu thị trường: Sử dụng để phân đoạn
thị trường và xác định mục tiêu thị trường.
1.2.2 Tổng quan về phân cụm ảnh.
Bài toán phân cụm ảnh:
Ngày nay, thời kỷ nguyên của dữ liệu lớn, hầu hết những dữ liệu lớn được
tạo ra là hình ảnh. Phân tích dữ liệu lớn đòi hỏi sức mạnh tốc độ tính toán có thể mở
rộng, khai thác dữ liệu, thống kê tinh vi và kỹ thuật học máy. Vì thế, vấn đề ở đây
quan tâm là phân cụm ảnh lớn - giai đoạn quan trọng đầu tiên trong quá trình xử lý
ảnh với ảnh dữ liệu lớn.
• Khái niệm: Phân cụm ảnh (hay phân đoạn ảnh) là chia ảnh thành các vùng không
trùng lặp. Mỗi vùng gồm một nhóm pixel liên thông và đồng nhất theo một tiêu chí
nào đó như về màu sắc, mức xám ,...
- Sau khi phân cụm mỗi pixel chỉ thuộc về một vùng duy nhất. Để đánh giá chất
lượng của quá trình phân cụm là rất khó. Vì vậy trước khi phân cụm ảnh cần xác
định rõ mục tiêu của quá trình phân cụm là gì?
• Bài toán đặt ra: Giả sử ta có một tập dữ liệu điểm ảnh và ta cần phải nhóm các
dữ liệu có tính chất tương tự nhau vào các cụm khác nhau chưa biết trước.
- Một cách đơn giản để mô phỏng bài toán này là biểu diễn qua hình học.
Các dữ liệu có thể coi là các điểm trong không gian và khoảng cách giữa các điểm
có thể được coi là thông số mức độ giống nhau của chúng. Những điểm càng gần
nhau thì chúng càng giống nhau.
- Bài toán dưới dạng hình thức như sau:
+ D liu: tp d liu X R (nd) gồm n điểm dữ liệu có d chiều.
+ Nhiệm vụ: Phân tập dữ liệu ra làm k cụm các dữ liệu tương tự nhau.
SVTH: VŨ THỊ HƯỜNG 19 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

+ Đặc điểm: - Phân cụm các điểm dữ liệu không cần giám sát.
- Không quan tâm tới thông tin trong không gian ảnh.
- Tồn tại các phương pháp heuristic và hữu hạn.
• Ví dụ:

Hình 8. Ví dụ phân cụm ảnh.

(a) Hình ảnh gốc; (b) Hình ảnh kết quả của phân đoạn.

Quy trình cơ bản trong phân cụm ảnh:

Hình 9. Quy trình cơ bản trong phân cụm ảnh.

(1) Thu nhận ảnh: Ảnh có thể thu nhận được qua các thiết bị chụp ảnh.
(2) Tiền xử lý ảnh: Sau khi thu nhận ảnh có thể bị nhiễu hoặc độ tương phản thấp
nên cần đưa vào bộ tiền xử lý để nâng cao chất lượng ảnh như lọc nhiễu, nâng cao
độ tương phản để làm ảnh rõ nét hơn, ...
(3) Phân cụm: Tách ảnh đầu vào thành các vùng thành phần để biểu diễn, phân tích,
nhận dạng ảnh. Đây là phần phức tạp, khó khăn nhất trong xử lý ảnh và cũng dễ gây

SVTH: VŨ THỊ HƯỜNG 20 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

lỗi, làm mất độ chính xác của ảnh. Kết quả của nhận dạng ảnh phụ thuộc rất nhiều
vào công đoạn này.
(4) Biểu diễn và mô tả ảnh: Đầu ra của ảnh sau phân đoạn chứa các điểm ảnh của
vùng ảnh và mã liên kết với các vùng lân cận. Đưa ra kết quả ảnh.
(5) Nhận dạng và giải thích: Quá trình xác định ảnh thu được bằng cách so sánh với
ảnh gốc ban đầu.
(6) Cơ sở tri thức: Ảnh sau khi được phân tích, sẽ rút ra tri thức cần dùng.
Ứng dụng của phân cụm ảnh.
- Bộ phận cấu thành cơ bản trong nhiều ứng dụng về xử lý ảnh.
- Hình ảnh cấu hình và bộ chuyển đổi dùng để chuyển đổi ra ảnh kỹ thuật số, và
cuối cùng là đầu ra của hệ thống.

SVTH: VŨ THỊ HƯỜNG 21 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

CHƯƠNG 2: MÔ HÌNH MAPREDUCE TRONG PHÂN TÍCH DỮ LIỆU


LỚN
2.1 Mô hình MapReduce.
2.1.1 Tổng quan về mô hình MapReduce.
Tại sao cần MapReduce ?
- Xử lý dữ liệu với quy mô lớn: Muốn sử dụng 1000 CPU, mong muốn một mô
hình quản lý đơn giản.
- Kiến trúc: Quản lý tiến trình song song và phân tán, quản lý sắp xếp truy
xuất lịch trình I/O, theo dõi trạng thái dữ liệu, quản lý số lượng lớn dữ liệu
có quan hệ phụ thuộc nhau, xử lý lỗi, …
- Cách tiếp cận: Chia để trị (chia nhỏ các vấn đề lớn thành các vấn đề nhỏ, xử
lý song song từng việc nhỏ và tổng hợp kết quả).
Định nghĩa:
“MapReduce là mô hình lập trình dùng cho xử lý tính toán song song và
phân tán trên hệ thống phân tán, là công nghệ chính của việc sử dụng điện toán
đám mây để xử lý một lượng lớn dữ liệu” do google đề xuất. Nó bao gồm hai chức
năng cơ bản: "Map" và "Reduce" được xác định bởi người dùng [5].

Hình 10. Logo mô hình MapReduce.

Ý tưởng chính: Trải qua 2 bước.


Bước 1: Phân rã từ nghiệp vụ chính (do người dùng muốn thể hiện) thành các công
việc nhỏ sau đó chia từng công việc con này về các máy tính trong hệ thống thực
hiện xử lý một cách song song.
Bước 2: Thu thập lại các kết quả.

SVTH: VŨ THỊ HƯỜNG 22 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

2.1.2 Kiến trúc của MapReduce.


Kiến trúc MapReduce:

Hình 11. Kiến trúc của MapReduce.

- Client Program: Chương trình MapReduce mà phía người dùng đang sử dụng và
tiến hành chạy một MapReduce Job.
- JobTracker: Tiếp nhận job và đảm nhận vai trò điều phối job này, nó có vai trò
như bộ não của MapReduce. Sau đó, nó chia nhỏ job thành các task, tiếp theo sẽ lên
lịch phân công các task (map task, reduce task) này đến các tasktracker để thực
hiện. Kèm theo vai trò của mình, JobTracker cũng có cấu trúc dữ liệu riêng của
mình để sử dụng cho mục đích lưu trữ, như nó sẽ lưu lại tiến độ tổng thể của từng
job, lưu lại trang thái của các TaskTracker để thuận tiện cho thao tác lên lịch phân
công task, lưu lại địa chỉ lưu trữ của các output của các TaskTracker thực hiện
maptask trả về.
- TaskTracker: Đơn giản nó chỉ tiếp nhận maptask hay reducetask từ JobTracker
để sau đó thực hiện. Và để giữ liên lạc với JobTracker, Mapreduce cung cấp cơ chế
gửi heartbeat từ TaskTracker đến JobTracker cho các nhu cầu như thông báo tiến độ
của task do TaskTracker đó thực hiện, thông báo trạng thái hiện hành của nó [4].
2.1.3 Nguyên tắc hoạt động của mô hình MapReduce.
MapReduce được xây dựng từ mô hình lập trình hàm và lập trình song song.
Tăng tốc độ thực thi xử lý dữ liệu là mục đích quan trọng nhất của MAPREDUCE.
Mô hình:
SVTH: VŨ THỊ HƯỜNG 23 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Theo google's mô hình lập trình MapReduce thực thi như sau [13].

Hình 12. Mô hình hoạt động của MapReduce.

Quy trình này gồm 2 phần:


- Map: Đầu vào là nút chủ (master node) và sau đó chia nhỏ nó ra thành các
đoạn nhỏ hơn. Gọi là các split 0, split 1, split 2 .. đầu ra tạo giá trị trung gian.
- Reduce: Từ các đầu ra trung gian sẽ tổng hợp lại để đưa ra các kết quả cuối
cùng cho master.
Cụ thể:
(1): Thư viện MapReduce mà ứng dụng người dùng (User Program) sử dụng chia
các tập dữ liệu đầu vào (dữ liệu cần xử lý) thành các mảng dữ liệu dung lượng mỗi
phần từ 16 megabytes đến 64 megabytes (MB). Sau đó sao chép ứng dụng thành các
tiến trình song song chạy trên các máy tính phân tán chứa dữ liệu.
(2): Chương trình điều khiển Master sẽ gán mỗi hàm Map và Reduce để xử lý, đọc
dữ liệu, phân tích cặp key/value ở đầu vào và phân tích thành các cặp trung gian
khác được lưu tại vùng nhớ đệm.
(3) - (4): Worker là phần được gán một hàm Map và Reduce để xử lý, đọc dữ liệu,
phân tích cặp key/value ở đầu vào và phân tích thành các cặp trung gian khác được
lưu tại vùng đệm.
Hàm Map:

SVTH: VŨ THỊ HƯỜNG 24 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

(5): Định kỳ, các cặp dữ liệu trung gian sẽ được đẩy đến các worker tương ứng do
master điều khiển để hàm reducer xử lý. Các thuật toán sắp xếp, so sánh phân vùng
dữ liệu sẽ được sử dụng tại giai đoạn này. Các cặp dữ liệu trung gian có cùng key sẽ
được sắp xếp cùng một nhóm.
Hàm Reduce:

(6): Khi tất cả các tác vụ Map và Reduce đã hoàn tất thì sẽ cho ra kết quả cuối cùng
của quy trình MapReduce.
Ví dụ: Cho bài toán đếm từ, công việc là đếm số lần xuất hiện của các từ trong
văn bản. Công việc như vậy thì có thể phân chia thành hai phần như sau:

• Đầu vào : Một dòng của văn bản


• Đầu ra : key : từ, value : 1
Reduce:
• Đầu vào : key : từ, values : tập hợp các giá trị đếm được của mỗi từ
• Đầu ra : key : từ, value : tổng của từng từ khoá xuất hiện.
- Phân tích:
+ Dữ liệu là văn bản, được chia thành nhiều dòng khác nhau.
+ Hàm map chạy song song tạo ra các giá trị trung gian khác nhau từ tập dữ liệu.
+ Hàm reduce cũng chạy song song, mỗi reducer xử lý một tập khóa khác nhau. Tất
cả các giá trị được xử lý một cách độc lập. Và giai đoạn reduce chỉ bắt đầu khi giai
đoạn map kết thúc.
Mã giả:
Map:

SVTH: VŨ THỊ HƯỜNG 25 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

void map (String name, String line):


// name: document name
// document: line contents
for each word w in line:
EmitIntermediate (w, "1");
Reduce:
void reduces (String word, Iterator partialCounts):
// word: a word
// partialCounts: a list of aggregated partial counts
int result = 0;
for each pc in partialCounts:
result += ParseInt (pc);
Emit (AsString (result));
2.2.4 Ưu và nhược điểm của mô hình MapReduce.
Ưu điểm:
- MapReduce được xây dựng từ mô hình lập trình hàm và lập trình song song. Nó
giúp cải thiện tốc độ tính toán trên tập dữ liệu lớn bằng cách tăng tốc độ đọc ghi và
xử lý dữ liệu.
- Mô hình MapReduce có thể áp dụng hiệu quả cho nhiều bán toán. Mô hình này
làm ẩn đi các chi tiết cài đặt và quản lý như:
+ Quản lý tiến trình song song và phân tán.
+ Quản lý, sắp xếp lịch trình truy xuất I/O.
+ Theo dõi trạng thái dữ liệu.
+ Xử lý lỗi. …
- Các ứng dụng viết bằng MapReduce có tính linh hoạt, khả năng mở rộng tốt.
- Dữ liệu được xử lý là locally (Các thao tác được thực hiện ngay trên node chức
năng các block cần xử lý), vì vậy các TaskTracker sẽ không phải đi nạp dữ liệu từ
các máy tính khác. => Gia tăng hiệu suất về mặt thời gian và băng thông.
Nhược điểm:
- Không reduce() nào được bắt đầu cho đến khi map() kết thúc.
SVTH: VŨ THỊ HƯỜNG 26 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

2.2.5 Ứng dụng của MapReduce.


Phát triển ứng dụng với MapReduce: Trên thực tế, để triển khai mô hình ứng
dụng mô hình MapReduce với các ngôn ngữ (C/C++, Java).

Hình 13. Một số lĩnh vực áp dụng MapReduce.

- Amazon: Có thể xử lý được file log phát sinh trong quá trình bán hàng trên mạng,
phục vụ cho việc dự đoán xu hướng mua hàng của khách hàng, …
- Facebook: Có thể xử lý được khối lượng hơn 10 tỷ hình ảnh mà họ đang lưu trữ
để trích xuất thông tin về kích thước hình ảnh, phát hiện các hình ảnh xấu, …
- Một số ứng dụng khác như:
Last.fm: Là một trang web hàng đầu về nghe nhạc sử dụng MapReduce để thống kê
Tại VN: Mwork sử dụng MapReduce để lưu trữ và xử lý Log.
2.2 Apache Hadoop.
2.2.1 Tổng quan về Apache Hadoop.

Khái niệm Apache Hadoop (hay Hadoop):

Theo Apache Hadoop: “Apache Hadoop là một framework dùng để chạy


những ứng dụng trên một cluster lớn được xây dựng trên những phần cứng thông
thường một Hadoop hiện thực mô hình MapReduce, đây là mô hình mà ứng dụng sẽ
được chia nhỏ ra thành nhiều phân đoạn khác nhau, và các phần này sẽ được chạy
song song trên nhiều node khác nhau. Thêm vào đó, Hadoop cung cấp 1 hệ thống
file phân tán (HDFS) cho phép lưu trữ dữ liệu lên trên nhiều node. Cả MapReduce
và HDFS đều được thiết kế sao cho framework sẽ tự động quản lý được các lỗi, các
hư hỏng về phần cứng của các node."

SVTH: VŨ THỊ HƯỜNG 27 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 14. Logo Apache Hadoop.

Sức mạnh của nền tảng Hadoop dựa trên hai thành phần phụ chính: Hệ thống
tệp phân tán Hadoop (HDFS) và khung làm việc MapReduce.
Để lưu trữ dữ liệu, Hadoop dựa trên cả hệ thống tệp HDFS và cơ sở dữ liệu
phi cấu trúc có tên là Apache HBase.
✯ Lợi ích của Hadoop:
+ Là một công nghệ dữ liệu lớn nổi tiếng có một cộng đồng hỗ trợ quan trọng. Nó
được thiết để mở rộng quy mô từ các máy chủ đơn lẻ đến hàng ngàn máy, mỗi máy
cung cấp tính toán và lưu trữ cục bộ, để tránh hiệu năng thấp và sự phức tạp gặp
phải khi xử lý và phân tích dữ liệu lớn bằng các công nghệ truyền thống.
+ Khả năng xử lý nhanh các tập dữ liệu lớn , nhờ các cụm song song và hệ thống
tệp phân tán.
Chẳng hạn, chỉ mất vài giây trên Hadoop để truy vấn terabyte dữ liệu thay vì 20
phút trở lên trên SIEM cổ điển.
+ Khả năng chạy các chương trình trong khi vẫn đảm bảo khả năng chịu lỗi ,
thường gặp trong môi trường phân tán . Để đảm bảo điều đó, nó ngăn ngừa mất dữ
liệu bằng cách sao chép dữ liệu trên máy chủ.
+ Viết bằng Java. Tuy nhiên, nhờ cơ chế streaming, Hadoop cho phép phát triển các
ứng dụng phân tán bằng cả java lẫn một số ngôn ngữ khác như C++, Python
+ Cung cấp một phương tiện lưu trữ dữ liệu phân tán trên nhiều node, hỗ trợ tối ưu
hoá lưu lượng mạng.

SVTH: VŨ THỊ HƯỜNG 28 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 15. Lợi ích hadoop.

2.2.2 Kiến trúc của Apache Hadoop.


Thành phần: Hiện tại, Hadoop gồm 4 module:

Hình 16. Thành phần của hadoop.

- Core: Là kiến trúc trung tâm của hadoop, cung cấp cơ chế quản lý tài nguyên hiệu
quả, linh hoạt và bảo mật thống nhất các công cụ trên toàn hadoop cluster. Đồng
thời cung cấp cho các lập trình viên mọt framework duy nhất để viết các ứng dụng
sử dụng dữ liệu trên hadoop.
- HDFS – Sức mạnh của Hadoop: Là hệ thống file phân tán, cung cấp khả năng
lưu trữ dữ liệu khổng lồ và tính năng tối ưu hoá việc sử dụng băng thông giữa các
node. Có thể được sử dụng để chạy trên một cluster lớn với hàng chục ngàn node.
- Duy trì một cấu trúc cây phân cấp các file thư mục mà các file sẽ đóng vai
trò là các node.
- Mỗi file được chia thành 1 hay nhiều block, mỗi block sẽ có 1 block ID để
nhận diện. Các block cùng 1 file sẽ có cùng kích thước. Mỗi block của file sẽ
được lưu trữ thành ra nhiều bản sao khác nhau vì mục đích an toàn dữ liệu.

SVTH: VŨ THỊ HƯỜNG 29 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 17. Cấu trúc cây phân cấp file của Hadoop.

Kiến trúc tổng quát:

Hình 18. Kiến trúc tổng quát của HDFS.

Hoạt động đọc trên HDFS:

SVTH: VŨ THỊ HƯỜNG 30 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 19. Hoạt động đọc trên HDFS.

Hoạt động ghi trên HDFS:

Hình 20. Hoạt động ghi trên HDFS.

- MapReduce – Sức mạnh của Hadoop: Là một mô hình lập trình cho phép bạn xử
lý dữ liệu khổng lồ được lưu trữ trong Hadoop.
HBase: Một cơ sở dữ liệu phân tán, sử dụng HDFS làm hạ tầng cho việc lưu trữ dữ
SVTH: VŨ THỊ HƯỜNG 31 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

liệu bên dưới và cung cấp khả năng tính toán song song dựa trên MapReduce.
- HBase: một cơ sở dữ liệu phân tán, theo hướng cột (column-oriented). HBase sử
dụng HDFS làm hạ tầng cho việc lưu trữ dữ liệu bên dưới và cung cấp khả năng
tính toán song song dựa trên MapReduce.
- Hive: một data warehouse phân tán. Hive quản lý dữ liệu được lưu trữ trên HDFS
và cung cấp một ngôn ngữ truy vấn dựa trên SQL.
- Chukwa: một hệ thống tập hợp và phân tích dữ liệu. Chukwa chạy các collector
(các chương trình tập hợp dữ liệu), các collector này lưu trữ dữ liệu trên HDFS và
sử dụng MapReduce để phát sinh các báo cáo.
2.2.3 Các trình nền của Hadoop.
Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền - daemon, hoặc
các chương trình thường trú, trên các máy chủ khác nhau trên mạng của bạn. Những
trình nền có vai trò cụ thể, một số chỉ tồn tại trên một máy chủ, một số có thể tồn tại
trên nhiều máy chủ. Các daemon bao gồm: [14]
NameNode: Là một trình nền quan trọng nhất của Hadoop.
+ NameNode là master của HDFS để chỉ đạo các trình nền, duy trì thông tin về
cấu trúc cây phân cấp, các file thư mục và các metadata khác của hệ thống.
+ Quản lý các meta-data của hệ thống HDFS như file system. space, danh sách
các file trên hệ thống và các block id tương ứng của từng file.
+ Quản lý danh sách slave và tình trạng hoạt động của các DataNode.
+ Điều hướng quá trình đọc/ghi dữ liệu từ client lên các DataNode.
DataNode:
+ DataNode là cá lave trong cluster thực hiện các công việc nào đó của hệ
thống file phân tán: Đọc và ghi (I/O) file HDFS,
+ Chứa các block dữ liệu thực sự của các file trên HDFS, từng hệ thống phân
tán lên hệ thống file cục bộ của nó, mỗi block được lưu như 1 hệ thống file
riêng biệt trên hệ thống file cục bộ của DataNode.
+ Đáp ứng các yêu cầu tạo/xoá các block dữ liệu từ NameNode.
+ Client liên lạc trực tiếp với các trình nền DataNode để xử lý các file cục bộ
tương ứng với các block.
SVTH: VŨ THỊ HƯỜNG 32 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Secondary NameNode:
+ Là một trình nền hỗ trợ giám sát trạng thái của các cụm HDFS. Giống như
NameNode, mỗi cụm có một SNN và nó thường trú trên một máy của mình.
+ Nhiệm vụ: Duy trì một bản sao của meta-data trên NameNode và bản sao
này sẽ được dùng để phục hồi lại NameNode nếu NameNode bị hư hỏng.
JobTracker: Master MapReduce.
+ Tiếp nhận các yêu cầu thực thi MapReduce job.
+ Phân chia job thành các task và phân công cho các Task Tracker thực hiện.
+ Quản lý tình trạng thực hiện của Task Tracker.
TaskTracker:
+ Tiếp nhận các task được Job Tracker phân công và thực hiện nó.
Client gọi JobTracker bắt đầu công việc xử lý dữ liệu, JobTracker làm việc và giao
các nhiệm vụ cho mỗi TaskTracker trong cluster.

Hình 21. Mô tả hoạt động của JobTracker.

Trong mỗi cluster, kiến trúc của Hadoop là master-slave (chủ-tớ): NameNode và
JobTracker là Master và DataNode & TaskTracker là slave.
2.1.4 Nguyên tắc hoạt động của Hadoop MapReduce.
- Hadoop chia đầu vào cho mỗi công việc MapReduce vào các mảnh có kích thước
SVTH: VŨ THỊ HƯỜNG 33 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

cố định gọi là các split.


- Hadoop tạo ra một task map cho mỗi split, thời gian xử lý mối split nhỏ hơn so với
thời gian xử lý toàn bộ đầu vào.
=> Vì vậy xử lý các split một cách song song, thì quá trình xử lý sẽ cân bằng tải tốt
hơn. Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền - daemon, hoặc các
chương trình thường trú, trên các máy chủ khác nhau trên mạng của bạn. Những
trình nền có vai trò cụ thể, một số chỉ tồn tại trên một máy chủ, một số có thể tồn tại
trên nhiều máy chủ.
2.1.5 Ứng dụng của hadoop.

Công nghệ này đã được sử dụng rộng rãi bởi một số trang web lớn nhất thế
giới, chẳng hạn như Facebook, eBay, Amazon, Baidu, và Yahoo.

- Facebook: Sử dụng Hadoop để lưu trữ các log nội bộ và kích thước của nguồn dữ
liệu. Các dữ liệu này được dùng làm nguồn cho các báo cáo phân tích và máy học.

SVTH: VŨ THỊ HƯỜNG 34 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

CHƯƠNG 3: PHÂN CỤM DỮ LIỆU VỚI THUẬT TOÁN KMEANS


3.1 Thuật toán KMeans.
3.1.1 Tổng quan về thuật toán KMeans.
+ Thuật toán KMeans là một trong các thuật toán phân cụm điển hình trong học
máy không giám sát. Do MacQueen đề xuất trong lĩnh vực thống kê năm 1967 [1].

Hình 22. Mô hình phân cụm đơn giản.

+ Ý tưởng chính: Tìm cách phân nhóm các đối tượng đã cho vào K cụm ( K là số
các cụm được xác định trước, K nguyên dương), sao cho tổng bình phương khoảng
cách giữa các đối tượng đến tâm cụm là nhỏ nhất.
Mục đích: Sinh ra k cụm dữ liệu {C1, C2, ..., CK} từ một tập dữ liệu ban đầu n
đối tượng trong không gian d chiều, sao cho hàm tiêu chuẩn: Đạt giá trị tối thiểu.

[1]
Trong đó:
Ci: Nhóm thứ i.
mi: Điểm trung tâm (centroid) của nhóm Ci.
d(x, mi): Khoảng cách (khác biệt) giữa điểm x và điểm trung tâm mi.
+ Hàm tiêu chuẩn (E): Hàm đo độ tương tự sử dụng khoảng cách Euclide, không
âm, giảm khi có sự thay đổi 1 trong 2 bước: gán dữ liệu và định lại vị trí tâm.

SVTH: VŨ THỊ HƯỜNG 35 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Minh họa quá trình phân cụm như sau:

Hình 23. Minh họa quá trình phân cụm.

✯ Lưu đồ biểu diễn KMeans.

Hình 24. Lưu đồ thuật toán KMeans.

SVTH: VŨ THỊ HƯỜNG 36 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

3.1.2 Giải thuật của thuật toán KMeans.


Các bước: Về cơ bản giải thuật được thực hiện như sau (gồm 4 bước): [8]

Bảng 2. Giải thuật thuật toán KMeans.

Đầu vào : N điểm. Số cụm k muốn phân cụm.


Đầu ra: Danh sách k nhóm và các điểm thuộc mỗi nhóm.
Bước 1: Khởi tạo:
Chọn ngẫu nhiên K đối tượng trong N là trọng tâm ban đầu.
Bước 2: Tính toán khoảng cách và phân cụm.
Đối với mỗi đối tượng, Xi (1, 2, .. n), tính toán khoảng cách dựa vào khoảng cách
Euclide. Dựa vào khoảng cách đó đưa các điểm vào cụm mà khoảng cách nó tới
tâm cụm là nhỏ nhất.
Xis=(Xi1, Xi2,...Xis) - đối tượng thứ i cần phân phân cụm.
Xjs=( Xj1, Xj2,...Xjs) - phần tử tâm cụm.
Khoảng cách Euclidean từ đối tượng đến tâm cụm được tính toán dựa trên công
thức sau:

[2]
Với s = 1, 2, … m: m là số thuộc tính của vector toạ độ điểm.
Bước 3: Cập nhật lại trọng tâm.
Đối với mỗi cụm i=1,..,k, số thuộc tính m= 1..n, t số phần tử có của nhóm thứ i.
Cập nhật bằng cách xác định trung bình cộng của các vector đối tượng dữ liệu.

[3]
Bước 4: Lặp cho đến khi thoả mãn điều kiện dừng.
Lặp các bước 2 và 3 cho đến khi các trọng tâm của các cụm không thay đổi.

Quá trình phân nhóm kết thúc, nếu:

SVTH: VŨ THỊ HƯỜNG 37 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

+ Không có (hoặc có không đáng kể) việc gán lại các điểm vào các nhóm
khác, hoặc không có (hoặc có không đáng kể) thay đổi về các điểm trung tâm
(centroids) của các nhóm, hoặc giảm không đáng kể về tổng lỗi phân nhóm Error:
Thuật toán KMeans được chứng minh là hội tụ và có độ phức tạp tính toán là:

[4]
Trong đó: n là số đối tượng dữ liệu, k là số cụm dữ liệu, d là số chiều, là số vòng

lặp, là thời gian để thực hiện một phép tính cơ sở như phép tính nhân, chia,...
Chất lượng phân cụm:
- Phụ thuộc nhiều vào tham số đầu vào như: số cụm k và trọng tâm khởi tạo.
- Nếu các trọng tâm khởi tạo ban đầu quá lệch so với các trọng tâm cụm tự nhiên thì
kết quả phân cụm của KMeans là rất thấp và ngược lại.
3.1.3 Ví dụ tính toán bằng tay.
Bài toán:

Bảng 3. Mô tả bài toán phân cụm KMeans.

Input: Cho tập hợp 6 điểm


Output: Chia 6 điểm trên làm 2 nhóm, sao cho khoảng cách từ mỗi điểm đến
trung tâm của mỗi nhóm là gần nhất.
Các điểm: [{x: 127, y: 933}, {x: 138, y: 741}, {x: 846, y: 391}, {x: 876, y: 879},
{x: 980, y: 580}, {x: 369, y: 725}]
Thực hiện:
Bước 1: Khởi tạo.
Chọn random 2 điểm trong tập những điểm đã cho làm trọng tâm:
 cendoird_point_1 = { x: 846, y: 391 }
 cendoird_point_2 = { x: 980, y: 580 }
Bước 2: Tính toán khoảng cách và phân cụm.
[LOOP1]: Tính toán khoảng cách từ các điểm đến các trọng tâm:

Bảng 4. Lần lặp 1 tâm cụm và điểm thuộc tâm cụm.

SVTH: VŨ THỊ HƯỜNG 38 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Point Cendoird_point_1 Cendoird_point_2 Group


(846, 391) (980, 980)
P1(127, 933) 900.4026876903467 923.1565414381247 1
P2(138, 741) 789.7873131419623 857.2543379884409 1
P3(846, 391) 0.0 231.68297304722245 1
P4(876, 879) 488.9212615544552 316.5706872090339 2
P5(980, 580) 231.68297304722245 0.0 2
P6(369, 725) 582.3100548676796 627.9697444941118 1
Group1: [P1{x: 127, y: 933}, P2{x: 138, y: 741}, P3{x: 846, y: 391}, P6{x: 369, y:
725}]
Group2: [P4{x: 876, y: 879}, P5{x: 980, y: 580}]
Bước 3: Cập nhật lại trọng tâm.
[LOOP1] Tính lại trọng tâm của mỗi nhóm
cendoird_point_1.x = SUM(P1.x + P2.x + P3.x + P6.x) / 4 = 370
cendoird_point_1.y = SUM(P1.y + P2.y + P3.y + P6.y) / 4 = 697.5
cendoird_point_2.x = SUM(P4.x + P5.x) / 2 = 928
cendoird_point_2.y = SUM(P4.y + P5.y) / 2 = 729.5
Bước 4: Lặp cho đến khi thoả mãn điều kiện dừng.
[LOOP2] Quay lại tính như bước 2, thu được 1 bảng tính khoảng cách như sau:

SVTH: VŨ THỊ HƯỜNG 39 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Bảng 5. Lặp lần 2 tâm cụm và điểm thuộc tâm cụm.

Point Cendoird_point_1 Cendoird_point_2 Group


(370, 697.5) (928, 729.5)
P1(127, 933) 338.39215416436593 826.4461567458584 1
P2(138, 741) 236.04289864344574 790.0836980978661 1
P3(846, 391) 566.14331224523 348.2904678569312 2
P4(876, 879) 537.5669725717903 158.28534360451695 2
P5(980, 580) 621.213530116658 158.28534360451695 2
P6(369, 725) 27.518175811634027 559.0181124078182 1
Sau bước này, chúng tăng có được danh sách như sau:
Group1: [P1{x: 127, y: 933}, P2{x: 138, y: 741}, P6{x: 369, y: 725}]
Group2: [P3{x: 846, y: 391}, P4{x: 876, y: 879}, P5{x: 980, y: 580}]
[LOOP2] Lặp tính lại toán lại trọng tâm 2 nhóm lần nữa như bước 3, thu được:
cendoird_point_1 = {x: 211.333, y: 799.667}
cendoird_point_2 = {x: 900.667, y: 616.667}
=> Tọa độ các trọng tâm đã thay đổi, lặp lại bước 2 lần nữa:
[LOOP3] Lặp tính lại toán lại khoảng cách 2 nhóm với trọng tâm lần nữa như bước
2, thu được bảng tính khoảng cách như sau:

Bảng 6. Lặp lần 3 tâm cụm và điểm thuộc tâm cụm.

Point Cendoird_point_1 Cendoird_point_2 Group


(211.333, 799.667) (900.667, 616.667)
P1(127, 933) 157.7648369504434 835.8392152669077 1
P2(138, 741) 93.91243675892987 772.7351731207789 1
P3(846, 391) 754.8582103799362 232.19404767995243 2
P4(876, 879) 669.3847516772398 263.4901587877619 2
P5(980, 580) 799.4388955873989 87.3967606836775 2
P6(369, 725) 174.4535576536059 542.5917782071527 1
Sau bước này, chúng tăng có được danh sách như sau:
Group1: [P1{x: 127, y: 933}, P2{x: 138, y: 741}, P6{x: 369, y: 725}]
SVTH: VŨ THỊ HƯỜNG 40 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Group2: [P3{x: 846, y: 391}, P4{x: 876, y: 879}, P5{x: 980, y: 580}]
[LOOP4] Lặp tính lại toán lại trọng tâm 2 nhóm lần nữa như bước 3, thu được:
cendoird_point_1 = {x: 211.333, y: 799.667}
cendoird_point_2 = {x: 900.667, y: 616.667}
=> Nhận thấy tọa độ trọng tâm của các group không đổi. Dừng LOOP.
Kết quả: Từ 6 điểm đã cho ban đầu, chia thành 2 nhóm như sau:
Group1: [P1{x: 127, y: 933}, P2{x: 138, y: 741}, P6{x: 369, y: 725}]
Group2: [P3{x: 846, y: 391}, P4{x: 876, y: 879}, P5{x: 980, y: 580}]
3.1.4 Ưu điểm và nhược điểm của KMeans.
Ưu điểm:
- Tương đối nhanh. Độ phức tạp của thuật toán là O (tkn), trong đó: n là số điểm
trong không gian dữ liệu, k là số cụm cần phân, t là số lần lặp (t là khá nhỏ so với r).
- Thông thường t, k<<n. Nên thuật toán có hiệu quả tương đối với các CSDL lớn.
- Có khả năng mở rộng, có thể dễ dàng sửa đổi với những dữ liệu mới.
- Đảm bảo hội tụ sau 1 số bước lặp hữu hạn. Luôn có K cụm dữ liệu.
- Các cụm không phân cấp và không bị trồng chéo dữ liệu lên nhau.
Nhược điểm:
- Không đảm bảo đạt được tối ưu toàn cục và kết quả đầu ra phụ thuộc nhiều vào
việc chọn k điểm khởi đầu. Do đó có thể phải chạy lại thuật toán với nhiều bộ khởi
đầu khác nhau để có được kết quả đủ tốt.
- Cần phải xác định trước số cụm.
- Khó phát hiện các loại cụm có hình dạng phức tạp nhất là các dạng cụm không lồi.
- Chỉ có thể áp dụng với dữ liệu tính được trọng tâm.
- Nhạy với nhiễu và phần tử ngoại lai.
3.2 Ý tưởng và giải pháp MapReduce hoá thuật toán KMeans.
3.2.1 Đặc trưng của KMeans để MapReduce.
Trong thuật toán KMeans trình bày ở trên, phần lớn khối lượng tính toán tập
chung ở bước tính khoảng cách từ từng điểm (đối tượng) tới các tâm cụm. Số lượng
đối tượng trong tập dữ liệu càng lớn, thời gian cần cho bước này càng nhiều. Bên
cạnh đó, có thể nhận thấy việc tính toán khoảng cách từ một điểm tới tâm cụm là
SVTH: VŨ THỊ HƯỜNG 41 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

độc lập, không phụ thuộc vào điểm khác.


Vì vậy, việc tính khoảng cách từ các điểm đến trọng tâm để cập nhật trọng
tâm từng cụm có thể thực hiện song song, đồng thời với nhau.
3.2.2 Ý tưởng MapReduce hóa KMeans.
Nhiệm vụ: MapReduce hóa việc tính khoảng cách từ mỗi điểm đến trọng tâm để
từ đó tìm trọng tâm gần nhất cho mỗi điểm.
Chiến lược MapReduce hoá:
Với mỗi vòng lặp: Tách dữ liệu thành các nhóm nhỏ.
- Map: + Phân cụm trên từng nhóm nhỏ dữ liệu.
+ Gom dữ liệu theo từng trọng tâm.
- Reduce: + Tính tâm mới của các dữ liệu được gom (theo từng tâm).
+ Lặp cho đến khi thỏa mãn điều kiện dừng (tâm cụm không thay đổi).
=> Trong tính toán lại các vector trọng tâm mới, ta chia các vector vào các phân
nhóm, tính tổng của vector trong từng nhóm nhỏ song song và cuối cùng là hàm
reduce sẽ tính tổng chung và tính lại các trọng tâm mới.
Giải pháp MapReduce hóa KMeans:
↗ Đầu tiên: Chuyển đổi và biểu diễn dữ liệu.
+ Chuyển đổi dữ liệu thành danh sách các hàng, với mỗi hàng là một vector
biểu diễn cho một điểm.
Th hai: Lưu trữ phân tán dữ liệu.
+ Do các điểm được tính toán độc lập với nhau, nên chúng ta có thể lưu trữ
các phần của dữ liệu trên nhiều máy khác nhau để tăng tốc tính toán.
Th ba: Trên mỗi máy tính, trong mỗi vòng lặp, thì mỗi máy.
+ Tính khoảng cách của mỗi điểm trong phần dữ liệu của nó với các trọng
tâm. Kiểm tra xem nó gần trọng tâm nào nhất. Gửi lại kết quả trả về hàm sẽ gộp các
điểm thuộc cùng một nhóm, trộn dữ liệu và gửi tới hàm reduce để tính lại trọng tâm
mới sau mỗi vòng lặp. Từ đó, dữ liệu cần phân cụm là danh sách các hàng được
chuyển sang kiểu key/value làm đầu vào cho thuật toán.
3.3 Thuật toán phân cụm song song PKMeans.
Từ thuật toán KMeans [8] và mô hình xử lý dữ liệu phân tán MapReduce,
SVTH: VŨ THỊ HƯỜNG 42 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Jaatun và cộng sự đã đưa ra thuật toán PKMeans (Parallel KMeans) [13] dựa trên
MapReduce được Hadoop triển khai để thực hiện phương pháp phân cụm áp dụng
cho dữ liệu kích thước lớn. Bằng cách áp dụng các cặp <key, value> thích hợp,
thuật toán được đề xuất có thể được thực hiện song song hiệu quả.
✯ Giải thuật của thuật toán PKMeans:: gồm 2 thuật toán chính cho hàm map và
hàm reduce:

Bảng 7. Thuật toán PKMeans cho hàm map(key,value)

Input: Global variable centers, the offset key, the sample value
Output: pair, where the key’ is the index of the closest center point and value’ is a
string comprise of sample information
1. Construct the sample instance from value;
2. minDis = Double.MAX VALUE;.
3. index = -1;
4. For i=0 to centers.length do dis= ComputeDist(instance, centers[i]);
If dis < minDis
{ minDis = dis; index = i; }
5. End For
6. Take index as key’;
7. Construct value’ as a string comprise of the values of different dimensions;
8. output < key , value > pair;
9. End

Bảng 8. Thuật toán PKMeans cho hàm reduce(key,V)

Input: key is the index of the cluster, V is the list of the partial sums from
different host
Output: < key , value > pair, where the key’ is the index of the cluster, value’ is a
string representing the new center
1. Initialize one array record the sum of value of each dimensions of the samples
contained in the same cluster, e.g. the samples in the list V;
2. Initialize a counter NUM as 0 to record the sum of sample number in the same
SVTH: VŨ THỊ HƯỜNG 43 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

cluster;
3. while(V.hasNext())
{ Construct the sample instance from V.next();
Add the values of different dimensions of instance to the array NUM += num;
4. }
5. Divide the entries of the array by NUM to get the new center’s coordinates;
6. Take key as key’;
7. Construct value’ as a string comprise of the center’s coordinates;
8. output < key , value > pair;
9. End
Từ thuật toán cho hàm map, ta thấy đầu vào cho thuật toán PKMeans phải ở
dạng list các đối tượng dữ liệu mà có thể chuyển về dạng key/value. Tuy nhiên, với
dữ liệu ảnh thì cần có một bước chuyển đổi. Ngoài ra, với kết quả của hàm reduce
như trên, mặc dù đã thu được tâm và thông tin điểm ảnh nhưng rất bất tiện nếu thực
hiện các thao tác tiếp theo trên ảnh mà sử dụng kết quả phân cụm vì thông tin vị trí
không bao gồm trong kết quả.
3.4 Thuật toán IPKMeans – cải tiến của PKMeans cho phân cụm ảnh.

Để phân cụm ảnh, cần trải qua 3 giai đoạn như sau:
B1: Chuyển đổi dữ liệu.
B2: Phân cụm với thuật toán IPKMeans.
B3: Khôi phục kết quả phân cụm ảnh.
3.4.1 Chuyển đổi dữ liệu.
- Chuyển đổi dữ liệu điểm ảnh thành dạng chuỗi là list các hàng
- Mỗi hàng bao gồm: thông tin vị trí và danh sách giá trị là các thành phần của
vector biểu diễn cho một điểm ảnh và được lưu trữ dưới dạng file .txt.
Dữ liệu ảnh sau khi được chuyển đổi sẽ về dạng chuỗi đó là những dữ liệu
chưa được gán nhãn (nghĩa là dữ liệu chưa được định nghĩa hoặc chưa có nhóm).
Mục tiêu là tìm các nhóm nhất định dựa trên đặc điểm tương tự của tập dữ liệu với
số lượng nhóm được xác định trước (ký hiệu là k).
SVTH: VŨ THỊ HƯỜNG 44 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

3.4.2 Phân cụm ảnh với thuật toán IPKMeans.


Thuật toán IPKMeans:
Từ thuật toán PKMeans, em và TS.Nguyễn Tu Trung đã đưa ra bài báo được
chấp nhận tại hội nghị khoa học thường niêm của Trường Đại học Thuỷ Lợi (2019),
đã đưa ra thuật toán IPKMeans để phân cụm dữ liệu ảnh lớn. [1]
Lưu đồ thuật toán IPKMeans:
Dữ liệu ảnh sẽ được chia thành nhiều mảnh khác nhau. Với mỗi mảnh, dữ
liệu được gom cụm dựa trên hàm mapImage(key,value). Hệ thống thực hiện việc
này song song trên các mảnh dữ liệu. Sau khi tất cả các mảnh dữ liệu đều thực hiện
gom cụm, dữ liệu được gom theo từng cụm. Sau đó, quá trình tính tâm được thực
hiện trên từng cụm. Cuối cùng, thuật toán kiểm tra độ hội tụ (ngưỡng hội tụ =0,5)
và quyết định kết thúc hay tiếp tục vòng lặp mới lặp lại quá trình map và reduce.
=> Lưu đồ:

SVTH: VŨ THỊ HƯỜNG 45 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 24. Lưu đồ thuật toán IPKMeans.

Giải thuật thuật toán IPKMeans: gồm 2 thuật toán chính cho hàm mapImage
và hàm reduceImage:
● Thuật toán cho hàm mapImage:

Bảng 9. Thuật toán IPKMeans cho hàm mapImage(key, value).

Input: key is the index of the cluster, V is the list of the partial sums from
different host.
Output: < key , value > pair, where the key’ is the index of the cluster, value’ is a
string representing the new center.
1. Construct the sample instance from value;
2. minDis = Double.MAX VALUE;
3. index = -1;

SVTH: VŨ THỊ HƯỜNG 46 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

4. For i=0 to centers.length do


dis= ComputeDist(instance, centers[i]);
If dis < minDis { minDis = dis; index = i; }
5. End For
6. Take index as key’;
7. Construct value’ as a string comprise of the values of different dimensions and
position;
8. output < key’ , value’ > pair;
9. End

● Thuật toán cho hàm reduceImage:

Bảng 10. Thuật toán IPKMeans cho hàm reduceImage(key, value).

Input: Global variable centers, the offset key, the sample value is the list of color
bands and position

Output: pair, where the key’ is the index of the closest center point and value’ is a
string comprise of color bands and position

1. Initialize one array record the sum of value of each dimensions of the samples
contained in the same cluster, e.g. the samples in the list V;
2. Initialize a counter NUM as 0 to record the sum of sample number in the same
cluster;
3. while(V.hasNext())
{
Construct the sample instance from V.next();
Add the values of different dimensions of instance to the array NUM += num;
}
4. Divide the entries of the array by NUM to get the new center’s coordinates;
5. Take key as key’;
6. Construct value’ as a string comprise of the center’s coordinates and position;

SVTH: VŨ THỊ HƯỜNG 47 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

7. output < key , value > pair;

8. End

3.4.3 Khôi phục kết quả phân cụm ảnh.


Từ dữ liệu đầu ra của thuật toán IPKMeans. Để khôi phục lại ảnh kết quả
phân cụm sử dụng thông tin vị trí, tâm cụm và điểm ảnh thuộc tâm cụm. Ngoài ra,
sau đó, chúng ta có thể thực hiện những việc đánh giá dữ liệu, phân tích dữ liệu,
nhận dạng, phân lớp, ra quyết định, ... về sau.

SVTH: VŨ THỊ HƯỜNG 48 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

CHƯƠNG 4: CƠ SỞ CÔNG NGHỆ


4.1 Hệ điều hành Linux.
Khái niệm:
Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của
hệ điều hành. Là hệ điều hành hoàn toàn miễn phí, vô cùng mạnh mẽ và bảo mật và
được sử dụng cho mục đích máy chủ (server) lẫn máy tính bàn hoặc laptop.

Hình 25. Tổng quan hệ điều hành linux.

Phiên bản Linux đầu tiên do Linus Torvalds viết vào năm 1991, lúc ông còn
là một sinh viên của Đại học Helsinki tại Phần Lan. Ông làm việc một cách hăng
say trong vòng 3 năm liên tục và cho ra đời phiên bản Linux 1.0 vào năm 1994.
Kiến trúc của hệ điều hành Linux:

Hình 26. Kiến trúc của hệ điều hành linux.


SVTH: VŨ THỊ HƯỜNG 49 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hardware: Phần cứng bao gồm tất cả các thiết bị ngoại vi (RAM/ HDD/ CPU, ...).
Kernel: Thành phần cốt lõi của hệ điều hành, tương tác trực tiếp với phần cứng,
cung cấp dịch vụ cấp thấp cho các thành phần lớp trên.
Shell: Nhận lệnh từ người dùng và thực thi chức năng của kernel.
Utilities: Các chương trình tiện ích cung cấp cho người dùng hầu hết các chức năng
của hệ điều hành.
Ưu điểm và nhược điểm:
- Ưu điểm – hệ điều hành số 1 thế giới:
(1) Nền tảng mã nguồn mở, miễn phí và được cập nhật thường xuyên.
(2) Bảo mật, rất an toàn virut hay mã độc không hoạt động được trên nền tảng này.
(3) Hoạt động mượt mà trên các máy tính có cấu hình yếu: Hệ điều hành này có thể
xử lý nhiều tiến trình nhiều kết nối đồng thời tốt hơn nhiều so với hệ điều hành
windows.
(4) Sức mạnh của dòng lệnh: Quản trị linux tất cả đều qua dòng lệnh với giao thức
SSH là chủ yếu với tốc độ xử lý rất nhanh chóng.
(5) Cộng đồng sử dụng linux lớn: Gần 80% máy chủ trên thế giới sử dụng hệ điều
hành linux.
- Nhược điểm:
(1) Số lượng ứng dụng hỗ trợ trên Linux còn hạn chế.
(2) Một số nhà sản xuất không phát triển driver hỗ trợ nền tảng Linux.
(3) Khó làm quen, đặc biệt nếu bạn đã quá quen thuộc với Windows thì khi chuyển
sang Linux, bạn sẽ cần một khoảng thời gian để làm quen nó.
4.2 Công nghệ docker.
4.2.1 Tổng quan về docker.
Khái niệm:
Theo nguồn wikipedia: "Docker là một dự án mã nguồn mở giúp tự động
triển khai các ứng dụng Linux và Windows vào trong các container ảo hóa."
Theo các trang mạng: "Docker là một open platform cung cấp cho người sử
dụng những công cụ và service để người sử dụng có thể đóng gói và chạy ứng dụng
của mình trên các môi trường khác nhau một cách nhanh nhất."
SVTH: VŨ THỊ HƯỜNG 50 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 27. Logo công nghệ docker.

Docker hỗ trợ nhiều nền tảng hệ điều hành khác nhau bao gồm:
+ Linux: Ubuntu 12.04+, Fedora 19/20+, RHEL 6.5+, CentOS 6+, Gentoo,
ArchLinux, openSUSE 12.3+, CRUX 3.0+
+ Cloud: Amazon EC2m Google Compute Engine, Microsoft Azure,...
+ Max OS X
+ Windows: Windows 7+
Kiến trúc của docker:

Hình 28. Kiến trúc của docker.

Docker sử dụng kiến trúc client-server.


(1) Docker client sẽ liên lạc với các Docker daemon. Giao tiếp với nhau thông qua

SVTH: VŨ THỊ HƯỜNG 51 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

socket hoặc RESTful API. Cung cấp cho người dùng giao diện tương tác dòng lệnh
và thực hiện phản hồi với các Docker daemon.
(2) Docker daemon sẽ thực hiện các tác vụ build, run và phân phối các Docker
container. Docker daemon chạy trên các máy host.
+ Docker image: Là 1 template chỉ đọc, được dùng để tạo 1 docker container.
Docker cho phép chúng ta build và cập nhật các image có sẵn một cách cơ bản nhất,
hoặc bạn có thể download Docker images của người khác.
+ Docker container: Một Docker container giữ mọi thứ chúng ta cần để chạy một
app. Mỗi container được tạo từ Docker image. Docker container có thể có các trạng
thái run, started, stopped, moved và deleted.
Quy trình thực thi hệ thống sử dụng docker:

Hình 29. Quy trình thực thi hệ thống trên docker.

Bước 1: Build.
Tạo một Dockerfile, trong dockerfile này chính là code thực thi các lệnh build môi
trường Docker. Dockerfile này sẽ đc Build tại 1 máy tính đã cài đặt Docker. Kết
quả: Thu được Container chứa toàn bộ thư viện và ứng dụng.
Bước 2: Push.
Thực hiện push Container lên đám mây và lưu trữ ở đó. Việc push này thực hiện
qua môi trường mạng internet.

SVTH: VŨ THỊ HƯỜNG 52 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Bước 3: Pull, Run.


Pull container nếu đã được đưa lên đám mây. Thực hiện run container muốn sử
dụng.
Ưu và nhược điểm của docker:
- Ưu điểm:
(1) Với sự hỗ trợ của docker, việc coding, testing, deploying trở nên đơn giản hơn.
(2) Khả năng di động (portable): Môi trường develop được dựng lên bằng docker có
thể chuyển từ người này sang người khác mà không làm thay đổi cấu hình ở trong.
(3) Versioning: Docker được tích hợp VCS-git, để tracking các dòng lệnh thiết lập,
hay đánh dấu version.
(4) Component reuse: Docker có khả năng sử dụng lại resource trước đó, bằng cách
đánh dấu những resources giống nhau bằng một mã ID. Các môi trường được dựng
lên sau đó sẽ kiểm tra các mã ID trước đó, nếu trùng docker sẽ sử dụng lại.
(6) Sharing: Docker Hub (public registry), các developer có thể tìm và sử dụng các
môi trường được dựng sẵn.
=> Tốn ít tài nguyên, nhanh, linh động đồng nhất và an toàn.
- Nhược điểm:
Không thể chạy trực tiếp trên Windows. Chính vì thế, để sử dụng Docker
trên Windows thì Docker sẽ phải run một máy ảo linux rồi mới có thể thực thi được.
4.2.2 Docker ứng dụng trong multi-node.
Lựa chọn docker:
Cho tới hiện tại khi cài Docker trên Windows thì Docker sẽ cài một máy ảo
Linux trên máy thật và Docker hoạt động dựa trên máy ảo Linux đó.
=> Vì thế em đã cài đặt docker và sử dụng công nghệ này để cấu hình chương trình
chạy song song trên nhiều cụm máy tính ảo trên hệ điều hành linux.
Phân tích:
Hadoop cho phép hai chế độ cài đặt, thiết lập nút đơn để cài đặt một cụm giả
trong đó mỗi nút chạy trong một luồng và thiết lập nhiều nút, trong mỗi nút được
giả định chạy trong một máy chủ mạng riêng biệt.
Docker có thể cho phép chạy một mạng trong đó mỗi container chạy 1 nút Hadoop
SVTH: VŨ THỊ HƯỜNG 53 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

riêng, ví dụ như sau:

Hình 30. Cài đặt nhiều node bên trong một mạng docker.

Kt lun:
Bằng cách sử dụng Docker và docker compose giúp:
- Tận dụng khoảng cách thiết lập cục bộ.
- Cài đặt nhiều cụm thực sự với chi phí bằng không.
- Kiểm tra cách Hadoop hoạt động như thế nào và mô phỏng hành việc
thêm/xoá các cụm trên mạng đó.
4.3 Ngôn ngữ lập trình Java.
4.3.1 Tổng quan về Java.
Java là gì?
Java là một ngôn ngữ lập trình, được phát triển bởi Sun Microsystem vào
năm 1995, là ngôn ngữ kế thừa từ C/C++ và là một ngôn ngữ lập trình hướng đối
tượng.

SVTH: VŨ THỊ HƯỜNG 54 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Hình 31. Logo ngôn ngữ lập trình Java.

Ưu và nhược điểm:
- Ưu điểm:
+ Về tốc độ: Chạy nhanh hơn những ngôn ngữ thông dịch như Python, PHP nhiều
lần.
+ Về quản lý bộ nhớ: Bộ nhớ được quản lý bởi Java Virtual Machine (JVM) nên
hiện tượng rò rỉ bộ nhớ hầu như không xảy ra, không phải quan tâm đến việc cấp
phát và xóa bộ nhớ như C, C++.
+ Về cú pháp: Cú pháp hướng đối tượng hơn và ít tính năng xử lý cấp thấp hơn.
Nên việc viết một chương trình java dễ dàng hơn, đơn giản, đỡ tốn công sửa lỗi.
+ Được nhà phát triển mô hình map/reduce dùng xử lý dữ liệu lớn hiệu quả, ...
- Nhược điểm:
+ Tool tràn lan (NetBeans, Eclipse, IntelliJ, JBuilder, vv), đặc tính là free nên hỗ trợ
không thoải mái như Visual Studio.
+ Bảo mật source code không tốt (phần nguyên lý hoạt động sẽ nêu rõ).
Ứng dụng phổ biến của ngôn ngữ lập trình Java:
+ Phát triển ứng dụng cho các thiết bị di động: Các ứng dụng phổ biến nhất
trong Google PlayStore có thể kể đến như Whatsapp, Facebook, Linkedin, FlipKart.
+ Phát triển ứng dụng web: Với sự tiến bộ của Thương mại điện tử, phạm vi
ngày càng mở rộng. Ví dụ như SAP, NetSuite, Alfresco, Liferay, Youtube, Google,
Netflix, Mifox (giải pháp ngân hàng), v.v

SVTH: VŨ THỊ HƯỜNG 55 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

+ Dữ liệu lớn: Các công ty hiện đang tung hứng với lượng lớn dữ liệu. Các công cụ
Quản lý dữ liệu lớn như Hadoop sử dụng Java theo nhiều cách. Ngoài ra có Apache
Spark, Tìm kiếm Đàn hồi (ELK), Cassandra, HBASE, v.v.

Hình 32. Minh hoạ ứng dụng của Java.

4.3.2 Java swing.


Khái niệm:
Swing (javax.swing.*) là một framework mới được giới thiệu đầu tiên là
java 1.2 bao gồm các đặc tính của AWT và thêm nhiều tính năng nổi trội khác.
Không giống AWT, java Swing cung cấp các thành phần gọn nhẹ và độc lập nền
tảng. Package cung cấp các lớp cho Java Swing như JButton, JTextField, ..
Ưu điểm và ứng dụng:
- Chiếm ít tài nguyên của hệ thống.
- Hỗ trợ giao diện “Look and Feel” tương tác với người dùng.
- Dễ dàng mở rộng.
Kiến trúc:
Swing sử dụng kiến trúc MVC để xây dựng các chương trình.
+ M (Model): Chứa thành phần trạng thái GUI (Graphical User Interface).
+ V (View): Thể hiện trực quan GUI.
+ C (Controller): Quản lý thao tác của người dùng tác động lên GUI thông qua
các sự kiện như click chuột, bàn phím, ...
4.4 Môi trường lập trình Intellij IDEA Ultimate.
Khái niệm:
IntelliJ IDEA là một IDE Java để phát triển các phần mềm máy tính. Nó
SVTH: VŨ THỊ HƯỜNG 56 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

được phát triển bởi JetBrains (trước đây gọi là IntelliJ), nó được cấp phép Apache
cho phiên bản cộng đồng và là một phiên bản thương mại độc quyền. [7]
Đặc điểm:
+ IntelliJ IDEA, "thủ lĩnh" của Java IDE cả về tính năng và giá cả, có hai phiên bản:
Community miễn phí và Ultimate mất phí với các tính năng bổ sung.
+ IntelliJ IDEA là một IDE đầy đủ tính năng cho các nhà phát triển Java EE và mọi
thứ như Java. IntelliJ IDEA đến từ nhà phát triển của công ty JetBranins, công ty
kinh doanh cung cấp công cụ phát triển trong 15 năm qua với nhiều thành công lớn.
=> Ưu điểm vượt trội so với các công cụ khác như eclipse, netbean, ... đó là:
Phiên bản Ultimate mang lại nhiều tính năng bổ sung như:
- Khuôn khổ Spring MVC, Spring Security, Spring Integration và các công cụ khác.
- Hỗ trợ các khuôn khổ như Node.js, Angular và React.
- Hỗ trợ cho các ngôn ngữ phát triển web như JavaScript, Coffeescript,v.v….
- Hỗ trợ Java EE bao gồm JSF, JAX-RS, CDI, JPA,v.v….
- Grails, GWT, Griffon và hỗ trợ Vaadin.
- Kiểm soát phiên bản với Team Foundation Server, Perforce, Clearcase, ...

SVTH: VŨ THỊ HƯỜNG 57 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

CHƯƠNG 5: XÂY DỰNG CHƯƠNG TRÌNH VÀ THỰC NGHIỆM ĐÁNH


GIÁ
5.1 Yêu cầu hệ thống.
5.1.1 Yêu cầu chung.
- Ứng dụng có đầy đủ tính năng của một hệ thống về ảnh: Upload, preview và
download.
- Ứng dụng đảm bảo sự dễ dàng trong sử dụng.
- Xây dựng trên nền tảng công nghệ tiên tiến, có khả năng nâng cấp mở rộng về sau
mà không ảnh hưởng đến chương trình hiện tại.
5.1.2 Yêu cầu chức năng.

Hình 33. Các chức năng của ứng dụng.

- Upload ảnh: Ứng dụng cho phép chọn ảnh từ các thư mục máy tính.
- IPKMeans clustering: Thực hiện phân cụm (hay phân đoạn) ảnh sử dụng thuật
toán IPKMeans theo kỹ thuật đề xuất..
- KMeans clustering: Thực hiện phân cụm (hay phân đoạn) ảnh sử dụng thuật toán
KMeans theo kỹ thuật truyền thống.
- Download image: Sau khi phân cụm xong, thì ứng dụng cho phép download ảnh
về máy, để mở phóng to thu nhỏ ảnh sau phân cụm để so sánh.
5.2 Xây dựng chương trình.

SVTH: VŨ THỊ HƯỜNG 58 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

5.2.1 Môi trường thực nghiệm.


- Máy ASUS RAM 8G, ổ cứng HDD, CPU core i5.
- Hệ điều hành Linux – Ubuntu phiên bản 16.04.
- Trình biên dịch Intellij IDEA phiên bản 2019.2.
- Java phiên bản 1.8.0_171.
- Docker phiên bản 19.03.4.
- Framework Hadoop 2.7.3.
5.2.2 Dữ liệu thực nghiệm.
- Nguồn dữ liệu: Lấy trong tập bộ dữ liệu của google, bao gồm: ảnh hoa kích thước
128x128px, ảnh chó kích thước 300x300px, ảnh chó kích thước 500x500px và ảnh
phong cảnh kích thước 700x700px.
5.2.3 Cài đặt chương trình.
Chạy chương trình trên docker:
Một số ký hiệu:
$ : Chỉ thị chạy lệnh tại thư mục mã nguồn code ipkmeans-docker với quyền user.
# : Chỉ thị chạy lệnh tại thư mục mã nguồn code iplmeans-docker với quyền root.
Thực hiện:
- Mở terminal đi vào thư mục ipkmeans-docker và chạy các lệnh:
+ Cài đặt số lượng máy tính để xử lý song song:
$ docker-compose up -d --scale slave= NUMBER_OF_NODE

+ Thêm dữ liệu test:


$ ./copy_files.sh
+ Cài đặt chạy giao diện GUI:
$ xhost +

+ Vào quyền root phân quyền file cấu hình chạy chương trình:

SVTH: VŨ THỊ HƯỜNG 59 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

$ docker-compose exec master bash


# cd hadoop
# chmod 755 start.sh
+ Tạo các thư mục.
# mkdir images output_mapreduce output_non_mapreduce output_images icon.
+ Chạy các lệnh thêm các package cần thiết.
# apt-get –y install libxrender1 libxtst6 libxi6 libgconf-2-4 nano

# exit
$ ./copy_images.sh
$ docker-compose exec master bash
# cd hadoop
+ Chạy chương trình:
# ./start.sh

Chú ý: Chạy lệnh.


$ docker-compose down (đối với trường hợp chương trình đã chạy và muốn thay
đổi số lượng node).
5.3 Thực nghiệm và đánh giá.
5.3.1 Kết quả cài đặt.
- Triển khai thực nghiệm đánh giá theo 2 trường hợp:
+ 1 node (trên local) với cấu hình 1 máy đóng vai trò vừa là master (NameNode)
chịu trách hiệm điều phối hoạt động vừa thực thi nhiệm vụ như slave (DataNode).
+ 3, 5, 7 node (trên docker) với cấu hình 1 máy master chịu trách hiệm điều phối

SVTH: VŨ THỊ HƯỜNG 60 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

hoạt động và 3, 5, 6 máy slave sẽ thực thi nhiệm vụ do master điều phối gán.
Giao diện ứng dụng: Trước và sau khi chương trình kết thúc (1 trường hơp).

Hình 34. Giao diện ứng dụng phân cụm.

3.3.2 Kết quả thực nghiệm và đánh giá.

SVTH: VŨ THỊ HƯỜNG 61 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Bảng 11. Ảnh dữ liệu đầu vào.

Kích 128x128 300x300 500x500 700x700


Thước

Ảnh

✯ Đánh giá 1: Đánh giá tính chính xác của các thuật toán:

Bảng 12. Kết quả ảnh sau khi phân cụm kích thước 128x128 và 300x300.

Số KMeans IPKMeans KMeans IPKMeans


cụm
3

Bảng 13. Kết quả ảnh sau khi phân cụm kích thước 500x500 và 700x700.

SVTH: VŨ THỊ HƯỜNG 62 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Số KMeans IPKMeans KMeans IPKMeans


cụm
3

- Lưu ý: Thực nghiệm 1 node trên môi trường local và thực nghiệm nhiều node
trên môi trường docker.

Từ dữ liệu trong bảng 12 và 13, ta thấy tập tâm cụm sinh ra bởi 2 thuật toán
là như sau. Nói cách khác, hai thuật toán cho chất lượng phân cụm tương đương
nhau.

=> Kết luận: Qua việc thực thi thuật toán IPKMeasn, em thấy rằng kết quả của các
thuật toán KMeans và IPKMeans là:
+ Kết quả hoàn toàn giống nhau.
+ Đều có kết quả trung gian giống nhau qua mỗi bước lặp và số lần lặp giống nhau.

- Dẫn chứng kết quả thực nghiệm với ảnh kích thước 128x128
SVTH: VŨ THỊ HƯỜNG 63 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

Bảng 14. Kết quả tâm cụm sinh ra sau khi hội tụ 1.

Cụm Kmeans IPKMeans

3 146.57, 125.41, 55.12 146.57, 125.41, 55.12


213.33, 185.26, 139.02 213.33, 185.26, 139.02
139.96, 175.18, 196.71 139.96, 175.18, 196.71
5 121.26, 33.69,38.10 121.26, 33.69,38.10
186.78, 37.58, 64.24 186.78, 37.58, 64.24
224.81, 65.31, 98.80 224.81, 65.31, 98.80
247.19, 111.52, 154.32 247.19, 111.52, 154.32
30.13, 21.61, 14.97 30.13, 21.61, 14.97
7 167.47, 28.27, 47.86 167.47, 28.27, 47.86
181.06, 52.82, 87.49 181.06, 52.82, 87.49
217.17, 51.44, 81.24 217.17, 51.44, 81.24
23.66, 19.39, 13.20 23.66, 19.39, 13.20
237.39, 81.12, 118.01 237.39, 81.12, 118.01
249.18, 120.18, 163.67 249.18, 120.18, 163.67
91.71, 37.64, 32.90 91.71, 37.64, 32.90

- Dẫn chứng kết quả thực nghiệm với ảnh kích thước 300x300.

Bảng 15. Kết quả tâm cụm sinh ra sau khi hội tụ 2.

Cụm Kmeans IPKMeans

3 152.37, 129.42, 58.80 152.37, 129.42, 58.80


158.27, 178.89, 185.59 158.27, 178.89, 185.59
66.34, 68.83, 41.82 66.34, 68.83, 41.82
5 129.69,138.09,78.88 129.69,138.09,78.88
219.20,221.84,62.35 219.20,221.84,62.35
224.67,230.73,152.24 224.67,230.73,152.24
33.32,39.65,23.32 33.32,39.65,23.32
85.66,90.67,42.43 85.66,90.67,42.43
7 140.08, 175.82, 197.94 140.08, 175.82, 197.94
141.74, 119.64, 40.34 141.74, 119.64, 40.34
17.72, 77.41, 100.48 17.72, 77.41, 100.48
SVTH: VŨ THỊ HƯỜNG 64 LỚP: 57TH2
Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

170.58, 149.18, 84.58 170.58, 149.18, 84.58


221.69, 193.95, 151.67 221.69, 193.95, 151.67
53.64, 41.63, 6.52 53.64, 41.63, 6.52
96.91, 79.91, 32.68 96.91, 79.91, 32.68
✯Đánh giá 2: Đánh giá hiệu xuất thực thi của các thuật toán.

Bảng 16. Kết quả thống kê thời gian thực thi 128x128.
Số 3 cụm 5 cụm 7 cụm
node KMeans IPKMeans KMeans IPKMean KMeans IPKMeans
s
1 15240 28868 67604 110266 34477 88786
3 18040 222160 41796 1048615 27471 801110
5 22609 289987 22366 545326 18706 490508
7 18091 235359 27537 482611 28037 531585
Bảng 17. Kết quả thống kê thời gian thực thi 300x300.
Số 3 cụm 5 cụm 7 cụm
node KMeans IPKMeans KMean IPKMeans KMean IPKMeans
s s
1 1010783 296501 886060 312146 1239018 493502
3 1139861 1057883 646876 803021 1392884 1689318
5 1472401 1366532 573857 640248 992572 1657507
7 1142224 1081177 1292151 1285137 854062 1151390
Bảng 18. Kết quả thống kê thời gian thực thi 500x500.
Số 3 cụm 5 cụm 7 cụm
node KMeans IPKMeans KMeans IPKMeans KMeans IPKMeans
1 5016357 1295988 3358817 956783 3305970 862954
3 2390198 1001712 2390309 1214319 2954896 1264067
5 3820414 1515108 1481568 708253 1347377 718491
7 3066427 1011371 2863084 1065389 2135302 1007419
Bảng 19. Kết quả thống kê thời gian thực thi 700x700.
Số 3 cụm 5 cụm 7 cụm
nod KMeans IPKMean KMeans IPKMean KMeans IPKMean

SVTH: VŨ THỊ HƯỜNG 65 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

s s s
e
1 1701830 4977636 1165473 5188732 1593614 7142650
1 3 7
3 1854306 6090505 1845489 7291294 1673414 8244356
4 1 0
5 1452499 3878907 1562626 6046730 1423501 6516630
6 4 2
7 1170687 4811877 1594570 7560861 1357302 5774530
6 0 8

=> Kết luận: Giữ tập dữ liệu không đổi và tăng số lượng cụm và số lượng node.
Thực hiện trên bộ dữ liệu kích thước khác nhau. Kết quả cho thấy:
+ IPKMeans có hiệu suất thời gian chạy rất tốt, khi kích thước ảnh tăng, thì hiệu
suất, thời lượng và tính ổn định của việc phân cụm dữ liệu lớn được cải thiện và
hiệu quả hơn nhiều so với giải thuật KMeans truyền thống. Do đó, thuật toán
IPKMeans có thể xử lý các bộ dữ liệu lớn một cách hiệu quả.
+ Tuy nhiên nhận thấy, hiệu suất thực thi của các thuật toán cũng 1 phần phụ thuộc
vào tâm cụm khởi tạo ngẫu nhiên.
- Tăng kích thước dữ liệu test, kết quả thử nghiệm với số node bằng = 7 và số cụm
=7 chạy trên môi trường docker.

Bảng 20. Kết quả đánh giá hiệu suất theo kích thước dữ liệu.

Kích thước ảnh (px) Thời gian Kmeans (ms) Thời gian IPKMeans (ms)

128x128 28037 531585

300x300 854062 1151390

500x500 2135302 1007419

700x700 13573028 5774530

SVTH: VŨ THỊ HƯỜNG 66 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

- Biểu đồ mô phỏng đánh giá: Với số cụm =7.

Bảng 21. Biểu đồ đánh giá hiệu suất thực thi.

(a) (b)

(c) (d)

(a) Biểu đồ biểu diễn kết quả đánh giá hiệu suất với ảnh 128x128.
(b) Biểu đồ biểu diễn kết quả đánh giá hiệu suất với ảnh 300x300.
(c) Biểu đồ biểu diễn kết quả đánh giá hiệu suất với ảnh 500x500.
(d) Biểu đồ biểu diễn kết quả đánh giá hiệu suất với ảnh 700x700.

SVTH: VŨ THỊ HƯỜNG 67 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

KẾT LUẬN
Đồ án tốt nghiệp với đề tài "Tìm hiểu thuật toán K-Mean dựa trên mô hình
MapReduce và ứng dụng trong phân cụm ảnh" em đã thu được một số kết quả
cũng như nhận thấy một số hạn chế như sau:
Kết quả đạt được:
- Tìm hiểu tổng quan về bài toán phân cụm ảnh và giải quyết bài toán.
- Tìm hiểu về điểm ảnh, màu của ảnh cách xử lý điểm ảnh và khôi phục ảnh.
- Nghiên cứu về mô hình lập trình MapReduce và Apache Hadoop.
- Nghiên cứu áp dụng thuật toán IPKMeans trên mô hình lập trình MapReduce trên
framework Hadoop.
- Lập trình cài đặt ứng dụng phân cụm ảnh sử dụng 2 thuật toán KMeans và
IPKMeans.
- Đánh giá thuật toán dựa trên tính chính xác và hiệu suất của thuật toán.
- Cài đặt thử nghiệm phân cụm song song nhiều cụm máy tính trên môi trường
server ảo sử dụng công nghệ docker và docker-compose.
Một số hạn chế:
- Đã cài đặt thử nghiệm song song trên nhiều máy ảo. Tuy nhiên chưa cài đặt thử
nghiệm nhiều cụm trên nhiều máy tính thật.
Mặc dù đã rất cố gắng trong quá trình thực hiện để hoàn thành đồ án tốt nhất,
song do năng lực và trình độ còn hạn chế nên khó tránh khỏi những thiếu sót. Kính
mong các thầy cô và các bạn quan tâm phản hồi, chỉ bảo để ứng dụng của em hoàn
thiện hơn.
Hướng phát triển:
Nhận thấy đây là lĩnh vực rất có tiềm năng. Trong thời gian tới em sẽ cố
gắng tiếp tục nghiên cứu sâu hơn về MapReduce cũng như các dự án con của
Hadoop để tìm được các công cụ hữu ích hơn cho việc song song hóa các bài toán
thực tế có độ phức tạp cao hơn và áp dụng cho những thuật toán học máy khác để
có thể khai thác, phân tích và xử lý dữ liệu lớn hiệu quả hơn.

SVTH: VŨ THỊ HƯỜNG 68 LỚP: 57TH2


Đồ Án Tốt Nghiệp Khoa Công Nghệ Thông Tin

TÀI LIỆU THAM KHẢO


1. Tài liệu tiếng việt.
[1] SV.Vũ Thị Hường, TS.Nguyễn Tu Trung (2019), Ứng dụng mô hình
MapReduce trong phân cụm ảnh, Hội nghị Khoa Học thường niên, DHTL.
[2] https://kipalog.com/posts/Thuat-toan-Kmean-va-ung-dung
[3] TS.Nguyễn Tu Trung, (2019), Bài giảng môn Phân tích dữ liệu lớn, DHTL.
[4] Nguyễn Trung Đức (2013), Tiếp cận mờ trong phân cụm dữ liệu, LVTS.
2. Tài liệu tiếng anh.
[5] https://www.tutorialspoint.com/hadoop
[6] https://www.javatpoint.com/java-swing
[7] http://hadooptutorial.info/
[8] Balaji T., Sumathi M., Relational Features of Remote Sensing Image
classification using Effective KMeans Clustering, International Journal of
Advancements in Research & Technology, Volume 2, Issue 8, August- 2013.
[9] Xiaolong Jin, Benjamin W.Wah (2014), Significance and Challenges of Big
Data Research, The Chinese University of HongKong Shation, China.
[10] Mohd Usama, Mengchen (2017), Job schedulers for Big data processing in
Hadoop environment: testing real-life schedulers using benchmark programs,
School of Computer Science and Technology, Huazhong University of Science and
Technology, Wuhan 430074, China
[11] TIAN Jinlan, ZHU Lin (2004), Improvement and Parallelism of k-means
Clustering Algorithm, Department of Computer Science and Technology, Tsinghua
University, Beijing 100084, China.
[12] J. Dean and S. Ghemawat, “MapReduce: Simplified Data Processing on Large
Clusters,” Commun ACM, vol. 51, no. 1, pp. 107–113, Jan. 2008.
[13] Zhao, W.Ma,. (2012, December). Parallel k-means clustering based on
mapreduce. In IEEE International Conference on Cloud Computing (pp. 674-679).
Springer, Berlin, Heidelberg.
[14] https://lewuathe.com/hadoop/docker/multiple-hadoop-cluster-on-docker.html

SVTH: VŨ THỊ HƯỜNG 69 LỚP: 57TH2

You might also like