Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)Mô hình truy vấn nhanh cơ sở dữ liệu lớn dự trên sự kết hợp SQL và hadoop mapreduce (Luận văn thạc sĩ)
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM TP HỒ CHÍ MINH
Võ Thị Hồng Thắm
MÔ HÌNH TRUY VẤN NHANH
CƠ SỞ DỮ LIỆU LỚN DỰA TRÊN
SỰ KẾT HỢP SQL VÀ HADOOP MAPREDUCE
LUẬN VĂN THẠC SĨ MÁY TÍNH
Thành phố Hồ Chí Minh – 2017
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM TP HỒ CHÍ MINH
Võ Thị Hồng Thắm
MÔ HÌNH TRUY VẤN NHANH
CƠ SỞ DỮ LIỆU LỚN DỰA TRÊN
SỰ KẾT HỢP SQL VÀ HADOOP MAPREDUCE
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01
LUẬN VĂN THẠC SĨ MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS NGÔ QUỐC VIỆT
Thành phố Hồ Chí Minh – 2017
Trang 3Tôi xin cam đoan đây là công trình nghiên cứu do chính tôi thực hiện Các số liệu, kết quả phân tích trong luận văn là hoàn toàn trung thực và chưa từng được công
bố trong bất kỳ công trình nghiên cứu nào trước đây
Tp HCM, ngày 28 tháng 9 năm 2017
Học viên
Võ Thị Hồng Thắm
Trang 4Đầu tiên, tôi xin bày tỏ lòng biết ơn chân thành và sâu sắc nhất đến Thầy TS Ngô Quốc Việt Thầy đã tạo mọi điều kiện thuận lợi, cũng như tận tình hướng dẫn tôi trong suốt quá trình nghiên cứu, thực hiện luận văn này
Tôi cũng chân thành cảm ơn quí Thầy, Cô trong trường ĐH Sư Phạm Thành Phố Hồ Chí Minh, và các thầy cô giảng dạy bộ môn đã tận tình giảng dạy, truyền đạt những kiến thức quí báu, từ đó tôi đã áp dụng kiến thức đã học vào quá trình nghiên cứu và thực hiện luận văn
Cuối cùng, tôi xin bày tỏ lòng biết ơn sâu sắc đối với gia đình, bạn bè đã luôn động viên, khích lệ tinh thần, cũng như giúp đỡ tôi trong suốt quá trình học tập cũng như thực hiện luận văn
Tp HCM, ngày 28 tháng 9 năm 2017
Học viên
Võ Thị Hồng Thắm
Trang 5Trang Lời cam đoan
Lời cám ơn
Mục lục
Danh mục từ viết tắt
Danh mục hình ảnh
MỞ ĐẦU 1
Chương 1: PHÂN CỤM DỮ LIỆU 5
1.1 Giới thiệu về phân cụm dữ liệu 5
1.2 Tổng quan về phân cụm dữ liệu 5
1.3 Độ tương tự 8
1.4 Một số phương pháp phân cụm dữ liệu 10
1.4.1 Phương pháp phân cụm phân hoạch (Partitioning Methods) 11
1.4.2 Phương pháp phân cụm phân cấp (Hierarchical Methods) 11
1.4.3 Phương pháp phân cụm dựa trên mật độ (Density-Based Methods) 12
1.4.4 Phương pháp phân cụm dựa trên lưới (Grid-Based Methods) 12
1.4.5 Phương pháp phân cụm dựa trên mô hình (Model-Based Clustering Methods) 13
Chương 2: MÔ HÌNH XỬ LÝ PHÂN TÁN HADOOP MAPREDUCE 14
2.1 Apache Hadoop 14
2.1.1 Kiến trúc Hadoop cluster 15
2.1.2 Thành phần của Hadoop 16
2.2 Hadoop Distributed File System (HDFS) 18
2.2.1 Kiến trúc HDFS 18
2.2.2 Đọc tập tin từ HDFS 20
2.2.3 Ghi tập tin xuống HDFS 20
2.3 MapReduce 21
2.4 Apache Hive 24
2.4.1 Kiến trúc của Hive 25
2.4.2 Hoạt động của Hive 26
Trang 62.4.5 Hive User Defined Functions (Hive UDFs) 28
2.5 Sqoop 28
Chương 3: MÔ HÌNH TRUY VẤN NHANH CSDL LỚN DỰA TRÊN SỰ KẾT HỢP SQL VÀ HADOOP MAPREDUCE 30
3.1 Giải thuật phân cụm dữ liệu PROCLUS 30
3.1.1 Giai đoạn khởi tạo 32
3.1.2 Giai đoạn lặp 32
3.1.3 Giai đoạn lọc 36
3.2 Giải thuật PROCLUS phân tán 38
3.3 Phân cụm CSDL lớn dựa trên sự kết hợp SQL – MapReduce 38
3.3.1 Giai đoạn map 39
3.3.2 Giai đoạn reduce: 39
3.3.3 Gộp cụm bằng SQL 40
3.4 Phân đoạn bảng (table partition) 41
3.5 Truy vấn nhanh dữ liệu 42
Chương 4: THỰC NGHIỆM 44
4.1 Cài đặt môi trường 44
4.2 Dữ liệu thực nghiệm 44
4.3 Qui trình thực nghiệm 46
4.3.1 Import dữ liệu từ SQL Server vào Hive 46
4.3.2 Phân cụm dữ liệu trong Hive 46
4.3.3 Export các cụm từ Hive trở lại SQL Server 49
4.3.4 Gộp cụm trong SQL Server 49
4.3.5 Phân đoạn bảng 49
4.3.6 Truy vấn nhanh dữ liệu 50
KẾT LUẬN 54
DANH MỤC TÀI LIỆU THAM KHẢO 55
Trang 7Từ viết tắt Tiếng Anh Từ hoặc cụm từ viết tắt
BIRCH Balanced Interative Reducing
and Clustering using Hierarchies
Phân hoạch các đối tượng dùng cấu trúc cây theo độ co giãn
của phân giải
DBMS Database Management System Hệ quản trị cơ sở dữ liệu
DENCLUE Density based CLUstering Phân cụm dựa trên mật độ
EM Expectation Maximization Cực đại hóa kỳ vọng
HDFS Hadoop Distributed File System Hệ thống tập tin phân tán
HiveQL Hive Query Language Ngôn ngữ truy vấn Hive
MWKM The mixed attribute weighting
k-modes algorithm
Giải thuật k-modes cho dữ liệu hỗn hợp có trọng số
PROCLUS Projected Clustering Giải thuật phân cụm dữ liệu
dựa trên phép chiếu
RDBMS Relational Database
Management System
Hệ quản trị cơ sở dữ liệu quan
hệ
Trang 8UDFs User Defined Functions Hàm người dùng định nghĩa
Trang 9Hình 1.1 Tổng quan về phân cụm 8
Hình 2.1 Kiến trúc Hadoop cluster 16
Hình 2.2 Kiến trúc HDFS 19
Hình 2.3 Mô hình MapReduce của Google 22
Hình 2.4 Quá trình thực hiện MapReduce của bài toán đếm từ 24
Hình 2.5 Hoạt động của Hive 26
Hình 2.6 Chức năng Sqoop 29
Hình 3.1 Hạn chế khi phân cụm bằng cách chọn trước số chiều 31
Hình 3.2 Locality của tâm A đối với tâm B và tâm C với bán kính 33
Hình 3.3 Phân cụm CSDL dựa trên tiếp cận lai SQL-MapReaduce 38
Hình 4.1 Thời gian thực hiện phân cụm theo số bản ghi 48
Hình 4.2 Thời gian thực hiện phân cụm theo số chiều 48
Hình 4.3 Thời gian thực hiện phân cụm theo số cụm 49
Hình 4.4 Thời gian trung bình thực hiện truy vấn theo số bản ghi 51
Hình 4.5 Thời gian trung bình thực hiện truy vấn theo số chiều 52
Hình 4.6 Thời gian trung bình thực hiện truy vấn theo số cụm 53
Trang 10MỞ ĐẦU
1 Tính cấp thiết t i
Trong những năm gần đây, công nghệ thông tin phát triển không ngừng và có nhiều ứng dụng trong các lĩnh vực kinh tế - xã hội Với những tác động mạnh mẽ của tiến bộ công nghệ, các dữ liệu phục vụ cho các lĩnh vực này đã phát triển bùng nổ, tạo
ra một lượng dữ liệu lưu trữ khổng lồ Hàng triệu CSDL được tạo ra trong các hoạt động sản xuất, kinh doanh, quản lý , trong đó có nhiều CSDL cực lớn Sự phong phú
về dữ liệu đòi hỏi khả năng truy vấn chúng một cách nhanh chóng để nâng cao năng suất và chất lượng cho công tác quản lý, hoạt động kinh doanh cũng như hỗ trợ ra quyết định Với một bảng dữ liệu lớn, việc truy vấn dữ liệu rất mất thời gian do chỉ cần lấy một phần dữ liệu trong bảng nhưng phải duyệt qua toàn bộ bảng trong CSDL Để đáp ứng nhu cầu truy vấn nhanh, cách thức lưu trữ dữ liệu cũng là vấn đề quan trọng Một bảng dữ liệu nếu được lưu trữ theo kỹ thuật phân đoạn (table partitioning) sẽ giúp quản lý hiệu quả CSDL lớn Khi cần lấy dữ liệu ở một đoạn nào đó thì chỉ cần truy nhập vào đoạn đó và bỏ qua các đoạn còn lại Trong CSDL, có thể xem mỗi đoạn của bảng là một cụm dữ liệu Do đó, cần kỹ thuật phân cụm CSDL lớn thành từng cụm, sau đó lưu trữ phân đoạn các cụm dữ liệu đó thành từng đoạn
Bên cạnh đó, nhu cầu về thông tin trong các hoạt động sản xuất, kinh doanh cũng làm cho các CSDL có số chiều rất lớn Với các CSDL lớn nhiều chiều, các công cụ phần mềm phổ biến sẽ gặp nhiều hạn chế để thu thập, quản lí và xử lý trong một thời gian chấp nhận được Khi số chiều lớn, ngoài khối lượng tính toán tăng lên, dữ liệu phân bố thưa nên việc quan sát dữ liệu để phân tích đặc điểm hình học cũng rất khó khăn nên phân cụm khó hiệu quả Vì vậy, phân cụm CSDL nhiều chiều có nhiều thách thức [10] Có nhiều cách tiếp cận để phân cụm dữ liệu nhiều chiều, một trong những giải thuật hiệu quả dùng là phân cụm dữ liệu dựa trên phép chiếu Phân cụm dựa trên phép chiếu giúp hiểu đặc trưng của dữ liệu, và tìm được những đặc trưng chính, đáng tin cậy đại diện cho dữ liệu Một trong những đặc trưng chính của phân cụm dựa trên phép chiếu là các bản ghi được chiếu trên các đặc trưng thích hợp giúp tìm ra các cụm
Trang 11dữ liệu, vì một thực tế quan trọng là không phải tất cả các đặc trưng đều thích hợp cho tất cả các cụm được hình thành [9] Từ đó sẽ có cơ chế lưu trữ và xử lý hiệu quả sau
đó
Một cách tiếp cận để phân cụm CSDL lớn nhiều chiều dựa trên phép chiếu là sử dụng phương pháp lai SQL và MapReduce [13] MapReduce được giới thiệu bởi Google và dùng cho phân tích dữ liệu lớn MapReduce là mô hình xử lý dữ liệu với lập trình song song Trong tiếp cận này, dữ liệu được phân chia thành các lượng nhỏ Phân cụm sẽ được thực hiện song song trên các lượng dữ liệu nhỏ hơn thông qua chức năng map (ánh xạ) Tuy nhiên, khi dữ liệu quá lớn thì quá trình gộp các cụm qua chức năng reduce (rút gọn) sẽ mất nhiều thời gian và không hiệu quả Để khắc phục được hạn chế này thì quá trình trộn các cụm được thực hiện bằng cách sử dụng ngôn ngữ SQL trong RDBMS [13]
Tóm lại, để giúp truy vấn nhanh CSDL lớn, cần lưu trữ dữ liệu theo từng đoạn tương ứng với từng cụm Có nhiều giải thuật phân cụm dữ liệu khác nhau, nhưng giải thuật phân cụm dựa trên phép chiếu bằng cách tiếp cận lai SQL – MapReduce là giải thuật thích hợp với CSDL lớn nhiều chiều Dựa trên những cơ sở vừa nêu, tôi chọn đề
tài “Mô hình truy vấn nh nh ơ sở dữ liệu lớn dự trên sự kết hợp SQL v
Hadoop MapReduce” làm đề tài luận văn của mình
2 Mụ h nghiên u
Mục đích nghiên cứu của đề tài là giảm thời gian thực hiện các truy vấn trong một CSDL lớn Để giảm thời gian truy vấn, luận văn đã tìm hiểu mô hình phân cụm CSDL lớn dựa trên tiếp cận SQL và Hadoop MapReduce [13] Từ kết quả phân cụm, bảng dữ liệu sẽ được phân đoạn tương ứng với từng cụm Các truy vấn sẽ lấy dữ liệu trong đoạn tương ứng các cụm mà không cần quét qua toàn bộ bảng Từ đó, góp phần giảm thời gian truy vấn dữ liệu
3 Đối tƣợng và phạm vi nghiên c u
Đối tượng nghiên cứu:
Dữ liệu về tiếp thị ngân hàng của Bồ Đào Nha được tải từ UCI
Trang 12(https://arcHive.ics.uci.edu/ml/datasets/Bank+Marketing) Dữ liệu được lưu trữ và quản lí trên SQL Server 2014
Phạm vi nghiên cứu
Luận văn tập trung vào việc nghiên cứu các vấn đề sau:
- Nghiên cứu khái niệm, vai trò, ứng dụng của các kỹ thuật phân cụm dữ liệu
- Tìm hiểu, nghiên cứu mở rộng phân cụm CSDL lớn dựa trên tiếp cận lai SQL
và Hadoop MapReduce
- Cách thức tổ chức lưu trữ dữ liệu trong bảng lớn của CSDL trong SQL Server giúp truy vấn nhanh dữ liệu của các truy vấn có điều kiện
4 Phương ph p nghiên u
- Nghiên cứu lý luận:
Tìm hiểu lý thuyết về các kỹ thuật phân cụm dữ liệu
Tìm hiểu giải thuật phân cụm dựa trên phép chiếu PROCLUS
Tìm hiểu mô hình Hadoop MapReduce, và một số dự án Hadoop: Hive, Sqoop,…
Tìm hiểu kỹ thuật phân đoạn bảng và cách truy vấn dữ liệu trên bảng đã phân đoạn
- Thực nghiệm:
Cài đặt mô hình lập trình MapReduce dựa trên Hadoop
Sử dụng ngôn ngữ lập trình Python để tạo thực nghiệm phân cụm dựa trên phép chiếu PROCLUS
Kết hợp Framework Hadoop MapReduce với SQL để phân cụm CSDL lớn
Lưu trữ dữ liệu đã phân cụm theo từng đoạn và truy vấn nhanh dữ liệu đã phân đoạn
Trang 135 Đ ng g p lu n v n
Luận văn trình bày mô hình truy vấn nhanh CSDL lớn dựa trên sự kết hợp SQL
và Hadoop MapReduce, từ đó góp phần giảm thời gian truy vấn dữ liệu trong CSDL lớn, góp phần hỗ trợ người quản lý có thể truy vấn nhanh các dữ liệu cần thiết, để đưa
ra các quyết định chính xác, tạo ra chiến lược kinh doanh hiệu quả cũng như hỗ trợ cho công tác quản lý Để xây dựng được mô hình, luận văn tìm hiểu và áp dụng phân cụm CSDL lớn, nhiều chiều dựa trên tiếp cận lai SQL và Hadoop MapReduce [13] nhằm giảm thời gian phân cụm Trong bước phân cụm, giải thuật phân cụm dựa trên phép chiếu PROCLUS được sử dụng để phân cụm cho CSDL nhiều chiều Dữ liệu sau phân cụm được phân đoạn theo từng cụm Luận văn cũng nêu được cách thức truy vấn dữ liệu trên từng đoạn nhằm giảm thời gian truy vấn
Trang 14Chương 1 PHÂN CỤM DỮ LIỆU
1.1 Giới thiệu v phân cụm dữ liệu
Ngày nay, các kỹ thuật khai phá dữ liệu được nghiên cứu rộng rãi và trở thành một vấn đề thời sự trong lĩnh vực công nghệ thông tin Rất nhiều tổ chức và công ty lớn đã áp dụng kỹ thuật này vào dữ liệu của mình nhằm khai thác chúng để nâng cao năng suất hỗ trợ hoạt động kinh doanh Một trong số kỹ thuật khai phá dữ liệu là PCDL Phân cụm dữ liệu là một kỹ thuật quan trọng được ứng dụng rộng rãi trong các lĩnh vực sản xuất và kinh doanh, giúp hỗ trợ cho việc quản lý và xử lý thông tin Phân cụm dữ liệu được ứng dụng trong nhiều lĩnh vực như tài chính, xử lý hình ảnh, tìm kiếm thông tin, tin sinh học,… Phân cụm dữ liệu là quá trình tổ chức các đối tượng thành từng nhóm mà các đối tượng ở trong cùng một nhóm tương tự nhau theo một tính chất nào đó, những đối tượng không tương tự tính chất sẽ ở nhóm khác Như vậy, phân cụm dữ liệu 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 cho các đối tượng trong một cụm “tương tự” với nhau và các đối tượng trong các cụm khác nhau sẽ “không tương tự” với nhau Số các cụm dữ liệu được phân có thể được xác định trước theo kinh nghiệm hoặc có thể được tự động xác định
1.2 Tổng quan v phân cụm dữ liệu
Theo các nghiên cứu đến thời điểm hiện nay thì chưa có một phương pháp phân cụm tổng quát nào có thể giải quyết trọn vẹn cho tất cả các dạng cấu trúc dữ liệu Hơn nữa, đối với các phương pháp phân cụm cần có cách thức biểu diễn cấu trúc của dữ liệu, với mỗi cách thức biểu diễn khác nhau sẽ có tương ứng một giải thuật phân cụm phù hợp Vì vậy, phân cụm dữ liệu vẫn đang là một vấn đề khó và mở, vì phải giải quyết nhiều vấn đề cơ bản một cách trọn vẹn và phù hợp với nhiều dạng dữ liệu khác nhau, đặc biệt là đối với dữ liệu hỗn hợp đang ngày càng tăng và đây cũng là một trong những thách thức lớn Trên thế giới, có nhiều nghiên cứu các kỹ thuật phân cụm
dữ liệu:
Các tác giả Adil Fahad, Najlaa Alshatri, Zahir Tari, Abdullah Alamri, Ibrahim Khalil, Albert y Zomaya, Sebti Foufou, và Abdelaziz Bouras [9] đã tổng hợp các giải thuật phân cụm trên dữ liệu lớn như: giải thuật phân cụm mờ FCM của các tác giả J C
Trang 15Bezdek, R Ehrlich, W Full, giải thuật BIRCH của các tác giả T Zhang, R Ramakrishnan, M Livny, giải thuật DENCLUE, giải thuật OPTIGRID (Optimal Grid) của các tác giả A Hinneburg và D A Keim, giải thuật EM của các tác giả A P Dempster, N M Laird,và D B Rubin Phân cụm dữ liệu mờ FCM được đề xuất dựa trên cải tiến và tổng quát hóa hàm mục tiêu mờ bằng cách đưa ra trọng số mũ, và độ hội tụ của thuật toán là cực tiểu cục bộ [5] Giải thuật phân cụm FCM giải quyết một
số bài toán PCDL trong nhận dạng mẫu, xử lý ảnh,… Tuy nhiên, giải thuật có nhược điểm là nhạy cảm với các điểm nhiễu Giải thuật BIRCH lấy ý tưởng là không cần lưu toàn bộ các đối tượng dữ liệu của các cụm trong bộ nhớ mà chỉ lưu các đại lượng thống kê Để theo dõi các cụm hình thành, giải thuật tóm tắt thông tin về một cụm và dùng cây cân bằng để lưu trữ cụm đặc trưng [5] Giải thuật DENCLUE dựa trên tiếp cận xem xét mô hình được sử dụng một công thức toán để mô tả mỗi điểm dữ liệu ảnh hưởng trong mô hình như thế nào Như vậy, DENCLUE là phương pháp dựa trên một tập các hàm phân phối mật độ EM được xây dựng dựa trên mẫu, EM gán các đối tượng cho các cụm đã cho theo xác suất phân phối thành phần của đối tượng đó EM
có thể khám phá ra nhiều hình dạng cụm khác nhau, tuy nhiên chi phí tính toán của giải thuật là khá cao [5] Nhìn chung, các tác giả cũng đã trình bày cơ sở lý thuyết của một số giải thuật liên quan đến PCDL cũng như so sánh các giải thuật dựa trên thực nghiệm dữ liệu lớn Từ đó tìm ra các giải thuật phân cụm hiệu quả cho dữ liệu lớn Tác giả cũng đưa ra một số kết luận về phân cụm trên dữ liệu lớn: không có giải thuật phân cụm hoạt động tốt cho tất cả các dữ liệu, các giải thuật phù hợp với tập dữ liệu lớn và
có số chiều cao là DENCLUE và OPTIGRID, và tương lai nên có cải tiến để giải quyết các hạn chế trong mỗi nhóm, giải pháp có thể là dựa trên ngôn ngữ lập trình, công nghệ phần cứng mà có thể cho phép các giải thuật như vậy được thực hiện hiệu quả hơn [9]
C Aggarwal, C Procopiuc, J.L Wolf, P S Yu, J S Park [10] tìm hiểu giải thuật
phân cụm dữ liệu trong các CSDL Trong không gian số chiều lớn, không phải tất cả các chiều liên quan đến một cụm Nhằm khắc phục những hạn chế của phân cụm dữ liệu có chiều lớn và tính thưa của dữ liệu, các tác giả đề xuất giải thuật phân cụm dữ liệu dựa trên phép chiếu, trong đó các chiều sẽ được chọn lọc thể hiện đặc trưng của
Trang 16cụm dữ liệu Phân cụm dựa trên phép chiếu cho phép chia độ tương quan khác nhau giữa các tập con khác nhau của tập dữ liệu đầu vào [10]
Các tác giả Jeffrey Dean và Sanjay Ghemawat đề xuất phương pháp phân cụm
dữ liệu lớn dựa vào MapReduce MapReduce là một mô hình lập trình và xử lý trên các tập dữ liệu lớn [11] Người dùng có thể chỉ định chức năng ánh xạ để xử lý một cặp (khóa, giá trị) để tạo ra một tập hợp các cặp (khóa, giá trị) trung gian, và chức năng rút gọn kết hợp tất cả các giá trị trung gian Trong MapReduce, các xử lý hoạt động song song Hệ thống thời gian sẽ phân vùng dữ liệu đầu vào, lập kế hoạch thực hiện chương trình trên các máy, xử lý thất bại, và quản lý các thông tin liên lạc [11] Các tác giả Hajar Rehioui, Abdellah Idrissi, Manar Abourezq, Faouzia Zegrari đề xuất giải thuật DENCLUE-IM để phân cụm dữ liệu lớn nhằm tăng hiệu suất và giảm thời gian phân cụm Giải thuật DENCLUE-IM được cải tiến từ DENCLUE Ý tưởng chính là tăng tốc độ tính toán bằng cách tránh các bước bước leo đồi trong DENCLUE Tác giả thực nghiệm với bộ dữ liệu lớn và chứng minh hiệu quả của giải thuật đã đề xuất [12]
Tình hình nghiên cứu trong nước:
Nguyễn Trung Sơn đã nghiên cứu kỹ thuật tiếp cận trong phân cụm dữ liệu như: phương pháp phân cụm phân hoạch (Partitioning Methods), phương pháp phân cụm phân cấp (Hierarchical Methods), phương pháp phân cụm dựa trên mật độ (Density-Based Methods), phương pháp phân cụm dựa trên lưới (Grid-Based Methods), phương pháp phân cụm dựa trên mô hình (Model-Based Clustering Methods), phương pháp phân cụm có dữ liệu ràng buộc (Binding Data Clustering Methods) trong luận văn thạc
sĩ “phương pháp phân cụm và ứng dụng” [5] Các phương pháp phân cụm này sẽ được tìm hiểu trong 1.4
Lưu Xuân Văn đã nghiên cứu “thuật toán phân cụm đồng thời và ứng dụng” trong luận văn thạc sĩ Trong nghiên cứu này, tác giả đã tìm hiểu giải thuật biclustering
sẽ tìm cách phân cụm đồng thời trên dữ liệu biểu hiện gene từ đó có thể hiểu thêm các tiến trình sinh học giữa các gene trong các cá thể [8]
Trang 17Trong luận văn “phân cụm dữ liệu định danh với số chiều cao” [3], Phan Thị Luân tìm hiểu cách biểu diễn dữ liệu nhằm phục vụ cho quá trình phân cụm, giới thiệu độ tương đồng giữa các đối tượng trong tập dữ liệu, các phương pháp phân cụm
dữ liệu Trình bày một số giải thuật phân cụm dữ liệu như: phương pháp phân hoạch, phương pháp phân cấp Đặc biệt, luận văn quan tâm đến việc phân cụm dữ liệu định danh Trình bày một số giải thuật, trong đó đi sâu vào hai giải thuật COOLCAT và MWKM để phân cụm dữ liệu định danh với nhiều thuộc tính Từ đó thực nghiệm so sánh hai giải thuật COOLCAT và MWKM với 5 bộ dữ liệu với nhiều thuộc tính: cơ
sở dữ liệu đậu tương, cơ sở dữ liệu nấm, cơ sở dữ liệu ung thư phổi, cơ sở dữ liệu về thuê bao di động phát sinh của thành phố Hà Nội và cơ sở dữ liệu điều tra dân số Mỹ năm 1990
Phạm Minh Tiến “Tìm hiểu về kỹ thuật phân cụm dữ liệu trong hệ quản trị cơ sở
dữ liệu Oracle” [7] trong đồ án tốt nghiệp đại học Tác giả đã tìm hiểu một số vấn đề trong phân cụm dữ liệu trong hệ quản trị CSDL như các thủ tục, các gói dữ liệu tích hợp trong Oracle, sử dụng các giải thuật phân cụm
Hình 1.1 Tổng qu n v phân ụm [9]
1.3 Độ tương tự
Phân cụm dữ liệu là phương pháp nhóm các đối tượng có độ tương tự vào trong một nhóm, các đối tượng ở các nhóm khác nhau thì có độ tương tự thấp Độ tương tự giữa các đối tượng mô tả tính chất giống nhau hoặc khác nhau giữa chúng theo một ý nghĩa nào đó Giá trị của độ tương tự càng cao thì sự giống nhau giữa đối tượng càng
Trang 18lớn và ngược lại Có rất nhiều hàm được dùng để biểu diễn độ tương tự giữa các đối tượng Trong khuôn khổ luận văn chỉ trình bày một số hàm đo tương tự phổ biến gọi là các hàm khoảng cách
Đây là trường hợp của khoảng cách Minskowski trong trường hợp q = ∞
Thuộc tính nhị phân: dựa trên xây dựng bảng tham số sau:
Trang 19Trong đó, , các đối tượng x, y mà tất cả các thuộc tính tính của nó đều là nhị phân biểu thị bằng 0 và 1 Bảng trên cho ta các thông tin sau:
- là tổng số các thuộc tính có giá trị là 1 trong cả hai đối tượng x, y
- là tổng số các giá trị thuộc tính có giá trị là 1 trong x và 0 trong y
- là tổng số các giá trị thuộc tính có giá trị là 0 trong x và 1 trong y
- là tổng số các giá trị thuộc tính có giá trị là 0 trong x và y
Các phép đo độ tương tương đồng đối với dữ liệu thuộc tính nhị phân được định nghĩa như sau:
Hệ số đối sánh đơn giản:
Thuộc tính định danh: Độ đo phi tương tự giữa hai đối tượng x và y được định
nghĩa theo công thức 1.7:
trong đó m là số thuộc tính đối sánh tương ứng
1.4 Một số phương ph p phân ụm dữ liệu
Các kỹ thuật phân cụm có nhiều cách tiếp cận và được ứng dụng trong thực tế,
Trang 20hướng tới hai mục tiêu chung đó là chất lượng của các cụm và tốc độ thực hiện Hiện nay, các kỹ thuật phân cụm có thể phân loại theo các phương pháp tiếp cận chính như sau: phân cụm phân hoạch (Partitioning Methods); phân cụm phân cấp (Hierarchical Methods); phân cụm dựa trên mật độ (Density-Based Methods); phân cụm dựa trên lưới (Grid-Based Methods); phân cụm dựa trên mô hình (Model-Based Clustering Methods)
1.4.1 Phương ph p phân ụm phân hoạ h (P rtitioning Methods)
Phân cụm phân hoạch [3] phân 1 tập dữ liệu có n phần tử cho trước thành k cụm
dữ liệu sao cho mỗi phần tử dữ liệu chỉ thuộc về 1 cụm và mỗi nhóm dữ liệu có tối thiểu ít nhất 1 phần tử dữ liệu Tuy nhiên, phương pháp này không thể xử lí các cụm
có hình dạng kỳ quặc, hoặc các cụm có mật độ các điểm dày đặc Các thuật toán phân hoạch dữ liệu có độ phức tạp rất lớn khi xác định nghiệm tối ưu toàn cục, do nó phải tìm kiếm tất cả các cách phân hoạch có thể được Vì vậy, trên thực tế, để tìm giải pháp tối ưu cục bộ cho vấn đề này bằng cách sử dụng một hàm tiêu chuẩn để đánh giá chất lượng của cụm cũng như để hướng dẫn cho quá trình tìm kiếm phân hoạch dữ liệu Như vậy, ý tưởng chính của thuật toán phân cụm phân hoạch tối ưu cục bộ là sử dụng
kỹ thuật tham lam (Greedy) để tìm kiếm nghiệm
Một số thuật toán dùng để phân cụm phân hoạch điển hình như k-Means, Medoid, PAM, CLARA, CLARANS, [9]
K-1.4.2 Phương ph p phân ụm phân ấp (Hier r hi l Methods)
Phương pháp này sắp xếp một tập dữ liệu đã cho thành một cấu trúc có dạng hình cây Việc xây dựng cây được thực hiện theo hai cách: một là từ dưới lên (bottom-up) hoặc từ trên xuống (top-down) Trong cả hai cách phân loại phân cấp này, ta có thể xác định số cụm dự kiến và điều kiện để kết thúc [3], [5]
Phương pháp dưới lên (bottom-up): Phương pháp này bắt đầu với mỗi đối
tượng được khởi tạo tương ứng với các cụm riêng biệt, sau đó tiến hành nhóm các đối tượng theo một độ đo tương tự (như khoảng cách giữa hai tâm của hai nhóm), quá trình này được thực hiện cho đến khi tất cả các nhóm được sát nhập vào một nhóm
Trang 21(mức cao nhất của cây phân cấp) hoặc cho đến khi các điều kiện kết thúc thỏa mãn Cách tiếp cận này sử dụng chiến lược tham lam trong quá trình phân cụm
Phương pháp trên xuống (top-down): Bắt đầu với trạng thái là tất cả các đối
tượng được xếp trong cùng một cụm Mỗi vòng lặp thành công, một cụm được tách thành các cụm nhỏ hơn theo giá trị của một phép đo độ tương tự nào đó cho đến khi mỗi đối tượng là một cụm, hoặc cho đến khi điều kiện dừng thỏa mãn Cách tiếp cận này sử dụng chiến lược chia để trị trong quá trình phân cụm
Một số thuật toán phân cụm phân cấp điển hình như CURE, BIRCH, [9]
1.4.3 Phương ph p phân ụm dự trên m t ộ (Density-Based Methods)
Phương pháp này nhóm các đối tượng dữ liệu theo hàm mật độ xác định Mật độ được định nghĩa như là số các đối tượng lân cận của một đối tượng dữ liệu theo một nghĩa nào đó Trong cách tiếp cận này, các cụm dữ liệu đã xác định được mở rộng thêm các đối tượng dữ liệu mới trong vùng lân cận miễn là số các đối tượng lân cận này phải lớn hơn một ngưỡng đã được xác định trước Phương pháp phân cụm dựa trên mật độ có thể các định các cụm dữ liệu có hình thù bất kỳ Kỹ thuật này có thể khắc phục được các phần tử ngoại lai hoặc giá trị nhiễu rất tốt, tuy nhiên việc xác định các tham số mật độ của thuật toán là rất khó khăn, trong khi các tham số này lại có tác động rất lớn đến kết quả phân cụm [3]
Một số thuật toán PCDL dựa trên mật độ điển hình như DBSCAN, OPTICS, DENCLUE, [9]
1.4.4 Phương ph p phân ụm dự trên lưới (Grid-Based Methods)
Kỹ thuật phân cụm dựa trên lưới thích hợp với dữ liệu nhiều chiều, dựa trên cấu trúc dữ liệu lưới để phân cụm, phương pháp này chủ yếu tập trung áp dụng cho lớp dữ liệu không gian Ưu điểm chính của phương pháp phân cụm dựa trên lưới là thời gian
xử lý nhanh chóng, mà thường là độc lập với số lượng đối tượng dữ liệu, nhưng phụ thuộc vào số ô trong mỗi chiều của không gian lưới Mục tiêu của phương pháp này là lượng hóa dữ liệu thành các ô tạo thành cấu trúc dữ liệu lưới Sau đó, các thao tác phân cụm chỉ cần làm việc với các đối tượng trong từng ô trên lưới chứ không phải các đối
Trang 22tượng dữ liệu Cách tiếp cận dựa trên lưới này không di chuyển các đối tượng trong
các ô mà xây dựng nhiều mức phân cấp của nhóm các đối tượng trong một ô [3]
Một số thuật toán PCDL dựa trên cấu trúc lưới điển hình như: STING,
Điển hình trong phương pháp tiếp cận theo phân cụm dựa trên mô hình là các thuật toán như: EM, COBWEB, CLASSIT, AutoClass (Cheeseman and Stutz, 1996),… [9]
Trang 23Chương 2 MÔ HÌNH XỬ LÝ PHÂN TÁN HADOOP MAPREDUCE
2.1 Apache Hadoop
Apache phát triển hệ thống mã mở Hadoop chạy trên môi trường Unix, và được thiết kế để hỗ trợ cho các ứng dụng sử dụng lượng lớn dữ liệu cấu trúc và phi cấu trúc [4] Hệ thống phần mềm mã mở này được tối ưu cho tính tin cậy, khả năng mở rộng và tính toán phân tán Hadoop được thiết kế để làm việc với nhiều loại dữ liệu Hadoop cho phép lưu trữ khối lượng lớn bằng cách chia thành các khối dữ liệu nhỏ hơn phân phối trên các phần cứng của một cluster để xử lý nhanh hơn [4] Công nghệ này đã được sử dụng rộng rãi bởi trên thế giới như Facebook, eBay, Amazon, Yahoo,… Hadoop là một framework mã nguồn mở viết bằng Java cho phép phát triển các ứng dụng phân tán dữ liệu lớn [1] Hadoop cho phép lưu trữ và xử lý phân tán các ứng dụng có thể làm việc với khối lượng dữ liệu khổng lồ trên các cụm máy tính từ một vài máy chủ đơn đến hàng nghìn máy tính [1] Các dịch vụ của Hadoop cung cấp cho việc lưu trữ, xử lý, truy cập, quản trị dữ liệu, an ninh và đảm bảo các hoạt động
Ưu điểm của việc sử dụng Hadoop là khả năng lưu trữ, quản lý và phân tích số lượng lớn dữ liệu có cấu trúc và không có cấu trúc một cách nhanh chóng, đáng tin cậy, linh hoạt và chi phí thấp [1]
- Khả năng mở rộng và hiệu suất: Hadoop xử lý phân tán dữ liệu cục bộ trong
mỗi nút của một cluster, nên cho phép lưu trữ, quản lý, xử lý và phân tích dữ liệu rất lớn
- Độ tin cậy: Trong trường hợp các nút bị hỏng riêng lẻ trong cụm Hadoop có thể chuyển hướng đến các nút còn lại trong cụm vì dữ liệu được tự động sao chép lại trên nhiều nút
- Tính linh hoạt: Không giống như các hệ thống quản lý CSDL quan hệ truyền thống, với hadoop không cần phải tạo lược đồ có cấu trúc trước khi lưu trữ dữ liệu Hadoop thể lưu trữ dữ liệu ở nhiều định dạng, bao gồm các định dạng bán cấu trúc hoặc không có cấu trúc
- Chi phí thấp: Không giống như phần mềm độc quyền, Hadoop là mã nguồn mở
Trang 24và chạy trên phần cứng giá rẻ
2.1.1 Kiến trúc Hadoop cluster
Một Hadoop cluster được xây dựng dựa trên kiến trúc master-slave bao gồm có một nút chủ chứa NameNode, JobTracker và SecondaryNameNode (nút chủ có thể chứa DataNode và TaskTracker) Cả NameNode, JobTracker và SecondaryNameNode
có thể nằm trên cùng một máy vật lý (tuy nhiên với cluster thật sự với hàng trăm, hàng nghìn nút thì thường phải tách các thành phần này ra các máy vật lý khác nhau) [1] Có nhiều nút phụ thuộc, mỗi nút phụ thuộc thường đóng 2 vai trò là DataNode và TaskTracker Mỗi thành phần có chức năng riêng NameNode và DataNode chịu trách nhiệm vận hành hệ thống tập tin phân tán HDFS, JobTracker và TaskTracker chịu trách nhiệm duy trì bộ máy MapReduce, nhận và thực thi các MapReduce Job Chức năng mỗi thành phần như sau:
- NameNode: Là một trình nền quan trọng nhất của Hadoop Hadoop sử dụng một kiến trúc master-slave cho cả lưu trữ phân tán và xử lý phân tán NameNode chỉ đạo các trình nền DataNode để thực hiện các nhiệm vụ I/O mức thấp Hadoop có chức năng quản lý metadata: tên tập tin, danh sách các khối dữ liệu và nơi lưu trữ, quản lý việc mở đóng các tập tin, quản lý các DataNode và điều hướng quá trình đọc/ghi dữ liệu từ máy phụ thuộc lên các DataNode [1], [4]
- JobTracker: Chỉ có một JobTracker trên một cụm Hadoop JobTracker tiếp nhận các yêu cầu thực thi công việc MapReduce và phân chia công việc này thành các tác vụ (task) và phân công cho các TaskTracker thực hiện, quản lý tình trạng thực hiện các tác vụ của TaskTracker Nếu một tác vụ thất bại (fail), JobTracker sẽ tự động chạy lại nhiệm vụ đó, có thể trên một nút khác JobTracker cũng quản lý danh sách các TaskTracker và tình trạng của từng nút [1], [4]
- SecondaryNameNode: Một trình nền hỗ trợ giám sát trạng thái của các cụm HDFS, nó lưu trữ một bản sao cho dữ liệu 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 [1], [4]
- DataNode: Mỗi máy phụ thuộc trong cluster sẽ lưu trữ một trình nền DataNode
Trang 25để thực hiện các công việc nào đó của hệ thống tập tin phân tán Khi muốn đọc hay ghi một tập tin thì tập tin đó được chia nhỏ thành các khối dữ liệu và NameNode sẽ thông báo cho các máy phụ thuộc thuộc nơi chứa các trình nền DataNode Máy phụ thuộc sẽ liên lạc trực tiếp với các trình nền DataNode để xử lý các khối dữ liệu Hơn nữa, một DataNode có thể giao tiếp với các DataNode khác để nhân bản các khối dữ liệu của nó
để dự phòng Như vậy, DataNode chứa các khối dữ liệu thực sự của các tập tin trên HDFS, quản lý lưu trữ các khối dữ liệu theo yêu cầu của NameNode và đáp ứng yêu cầu truy cập các khối dữ liệu từ máy phụ thuộc, đáp ứng các yêu cầu tạo/xoá các khối
dữ liệu từ NameNode [1], [4]
- TaskTracker: Có một TaskTracker cho một nút phụ thuộc Nhiệm vụ của TaskTracker là thực thi các tác vụ map và reduce theo yêu cầu của JobTracker Một trong những trách nhiệm của các TaskTracker là liên tục liên lạc với JobTracker Nếu JobTracker không nhận được phản hồi từ một TaskTracker nào đó trong vòng một lượng thời gian đã quy định, nó sẽ cho rằng TaskTracker lỗi [4]
Hình 2.1 Kiến trú H doop luster [18]
2.1.2 Th nh phần H doop
Hadoop framework gồm 4 module:
- Hadoop Common: Đây là các thư viện và tiện ích cần thiết để hỗ trợ cho các
Trang 26modules khác của Hadoop [15]
- Hadoop Yarn: Đây là framework để quản lý tiến trình và tài nguyên của các
cluster [15]
- Hadoop Distributed File System (HDFS): Đây là hệ thống tập tin phân tán
cung cấp truy cập thông lượng cao cho ứng dụng khai thác dữ liệu [15]
- Hadoop MapReduce: Đây là hệ thống dựa trên Yarn dùng để xử lý song song
các tập dữ liệu lớn [15]
Một số dự án khác có liên quan đến Hadoop tại Apache
- Avro: Hệ thống dữ liệu tuần tự [15]
- Chukwa: Hệ thống thu thập dữ liệu để quản lý hệ thống phân tán lớn [15]
- Hbase: Cơ sở dữ liệu phân tán có khả năng mở rộng, hỗ trợ lưu trữ dữ liệu có
cấu trúc cho các bảng lớn [15]
- Hive: Hạ tầng kho dữ liệu, cung cấp tổng hợp dữ liệu và cho phép thực hiện
truy vấn tương tự SQL và biên dịch những câu lệnh này thành tập hợp các tác vụ MapReduce [15]
- Hue: Cung cấp giao diện đồ họa dựa trên trình duyệt để thực hiện các truy vấn
trong Hive [15]
- Mahout: Thư viện học máy và khai phá dữ liệu có khả năng mở rộng [15]
- Pig: Ngôn ngữ luồng dữ liệu cấp cao và thực thi để tính toán song song Đây là
môi trường lập trình mức cao hơn để viết các chương trình MapReduce [15]
- Spark: Công cụ tính toán nhanh và tổng quát cho dữ liệu Hadoop Spark cung cấp một mô hình lập trình đơn giản và hiệu quả hỗ trợ cho các ứng dụng về học máy, tính toán đồ thị,… [15]
- Sqoop: Chuyển đổi dữ liệu từ các cơ sở dữ liệu quan hệ sang HDFS [15]
- Zookeeper: Được sử dụng để quản lý đồng bộ cho hệ thống [15]
Trong khuôn khổ luận văn sẽ tìm hiểu về các thành phần HDFS, MapReduce,
Trang 27Hive và Sqoop
2.2 Hadoop Distributed File System (HDFS)
Hệ thống tập tin phân tán HDFS (Hadoop Distributed File System) tạo ra một nền tảng lưu trữ dữ liệu đáp ứng cho một khối lượng dữ liệu lớn [1] Hadoop cluster chạy HDFS được ứng dụng rộng rãi trên thế giới như: Yahoo, Facebook, Adode, Amazon,… Các cluster chạy HDFS với dung lượng khổng lồ đáp ứng các đòi hỏi về lưu trữ và xử lý của các hệ thống xử lý dữ liệu lớn với chi phí rẻ, độ tin cậy cao, có khả năng mở rộng và nâng cao hiệu suất hoạt động HDFS được thiết kế tương tự hệ thống tập tin phân tán, tuy nhiên cũng có một số khác biệt so với các hệ thống tập tin phân tán truyền thống:
- Hệ thống HDFS sẽ chạy trên các cluster với hàng trăm hoặc thậm chí hàng nghìn nút Các nút này được xây dựng nên từ các phần cứng thông thường, giá rẻ nên
tỷ lệ lỗi cao [1] Chất lượng và số lượng của các thành phần phần cứng như vậy sẽ tất yếu dẫn đến tỷ lệ xảy ra lỗi trên cluster sẽ cao Vì thế, HDFS cần có khả năng phát hiện lỗi, tự động phục hồi nếu có lỗi xảy ra
- HDFS có thể lưu trữ và xử lý các tập tin có kích thước lớn trở nên phổ biến Vì vậy, việc phân chia tập dữ liệu khổng lồ thành các tập tin có kích thước lớn sẽ là tối ưu hơn việc chia dữ liệu thành nhiều tập tin có kích thước nhỏ [1] Điều này giúp giảm thời gian truy xuất dữ liệu và đơn giản hoá việc quản lý các tập tin
- Các tập tin đều được thay đổi bằng cách cập nhật dữ liệu vào cuối tập tin và không thể thực hiện được thao tác ghi dữ liệu lên một vị trí ngẫu nhiên trong tập tin Một khi các tập tin đã được tạo, chúng sẽ trở thành tập tin chỉ đọc, và thường được đọc một cách tuần tự này sẽ góp phần tối ưu hoá hiệu suất [1]
2.2.1 Kiến trú HDFS
HDFS được xây dựng dựa trên kiến trúc master-slave Trên một cluster chạy HDFS, có duy nhất một Namenode và có một hay nhiều DataNode [6] Trong đó, Namenode đóng vai trò là máy chủ, chịu trách nhiệm duy trì thông tin về cấu trúc cây phân cấp các tập tin, thư mục của hệ thống tập tin và các metadata của hệ thống tập tin
Trang 28(Metadata mà Namenode lưu trữ gồm có File System namespace thể hiện tất các các tập tin, thư mục có trên hệ thống tập tin và quan hệ giữa chúng, thông tin để ánh xạ từ tập tin ra thành danh sách các khối dữ liệu, nơi lưu trữ các khối dữ liệu) [1] Khi lưu trữ, các tập tin sẽ được chia ra làm một hay nhiều khối dữ liệu và mỗi khối dữ liệu này
sẽ có một ID để nhận diện Các khối dữ liệu của cùng một tập tin sẽ có cùng kích thước và kích thước này được gọi là kích thước khối dữ liệu của tập tin đó Mỗi khối
dữ liệu của tập tin sẽ được lưu trữ thành ra nhiều bản sao khác nhau để có thể khôi phục dữ liệu nếu gặp lỗi đáp ứng được mục đích an toàn dữ liệu Các DataNode sẽ chịu trách nhiệm lưu trữ các khối thật sự của từng tập tin của hệ thống tập tin phân tán lên hệ thống tập tin cục bộ của DataNode
Hình 2.2 Kiến trú HDFS [6]
Namenode sẽ chịu trách nhiệm điều phối các thao tác truy cập (đọc/ghi dữ liệu) của máy phụ thuộc lên hệ thống HDFS Và tất nhiên, do các DataNode là nơi thật sự lưu trữ các khối dữ liệu của các tập tin trên HDFS, nên chúng sẽ là nơi trực tiếp đáp ứng các thao tác truy cập này Chẳng hạn như khi máy phụ thuộc của hệ thống muốn đọc 1 tập tin trên hệ thống HDFS, máy phụ thuộc này sẽ thực hiện một yêu cầu đến Namenode để lấy các metadata của tập tin cần đọc Từ metadata này nó sẽ biết được danh sách các khối dữ liệu của tập tin và vị trí của các DataNode chứa các bản sao của từng khối Máy phụ thuộc sẽ truy cập vào các DataNode để thực hiện các yêu cầu đọc
Trang 29các khối dữ liệu này [6]
2.2.2 Đọ t p tin từ HDFS
Để đọc tập tin từ HDFS, máy phụ thuộc sẽ gửi yêu cầu đọc tập tin đến NameNode Sau đó NameNode sẽ kiểm tra xem tập tin được yêu cầu đọc có tồn tại không, hoặc tập tin cần đọc có đang ở trạng thái “khoẻ mạnh” hay không Nếu tồn tại tập tin, NameNode sẽ gửi danh sách các khối dữ liệu của tập tin và địa chỉ các DataNode chứa các bản sao của khối này Tiếp theo, máy phụ thuộc sẽ kết nối tới DataNode, thực yêu cầu nhận khối dữ liệu cần đọc Máy phụ thuộc sẽ thực hiện việc đọc các khối dữ liệu lặp đi lặp lại cho đến khi khối dữ liệu cuối cùng của tập tin được đọc xong Trong quá trình một máy phụ thuộc đọc một tập tin trên HDFS, máy phụ thuộc sẽ trực tiếp kết nối và lấy dữ liệu từ các DataNode mà không cần qua NameNode Điều này sẽ làm giảm đi rất nhiều việc trao đổi dữ liệu giữa máy phụ thuộc với NameNode, khối lượng luân chuyển dữ liệu sẽ được trải đều ra khắp cluster
Do đó, cluster chạy HDFS có thể đáp ứng đồng thời nhiều máy phụ thuộc cùng thao
tác tại một thời điểm [1]
2.2.3 Ghi t p tin xuống HDFS
Muốn ghi tập tin xuống HDFS, máy phụ thuộc sẽ gửi yêu cầu đến NameNode tạo một tập tin rỗng (chưa có khối dữ liệu nào) lên File System Namespace NameNode sẽ quyết định các DataNode nào sẽ chứa các tập tin và bản sao của tập tin và gửi lại cho máy phụ thuộc Máy phụ thuộc sẽ chia tập tin thành các khối dữ liệu (mỗi khối sẽ có nhiều bản sao và được lưu trên các DataNode khác nhau) Mỗi khối dữ liệu sẽ đóng gói thành một packet Máy phụ thuộc gửi packet cho các DataNode khác nhau để lưu trữ các khối dữ liệu và bản sao của nó Sau khi lưu trữ được khối dữ liệu cuối cùng, DataNode sẽ gởi xác nhận tới máy phụ thuộc việc ghi dữ liệu thành công Trong quá trình ghi dữ liệu, nếu có bất kỳ một DataNode nào bị lỗi, máy phụ thuộc sẽ thực hiện việc ghi lại khối dữ liệu đó lên trên DataNode bị lỗi Sau khi tất cả các khối của tập tin đều đã đươc ghi lên các DataNode, NameNode sẽ cập nhật lại danh sách các khối dữ liệu của tập tin vừa tạo Trong quá trình ghi tập tin xuống HDFS, máy phụ thuộc sẽ
trực tiếp ghi dữ liệu lên các DataNode mà không cần phải thông qua NameNode [1]
Trang 302.3 MapReduce
MapReduce là nền tảng được Google công bố 2004, có thể coi MapReduce là một mô hình lập trình, hay một thuật giải MapReduce là mô hình xử lý phân tán giúp các ứng dụng có thể xử lý nhanh một lượng lớn dữ liệu Các dữ liệu này được đặt tại các máy tính phân tán Các máy tính này sẽ hoạt động song song độc lập với nhau Điều này giúp rút ngắn thời gian xử lý toàn bộ dữ liệu Có thể hiểu một cách đơn giản, MapReduce chia công việc xử lý thành nhiều công việc nhỏ, phân tán khắp các nút là các server thông thường [1], [4]
Ưu điểm của MapReduce:
- MapReduce có thể chạy trên các phần cứng thông thường, các máy chủ chạy MapReduce không cần phải là các máy tính có khả năng tính toán, lưu trữ và truy xuất mạnh mẽ Vì vậy, chi phí triển khai MapReduce sẽ rẻ hơn nên tạo cho các doanh nghiệp cơ hội xử lý các nguồn dữ liệu đồ sộ với chi phí thấp và thời gian nhanh hơn [4]
- Các giải thuật tính toán phân tán sẽ được đơn giản hóa vì MapReduce có thể tiến hành chạy song song trên các máy phân tán một cách chính xác và hiệu quả Do vậy, các nhà phát triển ứng dụng phân tán có thể tập trung nhiều hơn cho phần logic của ứng dụng, bỏ qua các chi tiết phức tạp của việc trao đổi dữ liệu giữa các cluster với nhau vì chúng hoạt động một cách độc lập, cũng như không phải theo dõi xử lý các tác vụ, xử lý lỗi
- Có thể thực hiện mô hình MapReduce trên nhiều ngôn ngữ như Java, C/ C++, Python,…
Tuy nhiên, MapReduce không phải là mô hình có thể áp dụng cho tất cả các bài toán Thực tế, MapReduce áp dụng tốt trong trường hợp cần xử lý một khối dữ liệu lớn bằng cách chia nó ra thành các mảnh nhỏ hơn và xử lý song song, nhưng trong một số trường hợp sẽ không thích hợp với MapReduce như: dữ liệu cần xử lý là tập hợp nhiều tập tin nhỏ, cần tìm kiếm nhanh trên dữ liệu lớn,…
MapReduce dựa trên cách tiếp cận chia để trị, tức là từ một công việc thì nó sẽ
Trang 31chia nhỏ thành các công việc con giống nhau Thời gian thực hiện mỗi việc con sẽ nhỏ hơn so với thời gian xử lý toàn bộ công việc Vì vậy, nếu chúng ta xử lý các việc con một cách song song thì quá trình xử lý sẽ tốt hơn, ít tốt thời gian hơn
Các tập tin đầu vào được biểu diễn dưới dạng một cặp (khóa/giá trị) Đầu tiên, khi có yêu cầu từ chương trình người dùng, dữ liệu được chia thành thành các split có dung lượng nhỏ hơn Sau đó sao chép chương trình 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 Để quá trình thực hiện các thao tác xử lý được thực hiện song song và đồng thời, MapReduce trải qua hai giai đoạn chính là map và reduce Ở bước map, các máy phụ thuộc tiếp nhận các split dữ liệu input và dùng hàm map để phân tích các cặp (khóa/ giá trị) để tạo ra một tập các cặp (khóa/ giá trị) trung gian khác được lưu tại vùng nhớ đệm Tiếp theo, ở giai đoạn reduce, các cặp dữ liệu trung gian được đưa đến các máy phụ thuộc tương ứng để hàm reduce xử lý tiếp theo
Ở giai đoạn này, các dữ liệu trung gian có cùng khóa sẽ được sắp xếp cùng một nhóm Sau khi hàm reduce được thực hiện hoàn tất thì kết quả là các cặp (khóa/ giá trị) thu được Cuối cùng người dùng sẽ có được toàn bộ kết quả của công việc [1], [4]
Hình 2.3 Mô hình MapRedu e Google [10]
Trong hình 2.3 các thao tác từ 1 đến 6 có chức năng như sau:
Trang 32(1) Thư viện MapReduce mà chương trình người dùng sử dụng chia các tập tin đầu vào thành các mảnh nhỏ hơn (16 MB đến 64 MB hoặc hơn) Sau đó, sao đó khởi động các chương trình được sao chép trên các máy tính phân tán [4]
(2) Máy chủ làm nhiệm vụ điều phối sự hoạt động quá trình thực hiện MapReduce trên các máy phụ thuộc Các máy phụ thuộc được gắn với từng máy thực hiện tác vụ map hoặc reduce [4]
(3) Máy máy chủ sẽ thực hiện phân phối các tác vụ map và reduce vào các máy phụ thuộc Máy phụ thuộc khi nhận được tác vụ map sẽ đọc dữ liệu mà nó nhận từ phân vùng dữ liệu đã gán cho nó và thực hiện hàm map Kết quả đầu ra là các cặp (khóa1, giá trị 1) trung gian Các cặp này được lưu tạm trên bộ nhớ đệm của các máy phụ thuộc [4]
(4) Sau khi thực hiện xong công việc map, các máy phụ thuộc làm nhiệm vụ chia các giá trị trung gian tương ứng các tác vụ reduce lưu xuống đĩa và thông báo kết quả,
vị trí lưu cho máy máy chủ [4]
(5) Máy chủ sẽ gán giá trị trung gian cho các máy phụ thuộc thực hiện hàm reduce và đưa ra kết quả cuối cùng [4]
(6) Máy chủ thông báo cho chương trình người dùng quá trình MapReduce đã hoàn tất, kết quả đầu ra được lưu trữ trên tập tin [4]
MapReduce được xây dựng dựa trên kiến trúc master-slave nghĩa là có một máy trong hệ thống đóng vai trò là máy chủ và các máy còn lại đóng vai trò của máy phụ thuộc Máy chủ quản lý toàn bộ quá trình thực thi công việc như: tiếp nhận công việc, phân rã công việc thành công việc con, và phân công các công việc con cho các máy phụ thuộc Còn máy phụ thuộc chỉ làm nhiệm vụ thực hiện nhiệm vụ map hoặc reduce
Hàm map: Người dùng đưa một cặp dữ liệu (khóa, giá trị) làm input cho hàm
map, và tùy vào mục đích của người dùng mà hàm map sẽ trả ra danh sách các cặp dữ liệu trung gian tương ứng [1]
Hàm reduce: Hệ thống sẽ gom nhóm tất cả giá trị theo dữ liệu trung gian từ các
dữ liệu ra của hàm map, để tạo thành tập các cặp dữ liệu với cấu trúc là khóa/giá trị