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

Nghiên cứu phương pháp tư vấn kết hợp dựa vào Hadoop Map Reduce (Luận văn thạc sĩ)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.7 MB, 74 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-------------------------------------------

Trần Thị Giang

NGHIÊN CỨU PHƯƠNG PHÁP TƯ VẤN KẾT
HỢP DỰA VÀO HADOOP - MAPREDUCE

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)

HÀ NỘI, NĂM 2018


HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

Trần Thị Giang

NGHIÊN CỨU PHƯƠNG PHÁP TƯ VẤN KẾT HỢP
DỰA VÀO HADOOP - MAPREDUCE

Chuyên ngành: Hệ thống thông tin
Mã số: 8.48.01.04

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. NGHUYỄN DUY PHƯƠNG

HÀ NỘI, NĂM 2018




i

LỜI CAM ĐOAN
Tôi cam đoan đề tài: “Nghiên cứu phương pháp tư vấn kết hợp dựa vào
Hadoop- MapReduce” là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn của
TS. Nguyễn Duy Phương.
Các kết quả, phân tích, kết luận trong luận văn thạc sỹ này (ngoài phần được
trích dẫn) đều là kết quả làm việc của tác giả, các số liệu nêu trong luận văn là trung
thực và chưa từng được công bố trong bất kỳ công trình nào khác.
Nếu sai tôi xin hoàn toàn chịu trách nhiệm.
Hà Nội, ngày 08 tháng 01 năm 2018
Tác giả

Trần Thị Giang


ii

LỜI CẢM ƠN
Lời đầu tiên cho em xin gửi lời cảm ơn chân thành đến các thầy, cô giáo thuộc
Khoa CNTT, Khoa QT&ĐT sau đại học thuộc Học viện Công nghệ Bưu chính viễn
thông đã tận tình giảng dạy, truyền đạt các nội dung kiến thức, kinh nghiệm quý báu
trong suốt quá trình em theo học tại Học viện. Với những bài học quý giá, sự kèm cặp,
chỉ bảo và truyền thụ tâm huyết của các thầy, cô đã giúp cá nhân em hoàn thiện hơn
nữa hệ thống kiến thức chuyên ngành, phục vụ tốt hơn yêu cầu công tác của đơn vị
đồng thời nâng cao hơn vốn tri thức của bản thân.
Đặc biệt, em xin gửi lời cảm ơn trân thành tới thầy hướng dẫn khoa học TS.
Nguyễn Duy Phương đã tận tình chỉ bảo, hướng dẫn, cung cấp tài liệu và các nội dung

kiến thức quý báu, đồng thời có sự định hướng đúng đắn giúp em hoàn thành được
luận văn này.
Em cũng xin được bày tỏ sự cảm ơn sâu sắc tới gia đình, đồng nghiệp đã tạo
điều kiện, dành sự ủng hộ đối với bản thân em để có nhiều thời gian cho khóa học, đạt
được những kết quả khả quan trong quá trình học tập. Đồng thời xin chân thành cảm
ơn tập thể lớp Cao học Hệ thống thông tin – Đợt 1 năm 2016 đã đồng hành, khích lệ và
chia sẻ trong suốt quá trình học tập.
Trong quá trình thực hiện luận văn, mặc dù bản thân đã cố gắng, chủ động
trong việc sưu tầm tài liệu, củng cố kiến thức… tuy nhiên chắc chắn luận văn vẫn còn
nhiều thiếu sót. Em rất mong nhận được sự chỉ dạy, đóng góp tận tình của các thầy, cô
để luận văn của em được hoàn thiện hơn nữa và có tính ứng dụng cao hơn trong thực
tiễn.
Xin trân trọng cảm ơn!
Hà Nội, ngày 08 tháng 01 năm 2018
Học viên

Trần Thị Giang


iii

MỤC LỤC
LỜI CAM ĐOAN ....................................................................................................... 1
LỜI CẢM ƠN ........................................................................................................... ii
MỤC LỤC ................................................................................................................ iii
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT ........................................... v
DANH MỤC CÁC BẢNG....................................................................................... vi
DANH MỤC CÁC HÌNH ..................................................................................... viii
MỞ ĐẦU .................................................................................................................... 1
CHƯƠNG 1 -TỔNG QUAN VỀ HADOOP & MAHOUT ................................... 5

1.1. Giới thiệu về Hadoop ..................................................................................... 5
1.2. Mahout ............................................................................................................ 7

1.2.1. Tổng quan Apache Mahout ............................................................. 8
1.2.2. Các kỹ thuật học máy trong Mahout ............................................... 8
1.3. Giới thiệu MapReduce ................................................................................. 11

1.3.1. Giới thiệu mô hình tính toán MapReduce ..................................... 11
1.3.2. Các thành phần trong MapReduce ................................................ 12
1.3.3. Cơ chế hoạt động của MapReduce................................................ 13
1.3.4. Phát triển ứng dụng theo mô hình MapReduce với Hadoop
MapReduce.............................................................................................. 17
Kết luận chương1: ............................................................................................... 19
CHƯƠNG 2 - PHƯƠNG PHÁP TƯ VẤN ........................................................... 20
DỰA VÀO MAPREDUCE .................................................................................... 20
2.1. Giới thiệu vấn đề .......................................................................................... 20
2.2. Phương pháp tư vấn kết hợp dựa vào người dùng bằng Mapreduce ........ 22

2.2.1. Kết hợp hồ sơ người dùng vào ma trận đánh giá .......................... 22
2.2.2. Thuật toán tư vấn kết hợp dựa vào người dùng ............................ 25
2.2.3. Áp dụng MapReduce cho hệ tư vấn dựa vào người dùng............. 27
2.3. Phương pháp tư vấn kết hợp dựa vào sản phẩm bằng Mapreduce ........... 35

2.3.1. Kết hợp hồ sơ sản phẩm vào ma trận đánh giá ............................. 35
2.3.2. Phương pháp Item-Based dựa vào ma trận đánh giá mở rộng...... 38
2.3.3. Áp dụng MapReduce cho phương pháp Itembased ...................... 40


iv


Kết luận chương 2: .............................................................................................. 50
CHƯƠNG 3 -THỰC NGHIỆM VÀ KẾT QUẢ .................................................. 50
3.1. Dữ liệu thực nghiệm .................................................................................... 50
3.2 Độ đo thực nghiệm ........................................................................................ 51
3.3. Phương pháp thử nghiệm ............................................................................ 52

3.3.1. Cách phân chia tập dữ liệu huấn luyện và kiểm nghiệm .............. 52
3.3.2. Cấu hình các máy thực nghiệm ..................................................... 52
3.4. Kết quả thử nghiệm ...................................................................................... 52

3.4.1. Áp dụng Interaction cut ................................................................. 52
3.4.2. Thử nghiệm giá trị trung bình sai số tuyệt đối MAE .................... 53
3.4.3. Thử nghiệm giá trị trung bình bình phương sai số RMSE............ 55
3.4.4. Thử nghiệm thời gian chạy ........................................................... 58
3.5. Đánh giá và so sánh ..................................................................................... 59

3.5.1. Đánh giá hai phương pháp item-based và user-based................... 59
3.5.2. Đánh giá phương pháp tư vấn sử dụng MapReduce và MyMedialite
................................................................................................................. 59
Kết luận chương 3: .............................................................................................. 59
KẾT LUẬN ............................................................................................................. 61
DANH MỤC TÀI LIỆU THAM KHẢO .............................................................. 63


v

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
Từ viết tắt

Tiếng Anh


Tiếng Việt

HDFS

Hadoop Distributed Files System

Hệ thống file phân tán

GFS

Google File System

Hệ thống file google

MAE


vi

DANH MỤC CÁC BẢNG
Bảng 2.1. Ma trận đánh giá của lọc cộng tác............................................................ 21
Bảng 2.2. Ma trận đặc trưng C ................................................................................. 21
Bảng 2.3. Ma trận đặc trưng T.................................................................................. 21
Bảng 2.4. Ma trận đánh giá (ví dụ 2.1) ..................................................................... 22

Bảng 2.5 Ma trận đặc trưng.............................................................................23
Bảng 2.6. Ví dụ 2.1. Giá trị Item(x,s) cho người dùng x. ........................................ 24
Bảng 2.7. Ví dụ 2.1. Ma trận đánh giá đặc trưng sản phẩm ..................................... 25
Bảng 2.8. Ví dụ 2.1. Ma trận mở rộng......................................................................26

Bảng 2.9. Ví dụ 2.2. Ma trận đầu vào....................................................................... 27
Bảng 2.10. Tập dữ liệu ............................................................................................. 31
Bảng 2.11. Tập dữ liệu ví dụ 2.3 sau định dạng ....................................................... 31
Bảng 2.12. Ví dụ 2.3. Đầu ra của Phân tích dữ liệu Mapper sau khi sắp xếp .......... 32
Bảng 2.13. Ví dụ 2.3. Đầu ra của Phân tích dữ liệu Reducer ................................... 32
Bảng 2.14. Ví dụ 2.3. Đầu ra của Độ tương tự Mapper sau khi sắp xếp.................. 33
Bảng 2.15. Ví dụ 2.3. Đầu ra của Độ tương tự Reducer .......................................... 33
Bảng 2.16. Ví dụ 2.3. Đầu ra của Tìm hàng xómMapper chưa sắp xếp .................. 34
Bảng 2.17. Ví dụ 2.3. Đầu ra của Tìm hàng xóm Mapper sau khi sắp xếp.............. 34
Bảng 2.18. Ví dụ 2.3. Đầu ra của Tìm hàng xóm Reducer ...................................... 34
Bảng 2.19. Ví dụ 2.4. Ma trận đánh giá ................................................................... 23
Bảng 2.20. Ma trận đặc trưng ................................................................................... 24
Bảng 2.21. Giá trị User(y,q) của sản phẩm y. .......................................................... 24
Bảng 2.22 Ma trận đánh giá sản phẩm của đặc trưng người dùng ........................... 24
Bảng 2.23. Ví dụ 24- Ma trận đánh giá mở rộng. .................................................... 24
Bảng 2.24. Ví dụ 2.5. Ma trận đánh giá mở rộng ..................................................... 40
Bảng 2.25. Ví dụ 2.6. Đầu ra của DataSplitMapper sau khi sắp xếp ....................... 46
Bảng 2.26. Ví dụ 2.6. Đầu ra của Phân tích dữ liệu Reducer ................................... 46
Bảng 2.27. Ví dụ 2.6. Đầu ra của Tính độ tương tự Mapper sau khi sắp xếp .......... 47
Bảng 2.28. Ví dụ 2.6. Đầu ra của Tính độ tương tự Reducer ................................... 47


vii

Bảng 2.29. Ví dụ 2.6. Đầu ra của Cơ sở người dùng Mapper sau khi sắp xếp ........ 48
Bảng 2.30. Ví dụ 2.6. Đầu ra của Cơ sở người dùng Reducer ................................. 48
Bảng 2.31. Ví dụ 2.6. Đầu ra của Cơ sở sản phẩm Reducer .................................... 48
Bảng 2.32. Ví dụ 2.6. Đầu ra của Tìm hàng xóm Mapper sau khi sắp xếp.............. 49
Bảng 3.1. Giá trị MAE với interaction cut là 100 .................................................... 53
Bảng 3.2. Giá trị MAE với interaction cut là 200 .................................................... 54

Bảng 3.3. Giá trị MAE với interaction cut là 400 .................................................... 54
Bảng 3.4. Giá trị RMSE với interaction cut là 100 .................................................. 55
Bảng 3.5. Giá trị RMSE với interaction cut là 200 .................................................. 56
Bảng 3.6: Giá trị RMSE với interaction cut là 400 .................................................. 57
Bảng 3.7. Thời gian chạy của hai phương pháp (s) .................................................. 58


viii

DANH MỤC CÁC HÌNH
Hình 1.2. Kiến trức tổng quan một Hadoop cluster ................................................... 6
Hình 1.3. Kiến trúc Mahout ........................................................................................ 8
Hình 1.4. Mô hình MapReduce của Google ............................................................. 12
Hình 1.5. MapReduce nhận xử lý yêu cầu từ Client ................................................ 12
Hình 1.6. Cơ chế hoạt động của MapReduce ........................................................... 14
Hình 1.7. Cơ chế hoạt động của Map task................................................................ 14
Hình 1.8. TaskTracker hoàn thành Map task ........................................................... 15
Hình 1.9. Cơ chế hoạt động của Reduce task ........................................................... 16
Hình 1.10. TaskTracker hoàn thành Reduce task ..................................................... 17
Hình 1.11. Phát triển ứng dụng MapReduce trên Hadoop ....................................... 18
Hình 2.1. Áp dụng MapReduce cho kỹ thuật lọc cộng tác dựa vào người dùng ..... 28
Hình 3.1. Mối quan hệ giữa số lượng đánh giá và tỉ lệ người dùng trong tập
MovieLens 1M[13] ................................................................................................... 53
Hình 3.2. Giá trị MAE với interaction cut bằng 100 ................................................ 54
Hình 3.3. Giá trị MAE với interaction cut là 200 ..................................................... 54
Hình 3.4. Giá trị MAE với interaction cut là 200 ..................................................... 55
Hình 3.5. Giá trị RMSE với interaction cut là 100 ................................................... 56
Hình 3.6. Giá trị RMSE với interaction cut là 200 ................................................... 57
Hình 3.7. Giá trị RMSE với interaction cut là 400 ................................................... 58
Hình 3.8. Thời gian chạy của hai phương pháp (s) .................................................. 58



1

MỞ ĐẦU
1. Lý do chọn đề tài
Trong thời đại phát triển của ngành công nghệ máy tính, số lượng người sử
dụng máy tính và các tài nguyên trực tuyến để xử lý công việc, giải trí... ngày càng
tăng nhanh. Theo ước tính đến 2014, đã có 37% dân số Việt Nam sử dụng Internet
(Theo công nghệ thông tin và Truyền thông Việt Nam), số lượng người gia nhập
cộng đồng mạng trên thế giới cuối năm 2014 là khoảng 2.7 tỷ người. Hệ quả tất yếu
sự gia tăng lượng người sử dụng là khối lượng dữ liệu số đang phát triển với tốc độ
chóng mặt. Theo thống kê của IDC tổng dung lượng dữ liệu số được lưu trữ năm
2006 khoảng 0.18 zettabytes thì con số này năm 2012 đã là 2.7 zettabytes.
Hiện nay, số lượng trang web có mặt trên Internet đã lên tới hàng tỷ trang.
Điều này đã đặt ra cho các nhà phát triển Search Engine một số thách thức lớn.
- Thứ nhất, đó là sự giới hạn về khả năng lưu trữ của ổ cứng. Giả sử mỗi
trang web có kích thước trung bình 10KB, thì 1 tỷ trang web, ta cần 10 Terabyte
(TB) để lưu trữ. Với toàn bộ khối lượng web trên Internet, khối lượng lưu trữ cần
tới hàng petabyte (PB), vượt quá khả năng lưu trữ của một đĩa cứng thông thường.
- Thứ hai, cho dù vượt qua được giới hạn về dung lượng, thì việc truy xuất
một khối lượng dữ liệu đồ sộ như vậy một cách tuần tự (vì trên một đĩa đơn) sẽ rất
mất thời gian vì giới hạn về tốc độ đọc đĩa.
Do vậy, bắt buộc chúng ta phải lưu trữ dữ liệu lên trên nhiều đĩa cứng thay vì
chỉ một. Điều này giúp cải thiện tốc độ truy xuất dữ liệu vì ta có thể tiến hành
đọc/ghi một cách song song lên các đĩa, mang lại lợi thế về khả năng lưu trữ và tốc
độ truy xuất dữ liệu. Tuy nhiên, việc duy trì một hệ thống phân tán với nhiều đĩa
cứng đã dẫn đến một số vấn đề cần được giải quyết. Đầu tiên, là vấn đề hỏng hóc
phần cứng. Do dữ liệu được lưu trên nhiều phần cứng khác nhau, nên khả năng một
(hay nhiều) phần cứng xảy ra hỏng hóc cũng tăng lên đáng kể. Một cách giải quyết

vấn đề này mà ta có thể thấy ngay, đó là lưu trữ trùng lặp các mẫu dữ liệu lên nhiều
đĩa cứng khác nhau. Vấn đề thứ hai là việc phân tích dữ liệu đôi khi cần truy đọc dữ
liệu từ nhiều đĩa cứng khác nhau. Tức là dữ liệu được đọc từ một đĩa có thể cần


2

được kết hợp với dữ liệu từ bất kỳ đĩa nào khác trên hệ thống. Các hệ thống phân
tán thường cho phép kết hợp dữ liệu từ nhiều nguồn khác nhau, tuy nhiên làm được
điều này một cách chính xác là không dễ chút nào.
Để giải quyết vấn đề này, rất nhiều công nghệ đã ra đời nhắm thực hiện tính
toán và mở rộng việc xử lý dữ liệu theo mô hình song song và khả năng chịu lỗi cao
trên một số lượng lớn máy tính. Các máy tính thực hiện tính toán độc lập với nhau
và không ảnh hưởng bởi việc xảy ra lỗi ở máy khác, giúp tăng hiệu năng tính toán
so với việc chỉ dùng một máy, ngoài ra sử dụng mô hình tính toán song song còn
giúp giảm giá thành.
Một trong các công nghệ được sử dụng phổ biến để tối ưu hóa việc tính toán
song song là Hadoop – MapReduce. MapReduce chia việc xử lý thành nhiều khối
công việc nhỏ, phân tán khắp các nút tính toán (tiêu biểu là các server thông
thường), sau đó tổng hợp để thu được kết quả. Đề tài: “Nghiên cứu phương pháp
tư vấn kết hợp dựa vào Hadoop - MapReduce” được thực hiện trong khuôn khổ
luận văn thạc sĩ ngành CNTT nhằm nghiên cứu các framework của Mahout vào
việc xây dựng ứng dụng trong hệ tư vấn.

2. Tổng quan về vấn đề nghiên cứu
Hiện nay, Hadoop được sử dụng rộng rãi trong các ứng dụng big data trong
công nghiệp, ví dụ như lọc thư rác, tìm kiếm mạng, phân tích luồng click. Ngoài ra,
các nghiên cứu học thuật đáng kể hiện nay cũng dựa trên Hapdoop.
Trong giai đoạn bùng nổ thông tin trên Internet hiện nay, kích thước dữ liệu tăng lên
nhanh chóng làm cho việc tính toán trên một máy tính theo mô hình truyền thống

rất kém hiệu quả và rất chậm. Ngoài ra, tốc độ nâng cấp phần cứng là rất chậm so
với tốc độ tăng trưởng dữ liệu làm cho việc nâng cấp phần cứng tốn kém hơn. Đây
chính là vấn đề khi xây dựng hệ tư vấn áp dụng cho các tập dữ liệu lớn. Để giải
quyết vấn đề này, có thể thực hiện lưu trữ dữ liệu trên nhiều máy khác nhau sử dụng
Hapdoop và thực hiện mô hình tính toán song song với MapReduce. Việc áp dụng
Hadoop và MapReduce sẽ mang lại nhiều lợi ích như: tăng tính hiệu năng của việc
tính toán khi tận dụng được tài nguyên phần cứng để thực hiện tính toán song song,


3

tăng khả năng chịu lỗi khi việc tính toán không phụ thuộc vào việc xảy ra lỗi trên
một máy tính.
Hệ tư vấn là hệ thống có khả năng cung cấp thông tin phù hợp và gỡ bỏ
thông tin không phù hợp cho mỗi người dùng các dịch vụ Internet trực tuyến. Hệ tư
vấn được xây dựng dựa vào ba phương pháp lọc thông tin cơ bản: lọc cộng tác, lọc
nội dung và lọc kết hợp. Cũng giống như các vấn đề khác trong học máy, xử lý
ngôn ngữ tự nhiên, xử lý ảnh, hệ tư vấn cũng đối diện với vấn đề dữ liệu lớn. Chính
vì vậy, trọng tâm của đề tài là xử lý vấn đề dữ liệu lớn của hệ tư vấn dựa vào nền
tảng của Hadoop MapReduce.
Hiện tại, thư viện Mahout của MapReduce đã cung cấp một số Engine chuẩn
cho hệ tư vấn đã được đề xuất trong [3]. Tuy vậy, các engine cho hệ tư vấn kết hợp
vẫn còn đang trong quá trình thử nghiệm. Trong đề tài này em mong muốn xây
dựng được một Engine cho hệ tư vấn kết hợp làm kết quả nghiên cứu.

3. Mục đích nghiên cứu
-

Nghiên cứu công nghệ Hadoop MapReduce ứng dụng trong xử lý dữ liệu
lớn.


-

Nghiên cứu các phương pháp tư vấn đã được xây dựng trong Mahout.

-

Mở rộng các kỹ thuật xây dựng trong Mahout cho hệ tư vấn kết hợp.

4. Đối tượng và phạm vi nghiên cứu
-

Đối tượng nghiên cứu: Công nghệ Hapdoop MapReduce và hệ tư vấn kết
hợp.

-

Phạm vi nghiên cứu: Công nghệ Hapdoop MapReduce, thư viện Mahout và
các phương pháp kết hợp đã được đề xuất trong [4].

5. Phương pháp nghiên cứu
-

Phương pháp nghiên cứu lý thuyết: Nghiên cứu các phương pháp xây dựng
hệ tư vấn: phương pháp tư vấn cộng tác, tư vấn nội dung đã được cung cấp
trong thư viện Mahout của MapReduce. Nghiên cứu và xây dựng phương
pháp tư vấn kết hợp bằng MapReduce.


4


-

Phương pháp thực nghiệm: thử nghiệm trên các tập dữ liệu có kích thước
khác nhau đã được cộng đồng sử dụng. Ngoài ra, xây dựng bộ dữ liệu có sử
dụng tài nguyên của trong mạng xã hội. Môi trường thực nghiệm được thực
hiện tại Trung tâm tính toán hiệu năng cao của Đại học Khoa học tự nhiên.

6. Bố cục luận văn
Luận văn có bố cục gồm: Phần mở đầu, 3 chương chính, phần kết luận, tài
liệu tham khảo và phụ lục. Được bố trí theo thứ tự:
- Mở đầu.
- Chương 1:Tổng quan về Hadoop và Mahout
- Chương 2: Phương pháp tư vấn dựa vào MapReduce
- Chương 3: Thực nghiệm và kết quả.
- Kết luận.
- Tài liệu tham khảo.


5

CHƯƠNG 1 -TỔNG QUAN VỀ HADOOP & MAHOUT
1.1. Giới thiệu về Hadoop
Theo Apache Hadoop định nghĩa: “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. Hadoop hiện thực mô hình Map/Reduce, đây là mô hình mà ứng
dụng sẽ chia nhỏ ra thành nhiều phân đoạn khách 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 một 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ả
Map/Reduce 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” [9].
Wikipedia định nghĩa: “Hadoop là một framework nguồn mở viết bằng Java
cho phép phát triển các ứng dụng phân tán có cường độ dữ liệu lớn một cách miễn
phí. Nó cho phép các ứng dụng có thể làm việc với hàng ngàn node khác nhau và
hàng petabyte dữ liệu. Hadoop được phát triển dựa trên ý tưởng từ các công bố của
Google về mô hình MapReduce và hệ thống file phân tán Google File System
(GFS)” [9]. Ta có thể coi:
- Hadoop là một framework cho phép phát triển các ứng dụng phân tán
- Hadoop được 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ác Java lẫn một số ngôn ngữ lập
trình khác như C++, Python, Perl.
- Hadoop cung cấp một số phương tiện lưu trữ dữ liệu phân tán trên nhiều
node, hỗ trợ tối ưu hóa lưu lượng mạng, đó là hệ thống file phân tán Hadoop
(Hadoop Distributed File System - HDFS). HDFS che giấu tất cả các thành phần
phân tán, các nhà phát triển ứng dụng phân tán sẽ chỉ thấy HDFS như một hệ thống
file cục bộ thông thường.
- Hadoop giúp các nhà phát triển ứng dụng phân tán tập trung tối đa vào
phần logic của ứng dụng, bỏ qua được một số phần chi tiết kỹ thuật phân tán bên
dưới (phần này do Hadoop tự động quản lý).


6

- Hadoop là Linux – based. Điều này có nghĩa là Hadoop chỉ chạy trên môi
trường Linux.
 Cấu trúc của một Hapdoop Cluster
HDFS và MapReduce là hai thành phần quan trọng chính của một Hadoop
cluster. Nhìn chung, kiến trúc của Hadoop là kiến trúc master-slave, và cả hai thành
phần HDFS và MapReduce đều tuân theo kiến trúc Master-slave này. Kiến trúc một
Hadoop cluster như hình sau:


0.1Hình 1.2. Kiến trức tổng quan một Hadoop cluster

Trên một Hadoop cluster, có duy nhất một node chạy Namenode, một node
chạy JobTracker (NameNode và Jobtracker có thể nằm trên cùng một máy vật lý,
tuy nhiên các cluster thật sự với hàng trăm, hàng nghìn node thì thường phải tách
riêng NameNode và JobTracker ra các máy vật lý khác nhau). Có nhiều slave node,
mỗi slave node thường đóng 2 vai trò: một là DataNode, hai là TaskTracker.
NameNode và DataNode chịu trách nhiệm vận hành hệ thống file phân tán HDFS.
NameNode: đóng vai trò master của một hệ thống HDFS, quản lý các metadata của hệ thống HDFS như file system space, danh sách các file trên hệ thống và


7

các block id tương ứng của từng file, quản danh sách slave và tình trạng hoạt động
của các DataNode (live hay dead) thông qua các heart, điều hướng quá trình đọc/ghi
dữ liệu từ client lên các DataNode.
DataNode: chứa các block dữ liệu thực sự của các file trên HDFS, chịu trách
nhiệm đáp ứng các yêu cầu đọc/ghi dữ liệu từ client, đáp ứng các yêu tạo/xóa các
block dữ liệu từ NameNode. JobTracker và TaskTracker chịu trách nhiệm duy trì
thành phần MapReduce, nhận và thực thi các MapReduce Job.
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. Vai trò cụ thể như sau:
JobTracker: tiếp nhận các yêu cầu thực thi các MapReduce job, phân chia
job này thành các 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 task của TaskTracker và phân công lại nếu cần. JobTracker cũng
quản lý danh sách các node TaskTracker và tình trạng của từng node thông qua
hearbeat.
TaskTracker: nhận các task từ JobTracker và thực hiện task.
Ngoài ra trên một Hadoop cluster còn có SecondaryNameNode


SecondaryNameNode: 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

1.2. Mahout
Chúng ta đang sống ở trong một thế giới mà thông tin luôn có sẵn. Mặc dù
các thông tin được giảm tải nhưng thỉnh thoảng chúng trở nên khó khăn để quản lý
đối với chúng ta. Hãy tưởng tượng khối lượng dữ liệu và ghi lại của một số trang
mạng phổ biến như (Facebook, Twitter, Youtube) phải thu thập và quản lý hàng
ngày. Các dữ liệu này không phải hiếm, mà ngay cả với các trang mạng ít được biết
đến cũng nhận được số lượng thông tin hàng loạt. Thông thường, chúng ta sẽ quay
lại các thuật toán khai thác dữ liệu để phân tích các dữ liệu lớn này để xác định xu
hướng và đưa ra kết quả. Tuy nhiên, thực tế không có thuật toán khai thác dữ liệu
nào đủ hiệu quả để xử lý các tập dữ liệu lớn và cung cấp kết quả nhanh chóng, trừ
các nhiệm vụ tính toán chạy trên nhiều máy được phân phối qua đám mây. Bây giờ,


8

chúng ta có các khuân khổ mới cho phép chúng ta chia công việc tính toán thành
nhiều phân đoạn và chạy từng phần phân đoạn đó trên một số máy khác. Mahout là
một khuân khổ khai thác dữ liệu thông thường chạy cùng cơ sở hạ tầng Hadoop ở
chế độ nền để quản lý lượng dữ liệu lớn khổng lồ.

1.2.1. Tổng quan Apache Mahout
a) Tổng quan Apache Mahout
Apache Mahout là một dự án mã nguồn mở mới của Apache Software
Foundation (ASF-Quỹ phần mềm Apache) với mục tiêu chính là tạo các thuật toán
học máy có khả năng mở rộng, các thuật toán này là miễn phí sử dụng theo giấy
phép Apache. Dự án này đang bước vào năm thứ hai của mình, với bản phát hành

công khai trong phạm vi của nó. Mahout bao gồm các việc thực hiện để phân cụm,
phân loại, CF và lập trình tiến hóa. Hơn nữa, nó khéo léo sử dụng thư viện Apache
Hadoop để cho phép Mahout mở rộng hiệu quả trong đám mây này.
b) Kiến trục Apache Mahout

0.1Hình 1.3. Kiến trúc Mahout

Ứng dụng học máy truy cập API sẽ cung cấp hỗ trợ các kĩ thuật như: Phân
cụm (Clustering), phân loại (Classification), và khuyến nghị (Recommendation).
Text Preprocessing (Apache Lucene): ứng dụng đòi hỏi bộ tiền xử lý (như
ngăn chặn loại bỏ từ) để nhập văn bản, nó có thể đạt được với Apache Lucene.
Apache Hadoop cung cấp cách xử lý dữ liệu và lưu trữ để cho phép khả năng mở
rộng. Ngoài ra việc tối ưu hóa hiệu suất bằng cách sử dụng Java Collections và bộ
thư viện: Mahout – Math. Thư viện Mahout – integration chứa các tiện ích như hiển
thị dữ liệu và kết quả.

1.2.2. Các kỹ thuật học máy trong Mahout
a) Mahout cho học máy: Học máy là môt lĩnh vực của trí tuệ nhân tạo, đề
cập tới các kỹ thuật cho phép các máy tính cải thiện kết quả đầu ra của chúng dựa


9

trên kinh nghiệm có trước. Vấn đề đặt ra là chúng ta rất khó để đáp ứng tất cả các
quyết định dựa trên tất cả các đầu vào có thể. Vậy nên, để giải quyết vấn đề này thì
các thuật toán được phát triển. Các thuật toán này xây dựng kiến thức từ dữ liệu cụ
thể và kinh nghiệm trong quá khứ với các nguyên tắc thống kê, lý thuyết xác suất,
logic, tối ưu hóa tổ hợp, tìm kiếm, tăng cường học tập, và lý thuyết kiểm soát.
Các thuật toán đã phát triển tạo thành nần tảng cho nhiều ứng dụng khác
nhau như:

- Xử lý tầm nhìn
- Xử lý ngôn ngữ
- Dự báo (ví dụ: xu hướng thị trường chứng khoán)
- Nhận dạng mẫu
- Trò chơi
- Khai thác dữ liệu
- Hệ thống chuyên gia
- Robotics
Có một số cách để thực hiện các kỹ thuật học máy nhưng phương pháp được
sử dụng phổ biến nhất hiện này là học máy có giám sát và học máy không giám sát.
Học máy có giám sát: Học máy có giám sát được giao nhiệm vụ học một
chức năng từ dữ liệu huấn luyện được ghi nhãn để dự đoán giá trị của bất kỳ đầu
vào hợp lệ nào. Các ví dụ thường gặp của học có giám sát gồm việc phân loại các
email là thư rác, ghi nhãn các trang web theo thể loại của chúng và nhận dạng chữ
viết. Nhiều thuật toán được sử dụng để tạo những trình học có giám sát, phổ biến
nhất là các mạng thần kinh, Support Vector Machines (SVMs – Các máy Vector hỗ
trợ) và các trình phân loại Naivea Bayes.
Học máy không giám sát: Học máy không giám sát được giao nhiệm vụ có
ý nghĩa về dữ liệu mà không có ví dụ bất kỳ nào là đúng hay sai. Nó hầu như
thường được sử dụng để phân cụm đầu vào tương tự thành các nhóm hợp lý. Nó
cũng có thể dùng để giảm số lượng chiều trong một tập dữ liệu để chỉ tập trung vào
các thuộc tính có ích nhất hoặc để phát hiện các xu hướng. Các cách tiếp cập phổ


10

biến để học không giám sát gồm k-means, phân cụm theo phân cấp và bản đồ tự tổ
chức.
b) Mahout cho phân cụm: Phân cụm (Clustering) được sử dụng để tạo thành
các nhóm dữ liệu tương tự dựa trên các đặc điểm phổ biến. Phân cụm là hình thức

học tập không được giám sát. Phương pháp phân cụm thực hiện thông qua dữ liệu
đầu vào hoàn toàn dựa trên các đặc điểm của dữ liệu, nó sẽ quyết định theo cụm nào
nó nên được nhóm lại. Dựa vào các tập dữ liệu lớn, cho dù chúng là văn bản hoặc
số, để tự động nhóm với nhau, hoặc phân cụm, các mục tương tự thường rất có ích.
Ví dụ, căn cứ vào đầu ra từ bộ cảm biến trên máy trên toàn bộ thời gian, bạn có thể
nhóm các kết quả đầu ra để xác định hoạt động bình thường so với hoạt động có vấn
đề, vì các hoạt động bình thường sẽ nhóm tất cả lại với nhau và các hoạt động bất
thường ở một nhóm khác. Có nhiều cách tiếp cận để tính toán cụm, mỗi cụm có sự
thỏa hiệp riêng của mình. Một số cách tiếp cận thực hiện từ dưới lên, xây dựng các
cụm lớn hơn từ cái nhỏ hơn, trong khi có những cách khác lại chia một cụm lớn hớn
thành nhiều cụm nhỏ hơn càng tốt. Cả hai đều có tiêu chuẩn để thoát ra khỏi quá
trình này tại một số điểm trước khi chúng phân ra thành một sự biểu diễn cụm tầm
thường (Tất cả các mục trong một cụm hoặc tất cả các mục trong một cụm riêng của
chúng). Các cách tiếp cận phổ biến gồm phân cụm K-means và phân cụm theo hệ
thống phân cấp.

c) Mahout cho phân loại: Mục tiêu của sự phân loại (thường được gọi là
phân lớp -classification) là để ghi nhận các tài liệu vô hình, theo đó nhóm chúng lại
với nhau. Nhiều cách tiếp cận phân loại theo cách hoc máy tính toán một loạt các số
liệu thống kê để kết hợp các đặc tính của một tài liệu với nhãn cụ thể, vì thế tạo một
mô hình có thể được sử dụng sau này để phân loại các tài liệu vô hình. Ví dụ, một
cách tiếp cận đơn giản cho việc phân loại có thể theo dõi các từ có liên quan với
một nhãn, cũng như số lần những từ được nhìn thấy với một nhãn nhất định. Sau đó,
khi một tài liệu mới được phân loại, các từ trong tài liệu này được tìm kiếm trong
mô hình này, các khả năng xảy ra được tính toán và kết quả tốt nhất được đưa ra,
thường là cùng với một điểm số cùng với sự tin tưởng là kết quả chính xác.


11


Các đặc tính phân loại có thể gồm các từ, các trọng số đối với những từ đó
(ví dụ: dự trên tần suất), các phần của bài viết,… Tất nhiên, các đặc tính thực sự có
thể là bất cứ điều gì đó trợ giúp liên kết một tài liệu với các nhãn và có thể được tích
hợp vào thuật toán.
d) Mahout cho hệ tư vấn: Hệ tư vấn là một kỹ thuật phổ biến cung cấp các
khuyến cáo gần với thông tin người dùng như mua hàng, nhấp chuột và cấp hạng
trước đó.
- Amazon sử dụng kỹ thuật này để hiển thị một danh sách các mục được
được đề xuất mà bạn có thể quan tâm, thu thập thông tin từ các hành động trong quá
khứ của bạn. Có các công cụ giới thiệu hoạt động đằng sau Amazon để nắm bắt các
thông tin của người dùng và giới thiệu các mục được chọn dựa trên các hoạt động
trước đó của bạn.
- Facebook sử dụng kĩ thuật này để xác định và giới thiệu “Những người bạn
có thể biết trong danh sách”.
Trong luận văn này, em không sử dụng các phương pháp đã được giới thiệu
trong Mahout mà tập trung phát triển phương pháp tư vấn kết hợp đã được đề xuất
trong [2].

1.3. Giới thiệu MapReduce
1.3.1. Giới thiệu mô hình tính toán MapReduce
Google đã phát triển thành công mô hình MapReduce, là mô hì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. Nói một cách đơn
giản hơn, mô hình này sẽ 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 con để 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, sau đó thu thập lại các kết quả. Với
mô hình này, các doanh nghiệp đã cải thiện được đáng kể về hiệu suất xử lý tính
toán trên dữ liệu lớn, chi phí đầu tư rẻ và độ an toàn cao.


12


0.1Hình 1.4. Mô hình MapReduce của Google

MapReduce là một framework cho phép lập trình viên viết các chương trình
xử lý lượng lớn dữ liệu một cách song song thông qua môi trường phân tán.
MapReduce là mô hình lập trình dựa trên key – value, chương trình sẽ đọc vào tập
key – value và trả về tập key – value mới sau khi xử lý [4].

1.3.2. Các thành phần trong MapReduce
Trong mô hình MapReduce của Hadoop, Hadoop định nghĩa MapReduce Job
(job) là một đơn vị nghiệp vụ mà người dùng muốn thực hiện, kèm theo đó là dữ
liệu input. Ví dụ: tính số lần xuất hiện của từng từ trong một tài liệu. Để quản lý và
thực thi MapReduce Job, Hadoop đưa ra 2 khái niệm JobTracker và TaskTracker.
Xét một cách trừu tượng, Hadoop MapReduce gồm 4 thành phần chính riêng biệt:

0.2Hình 1.5. MapReduce nhận xử lý yêu cầu từ Clientjob


13

- JobTracker: là một máy vật lý cài đặt Hadoop MapReduce (như là master
của hệ thống), với vai trò tiếp nhận các yêu cầu thực thi các MapReduce job, phân
chia job này thành các 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 task của TaskTracker và phân công lại nếu cần. JobTracker
cũng quản lý danh sách các node TaskTracker và tình trạng của từng node thông
qua hearbeat. Điều đặc biệt, Hadoop chỉ định hệ thống chỉ có tối đa một JobTracker
- TaskTracker: là một máy vật lý cài đặt Hadoop MapReduce (là các worker
của hệ thống), với vai trò tiếp nhận task được JobTracker phân công và thực hiện
nó. Và hệ thống được phép có nhiều TaskTracker.
- Client Program: Chương trình HadoopMapReduce mà client đang sử dụng

và tiến hành chạy một MapReduce Job.
HDFS: là hệ thống file phân tán được dùng cho việc chia sẻ các file dùng trong cả
quá trình xử lý một job giữa các thành phần trên với nhau.

1.3.3. Cơ chế hoạt động của MapReduce
Đầu tiên chương trình client sẽ yêu cầu thực hiện job và kèm theo là dữ liệu
input tới JobTracker. JobTracker sau khi tiếp nhận job này, nó sẽ thông báo ngược
về chương trình client tình trạng tiếp nhận job. Khi chương trình client nhận được
thông báo nếu tình trạng tiếp nhận hợp lệ thì nó sẽ tiến hành phân rã input này thành
các split (khi dùng HDFS thì kích thước một split thường bằng với kích thước của
một đơn vị Block trên HDFS) và các split này sẽ được ghi xuống HDFS. Sau đó
chương trình client sẽ gửi thông báo đã sẵn sàng để JobTracker biết rằng việc chuẩn
bị dữ liệu đã thành công và hãy tiến hành thực hiện job.
Khi nhận được thông báo từ chương trình client, JobTracker sẽ đưa job này
vào một stack mà ở đó lưu các job mà các chương trình client yêu cầu thực hiện.
Tại một thời điểm JobTracker chỉ được thực hiện một job. Sau khi một job hoàn
thành hay bị block, JobTracker sẽ lấy job khác trong stack này (FIFO) ra thực hiện.
Trong cấu trúc dữ liệu của mình, JobTrack có một job scheduler với nhiệm vụ lấy vị
trí các split (từ HDFS do chương trình client tạo), sau đó nó sẽ tạo một danh sách
các task để thực thi. Với từng split thì nó sẽ tạo một maptask để thực thi, mặc nhiên


14

số lượng maptask bằng với số lượng split. Còn đối với reduce task, số lượng reduce
task được xác định bởi chương trình client. Bên cạnh đó, JobTracker còn lưu trữ
thông tin trạng thái và tiến độ của tất cả các task.

0.3Hình 1.6. Cơ chế hoạt động của MapReduce


Việc TaskTracker thực thi task được chia thành 2 loại: TaskTracker thực thi
maptask, TaskTracker thực thi reduce task:
Thực thi Maptask

0.4Hình 1.7. Cơ chế hoạt động của Map task


15

Khi một TaskTracker nhận thực thi maptask, kèm theo đó là vị trí của input
split trên HDFS. Sau đó, nó sẽ nạp dữ liệu của split từ HDFS vào bộ nhớ, rồi dựa
vào kiểu format của dữ liệu input do chương trình client chọn thì nó sẽ parse split
này để phát sinh ra tập các record, và record này có 2 trường: key và value. Cho ví
dụ, với kiểu input format là text, thì tasktracker sẽ cho phát sinh ra tập các record
với key là offset đầu tiên của dòng (offset toàn cục), và value là các ký tự của một
dòng. Với tập các record này, tasktracker sẽ chạy vòng lặp để lấy từng record làm
input cho hàm map để trả ra out là dữ liệu gồm intermediate key và value. Dữ liệu
output của hàm map sẽ ghi xuống bộ nhớ chính, và chúng sẽ được sắp xếp trước
ngay bên trong bộ nhớ chính.

0.5Hình 1.8. TaskTracker hoàn thành Map task

Trước khi ghi xuống local disk, các dữ liệu output này sẽ được phân chia vào
các partition (region) dựa vào hàm partition, từng partition này sẽ ứng với dữ liệu
input của reduce task sau này. Và ngay bên trong từng partition, dữ liệu sẽ được sắp
xếp (sort) tăng dần theo intermediate key, và nếu chương trình client có sử dụng
hàm combine thì hàm này sẽ xử lý dữ liệu trên từng partition đã sắp xếp rồi. Sau khi
thực hiện thành công maptask thì dữ liệu output sẽ là các partition được ghi trên
local, ngay lúc đó TaskTracker sẽ gửi trạng thái completed của maptask và danh
sách các vị trí của các partition output trên localdisk của nó đến JobTracker(Hình

1.10: TaskTracker hoàn thành Map task). Đó là toàn bộ quá trình TaskTracker thực
hiện một maptask.


×