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

Ưng dụng mô hình xử lý phân tán MAPREDUCE để giải quyết bài toán TSP

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 MB, 26 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƢỜNG ĐẠI HỌC BÁCH KHOA

PHAN NHỰT TÂN

ỨNG DỤNG MÔ HÌNH
XỬ LÝ PHÂN TÁN MAPREDUCE
ĐỂ GIẢI QUYẾT BÀI TOÁN TSP

Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01

TÓM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Đà Nẵng – Năm 2018


Công trình được hoàn thành tại
TRƯỜNG ĐẠI HỌC BÁCH KHOA

Ngƣời hƣớng dẫn khoa học: PGS.TS. NGUYỄN TẤN KHÔI

Phản biện 1: TS. Huỳnh Hữu Hƣng
Phản biện 2: TS. Phạm Văn Việt

Luận văn đã được bảo vệ trước Hội đồng chấm Luận văn tốt
nghiệp thạc sĩ Khoa học máy tính tại Trường Đại học Bách khoa
vào ngày 16 tháng 6 năm 2018.

Có thể tìm hiểu luận văn tại:
- Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học Bách


khoa.
- Thư viện Khoa Công nghệ thông tin, Trường Đại học Bách
khoa – Đại học Đà Nẵng.


1
MỞ ĐẦU
1. Lý do chọn đề tài
Trong tin học cũng như lý thuyết đồ thị bài toán Người bán hàng
(Travelling Salesman Problem-TSP) là một trong những bài toán
kinh điển và khó[2][3]. Bài toán có phát biểu rất đơn giản nhưng rất
khó giải trong trường hợp tổng quát với không gian tìm kiếm rộng
lớn, khó bởi các thuật toán hiệu quả nhất đã được biết đến có thời
gian giải quyết bài toán này tăng dần theo cấp số nhân n, hay độ
phức tạp của thuật toán tăng dần theo hàm mũ[4]. Có rất nhiều cách
tiếp cận bài toán này từ khi mới ra đời, như sử dụng quy hoạch tuyến
tính, thuật toán vét cạn, thuật toán người láng giềng gần nhất, kỹ
thuật nhánh và cận, nhưng chỉ dừng lại ở các bộ dữ liệu nhỏ. Gần
đây có nhiều thuật toán ra đời theo hướng tiếp cận về tiến hóa như
thuật toán di truyền Genetic Algorithm, hay phương pháp tối ưu hóa
đàn kiến (Ant Colony Optimization).
Để giải bài toán Người bán hàng (Travelling Salesman ProblemTSP) bằng các các thuật toán, kỹ thuật, phương pháp nêu trên gặp
nhiều khó khăn vì độ phức tạp tính toán cao, việc giải bài toán này
với tính chất tuần tự của giải thuật tuần tự khi số đỉnh lên đến hàng
chục ngàn đỉnh sẽ gặp phải về vấn đề thời gian thực hiện chương
trình, tốc độ xử lý, khả năng lưu trữ của bộ nhớ,…Để xử lý dữ liệu
có quy mô lớn, kích thước của bài toán tăng lên và không gian tìm
kiếm lớn. Điều đó đặt ra là ta phải chia bài toán cho nhiều bộ xử lý
đồng thời tham gia tính toán, dẫn đến ta phải xây dựng thuật toán
song song trên đa bộ xử lý [1][5][6][7][8].

Với sự phát triển của công nghệ đặt ra cho chúng ta nhiều thách
thức. Bởi thời đại mà chúng ta đang sống ngành công nghệ máy tính
phát triển như vũ bão. Từ thế kỷ thứ 3 trước công nguyên, thư viện
Alexandria được coi là nơi chứa đựng toàn bộ kiến thức của loài


2
người. Ngày nay, tổng lượng thông tin trên toàn thế giới đủ để chia
đều cho mỗi đầu người một lượng nhiều gấp 320 lần lượng thông tin
mà các sử gia tin rằng thư viện Alexandria từng lưu trữ - ước tính
vào khoảng 120 exabyte. Nếu tất cả những thông tin này được ghi lại
vào đĩa CD và chúng ta xếp chồng các đĩa CD này lên nhau, sẽ có tới
5 chồng đĩa mà mỗi chồng đều vươn dài chạm tới mặt trăng.
Sự bùng nổ dữ liệu này chỉ mới xuất hiện gần đây. Cách đây
không lâu, vào năm 2000, chỉ mới có một phần tư lượng thông tin
lưu trữ trên toàn thế giới ở dạng kỹ thuật số. Ba phần tư còn lại được
người ta lưu trên giấy tờ, phim, và các phương tiện analog khác.
Nhưng do lượng dữ liệu kỹ thuật số bùng nổ quá nhanh – cứ 3 năm
lại tăng gấp đôi – cục diện trên nhanh chóng đảo ngược. Ngày nay,
chỉ dưới 2% tổng lượng thông tin chưa được chuyển sang lưu trữ ở
dạng kỹ thuật số. Theo tài liệu của Intel vào tháng 09/2013, hiện nay
thế giới đang tạo ra 1 petabyte dữ liệu mỗi 11 giây, tương đương với
đoạn video HD dài 13 năm. Nhà bán lẻ online Amazon.com thì phải
xử lí hàng triệu hoạt động mỗi ngày, cũng như yêu cầu từ khoảng
nữa triệu đối tác bán hàng. Tương tự, Facebook cũng phải quản lí 50
tỉ bức ảnh từ người dùng tải lên, YouTube hay Google thì phải lưu
lại hết các lượt truy vấn và video của người dùng cùng nhiều loại
thông tin khác có liên quan.
Để xử lý lượng dữ liệu khổng lồ đó, rất nhiều công nghệ đã ra
đời. Trong đó phải kể đến công nghệ tính toán phân tán. Ý tưởng

chính của việc tính toán phân tán là chia bài toán thành những bài
toán con và giải quyết trên các máy riêng biệt nhau được kết nối
trong một cluster. Chúng ta có thể thấy sự thành công của các công
ty như Google, Facebook trong thời đại bùng nổ về công nghệ hiện
nay. Đằng sau sự thành công đó có sự đóng góp không nhỏ của một
mô hình lập trình được đưa ra bởi Google – đó là mô hình lập trình


3
phân tán MapReduce [9][10][11]. MapReduce là một mô hình lập
trình phân tán, bao gồm hai giai đoạn chính là Map và Reduce. Mô
hình lập trình MapReduce được dùng để xử lý dữ liệu lớn dựa trên lý
thuyết của mô hình tính toán song song và mô hình xử lý dữ liệu
phân tán trên những cụm máy tính. MapReduce có các ưu điểm nổi
bật như: Xử lý tốt bài toán với lượng dữ liệu lớn có các tác vụ phân
tích và tính toán phức tạp không lường trước được; 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ả. Không cần quan tâm đến sự trao đổi dữ liệu giữa các cụm máy
tính với nhau vì chúng hoạt động một cách độc lập; Có thể thực hiện
mô hình MapReduce trên nhiều ngôn ngữ (Java, C/ C++, Python,
Perl, Ruby) với các thư viện tương ứng [10][12][13].
Trong thực tiễn, có nhiều bài toán với yêu cầu xử lý dữ liệu lớn,
thời gian xử lý ngắn hơn. Do đó hướng ứng dụng MapReduce để giải
bài toán Người bán hàng(Travelling Salesman Problem-TSP) là mục
tiêu mà tôi lựa chọn cho đề tài luận văn cao học:
“Ứng dụng mô hình xử lý phân tán Mapreduce để giải quyết
bài toán TSP ”
2. Mục tiêu và nhiệm vụ nghiên cứu
2.1 Mục tiêu nghiên cứu
Nghiên cứu ứng dụng mô hình xử lý phân tán MapReduce trên

nền tảng hadoop để giải quyết bài toán Người bán hàng(Travelling
Salesman Problem-TSP) có kích thước dữ liệu lớn.

2.2 Nhiệm vụ nghiên cứu
-Tìm hiểu về nền tảng tính toán phân tán với Hadoop.
-Tìm hiểu về mô hình tính toán MapReduce.
-Tìm hiểu lý thuyết đồ thị
-Tìm hiểu bài toán Người bán hàng(TSP).


4
-Xây dựng giải thuật giải quyết bài toán Người bán hàng(TSP)
dựa theo mô hình MapReduce.
3. Đối tƣợng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
-Cấu trúc Framework, Hadoop, Kiến trúc HDFS.
-Bài toán Người bán hàng(TSP)
-Tìm hiểu xây dựng các hàm Map, hàm Reduce.
-Triển khai mô hình hệ thống.

3.2

Phạm vi nghiên cứu
-Mô hình xử lý phân tán MapReduce trên nền tảng hadoop
-Ứng dụng mô hình MapReduce để giải quyết bài toán Người
bán hàng(TSP)
4. Phƣơng pháp nghiên cứu
4.1 Phương pháp nghiên cứu lý thuyết
Tìm hiểu các mô hình xử lý phân tán
Bài toán Người bán hàng(TSP)

Giải thuật xử lý phân tán
4.2 Phương pháp nghiên cứu thực nghiệm
Xây dựng sơ đồ, các thuật toán giải bài toán Người bán
hàng(TSP)
Lập trình ứng dụng bằng ngôn ngữ Java.
Xây dựng chương trình thử nghiệm.
Ý nghĩa khoa học và thực tiễn của luận văn
5.1 Ý nghĩa khoa học
Xây dựng được giải thuật giải bài toán Người bán hàng (TSP)
từ giải thuật tuần tự sang xử lý song song trên mô hình phân tán
MapReduce.
5.

5.2 Ý nghĩa thực tiễn


5
Ứng dụng xử lý dữ liệu lớn trên mô hình phân tán giải bài toán
Người bán hàng (TSP).
CHƢƠNG 1 - TỔNG QUAN VỀ DỮ LIỆU LỚN VÀ
BÀI TOÁN TSP
1.1 Dữ liệu lớn
Trước đây, chúng ta mới chỉ biết đến dữ liệu có cấu trúc
(structure data), ngày nay, với sự kết hợp của dữ liệu và internet, đã
xuất hiện một dạng khác của dữ liệu Big data (dữ liệu lớn)[10]. Dữ
liệu này có thể từ các nguồn như: Hồ sơ hành chính, giao dịch điện
tử, dòng trạng thái (status), chia sẻ hình ảnh, bình luận, nhắn tin...của
chính chúng ta, nói cách khác chúng là dữ liệu được sản sinh qua quá
trình chia sẻ thông tin trực tuyến liên tục của người sử dụng. Sự bùng
nổ dữ liệu này chỉ mới xuất hiện gần đây. Cách đây không lâu, vào

năm 2000, chỉ mới có một phần tư lượng thông tin lưu trữ trên toàn
thế giới ở dạng kỹ thuật số. Ba phần tư còn lại được người ta lưu trên
giấy tờ, phim, và các phương tiện analog khác. Nhưng do lượng dữ
liệu kỹ thuật số bùng nổ quá nhanh – cứ 3 năm lại tăng gấp đôi – cục
diện trên nhanh chóng đảo ngược. Ngày nay, chỉ dưới 2% tổng lượng
thông tin chưa được chuyển sang lưu trữ ở dạng kỹ thuật số. Theo tài
liệu của Intel vào tháng 09/2013, hiện nay thế giới đang tạo ra 1
petabyte dữ liệu mỗi 11 giây, tương đương với đoạn video HD dài 13
năm. Nhà bán lẻ online Amazon.com thì phải xử lí hàng triệu hoạt
động mỗi ngày, cũng như yêu cầu từ khoảng nữa triệu đối tác bán
hàng. Tương tự, Facebook cũng phải quản lí 50 tỉ bức ảnh từ người
dùng tải lên, YouTube hay Google thì phải lưu lại hết các lượt truy
vấn và video của người dùng cùng nhiều loại thông tin khác có liên
quan.


6

Hình 1.1: Mô tả dữ liệu lớn
1.1.1 Đặc trưng của dữ liệu lớn và sự khác biệt với dữ liệu truyền
thống
1.1.2 Đặc trưng 5V của dữ liệu lớn
1.1.3 Sự khác biệt giữa dữ liệu lớn với dữ liệu truyền thống
Dữ liệu lớn khác với dữ liệu truyền thống ở 4 điểm cơ bản: Dữ
liệu đa dạng hơn; lưu trữ dữ liệu lớn hơn; truy vấn nhanh hơn; độ
chính xác cao hơn.
a) Dữ liệu đa dạng hơn
Khi khai thác dữ liệu truyền thống (dữ liệu có cấu trúc),
chúng ta thường phải trả lời các câu hỏi: Dữ liệu lấy ra kiểu gì? Định
dạng dữ liệu như thế nào? Đối với dữ liệu lớn, không phải trả lời các

câu hỏi trên. Hay nói khác khi khai thác, phân tích dữ liệu lớn chúng
ta không cần quan tâm đến kiểu dữ liệu và định dạng của chúng, điều
quan tâm là giá trị mà dữ liệu mang lại có đáp ứng được cho công
việc hiện tại và tương lai hay không.
b) Lưu trữ dữ liệu lớn hơn
Lưu trữ dữ liệu truyền thống vô cùng phức tạp và luôn đặt ra
câu hỏi lưu như thế nào? Dung lượng kho lưu trữ bao nhiêu là đủ?
Gắn kèm với câu hỏi đó là chi phí đầu tư tương ứng. Công nghệ lưu
trữ dữ liệu lớn hiện nay đã phần nào có thể giải quyết được vấn đề


7
trên nhờ những công nghệ lưu trữ đám mây, phân phối lưu trữ dữ
liệu phân tán và có thể kết hợp các dữ liệu phân tán lại với nhau một
cách chính xác và xử lý nhanh trong thời gian thực.
c) Truy vấn dữ liệu nhanh hơn
Dữ liệu lớn được cập nhật liên tục, trong khi đó kho dữ liệu
truyền thống thì lâu lâu mới được cập nhật và trong tình trạng không
theo dõi thường xuyên gây ra tình trạng lỗi cấu trúc truy vấn dẫn đến
không tìm kiếm được thông tin đáp ứng theo yêu cầu.
d) Độ chính xác cao hơn
Dữ liệu lớn khi đưa vào sử dụng thường được kiểm định lại
dữ liệu với những điều kiện chặt chẽ, số lượng thông tin được kiểm
tra thông thường rất lớn, và đảm bảo về nguồn lấy dữ liệu không có
sự tác động của con người vào thay đổi số liệu thu thập.
1.2 Các khái niệm cơ bản về đồ thị
1.2.1 Định nghĩa đồ thị
1.2.2 Đồ thị Hamilton
1.3 Bài toán ngƣời bán hàng (TSP)
1.3.1 Giới thiệu bài toán người bán hàng (TSP)

Bài toán người bán hàng hay còn được gọi là bài toán TSP
[4][5] là một bài toán khá nổi tiếng trong lĩnh vực tối ưu tổ hợp được
nghiên cứu trong lý thuyết khoa học máy tính có nội dung như sau:
Một người bán hàng xuất phát từ thành phố của anh ta, anh ta muốn
tìm một đường đi ngắn nhất đi qua tất cả các thành phố của khách
hàng mỗi thành phố đúng một lần và sau đó trở về thành phố ban
đầu. Nó nhanh chóng trở thành bài toán khó thách thức toàn thế giới
bởi độ phức tạp thuật toán tăng theo hàm số mũ (trong chuyên ngành
thuật toán người ta còn gọi chúng là những bài toán NP-khó).
1.3.2 Mô tả bài toán TSP


8
Bài toán TSP có thể được mô hình như một đồ thị (hình 1.10),
các đỉnh của đồ thị tương ứng với các thành phố và các cạnh thì
tương ứng với đường nối giữa các thành phố, chiều dài của một cạnh
tương ứng với khoảng cách giữa 2 thành phố. Một đường đi trong bài
toán TSP là một chu trình Hamilton trên đồ thị và một lời giải tối ưu
của bài toán là chu trình Hamilton ngắn nhất.

Hình 1.10: Mô tả bài toán TSP
Đồ thị thường là đồ thị đầy đủ, vì vậy mọi cặp cạnh đều được
nối bởi các cạnh. Đây là bước đơn giản hóa bài toán vì việc tìm chu
trình Hamilton trong một đồ thị đầy đủ là dễ. Các bài toán mà không
phải hai thành phố nào cũng được nối với nhau có thể được chuyển
đổi thành đồ thị đầy đủ bằng cách thêm những cạnh có độ dài lớn
giữa các thành phố này, những cạnh này sẽ không xuất hiện trong
chu trình tối ưu.
1.3.3 Các thuật toán giải bài toán TSP
1.4 Kết chƣơng

Chương này trình bày tổng quan về dữ liệu lớn, bài toán người
bán hàng, lý thuyết đồ thị và các thuật toán để giải bài toán người
bán hàng. Trong số các phương pháp đã giới thiệu ở chương 1, cách
giải bài toán người bán hàng bằng thuật toán nhánh cận được lựa
chọn làm thuật toán để triển khai trên mô hình Mapreduce. Nội dung
chi tiết mô hình tính toán phân tán Hadoop-Mapreduce sẽ được trình
bày ở chương 2.


9
CHƢƠNG 2 - XỬ LÝ PHÂN TÁN HADOOP-MAPREDUCE
2.1 Giới thiệu nền tảng Hadoop
2.1.1 Giới thiệu Hadoop
Apache Hadoop hay Hadoop là một software framework hỗ
trợ các ứng dụng phân tán dữ liệu chuyên sâu theo một giấy phép
miễn phí. Nó cho phép các ứng dụng làm việc với hàng ngàn máy
tính tính toán độc lập và petabyte dữ liệu. Hadoop được bắt nguồn từ
các bài báo MapReduce của Google và Google File System
(GFS)[11].
Hadoop là một trong những dự án hàng đầu của Apache, được
xây dựng và được sử dụng bởi một cộng đồng những người đóng góp
toàn cầu, viết bằng ngôn ngữ lập trình Java. Yahoo! đã đóng góp lớn
nhất cho dự án, và Hadoop được sử dụng rộng rãi trên khắp các
doanh nghiệp của nó
2.1.2 Lịch sử Hadoop
2.1.3 Các thành phần của Hadoop
2.1.4 Ứng dụng của Hadoop trong một số công ty
2.1.5 Cụm máy tính Hadoop(Hadoop cluster)
HDFS và MapReduce là hai thành phần chính của một cụm
máy tính Hadoop. 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 của một cụm máy tính
Hadoop như sau:


10

Hình 2.2: Tổng quan một Hadoop cluster
2.2 Hệ thống file phân tán Hadoop
2.2.1 Giới thiệu
2.2.2 Kiến trúc HDFS

Hình 2.4: Quá trình các nodes đọc một file trên HDFS

Hình 2.5: Quá trình các nodes ghi một file trên HDFS


11
2.3 Mô hình tính toán MapReduce
2.3.1 Giới thiệu
Trước thời điểm Google công bố mô hình MapReduce, với sự
bùng nổ của dữ liệu (hàng petrabyte), cùng lúc đó nhu cầu thực hiện
xử lý các nghiệp vụ trên lượng dữ liệu khổng lồ là thách thức lớn lúc
bấy giờ. Cùng với nhu cầu ấy, các doanh nghiệp đang gặp vấn đề
tương tự khi muốn tìm một giải pháp tốn ít chi phí và hiệu năng thể
hiện cao. Trong khi nghiên cứu, một nhóm nhân viên của Google đã
khám phá ra một ý tưởng để giải quyết nhu cầu xử lý lượng dữ liệu
lớn là việc cần phải có hệ thống nhiều các máy tính và cần có các
thao tác để xử lý đồng bộ trên hệ thống đó. Và họ đã xác định được 2
thao tác cơ bản là Map và Reduce, nó được lấy cảm hứng từ phong

cách lập trình hàm (Functional Programming). Với ý tưởng trên,
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[11][12].
2.3.2 Tổng quan về mô hình tính toán Mapreduce
2.3.3 Cơ chế hoạt động của MapReduce
2.3.4 Quá trình xử lý 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.


12
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 vấn đề bé hơn. Gọi là các split 0, split 1, split 2, …
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 vấn đề master. Để xử lý khối dữ liệu bao
gồm rất nhiều cặp (key, value), lập trình viên viết hai hàm Map và
Reduce.
Thực hiện hàm Map
- Trộn và sắp xếp các kết quả thu được từ các máy tính làm
sao để được kết quả tiện lợi nhất so với mục đích của quá
trình.

- Tổng hợp các kết quả trung gian thu được từ các máy tính
phân tán
Thực hiện hàm Reduce
Đưa ra kết quả cuối cùng.

Hình 2.7: Mô hình làm việc của một công việc MapReduce
Lấy ý tưởng từ lập trình hàm, mô hình MapReduce dựa trên
hai hàm Map và Reduce. Để xử lý khối dữ liệu bao gồm nhiều cặp
(key, value), lập trình viên viết hai hàm Map và Reduce. Hàm Map
có đầu vào là một cặp (k1,v1) và đầu ra là một danh sách các cặp (k2,
v2), như vậy hàm Map có thể viết một cách hình thức như sau:


13
Input
(khóa, giá
trị)

Hàm Map
Map(k1,v1)List(
k2,v2)

Output
Danh sách cặp
(khóa, giá trị)

Hình 2.8: Mô hình làm việc của hàm Map
Mô hình MapReduce áp dụng hàm Map (do người dùng viết)
vào từng cặp (key, value) trong khối dữ liệu vào, chạy rất nhiều
phiên bản của hàm Map song song với nhau trên các node của

cluster. Sau khi giai đoạn này kết thúc, kết quả thu được là một tập
hợp rất nhiều cặp (key, value) gọi là các cặp (key, value) trung gian.
Các cặp này lại được nhóm một lần nữa theo khóa, như vậy các cặp
(key, value) trung gian có cùng khóa sẽ nằm cùng một nhóm trung
gian.
Sau đó, hàm Reduce (cũng do người dùng viết) sẽ được áp
dụng vào từng nhóm trung gian để tạo thành kết quả cuối cùng tùy
theo yêu cầu đặt ra. Một cách hình thức, hàm Reduce có thể được mô
tả như sau:
Input
(khóa, giá trị)

Hàm Reduce
Reduce(k2,list(v2))list(v3)

Output

DL Output

Hình 2.9: Mô hình làm việc của hàm Reduce
Trong đó k2 là khóa chung của nhóm trung gian, list(v2) là tập
các giá trị trong nhóm và list(v3) là một danh sách các giá trị trả về
của hàm Reduce thuộc kiểu dữ liệu v3. Do hàm Reduce được áp
dụng vào nhiều nhóm trung gian độc lập, chúng lại một lần nữa có
thể được chạy song song với nhau.


14
2.3.5 Hadoop MapReduce
Hadoop đã giữ nguyên cơ chế của MapReduce của Google để

cài đặt thành bộ máy thực thi MapReduce. Đây là một framework
cho phép dễ dàng phát triển và triển khai các ứng dụng MapReduce.
Cơ chế hoạt động mapreduce
Phân nhỏ dữ liệu đầu vào
Thông qua thư viện MapReduce ứng với từng ngôn ngữ,
chương trình có nhiệm vụ phân mảnh tệp dữ liệu đầu vào. Dữ liệu
vào được chia thành các phần nhỏ.
Sao chép chương trình
Chương trình MapReduce làm nhiệm vụ sao chép chương
trình chạy thành các tiến trình song song lên các máy tính phân tán.
Các máy gồm có Master và Worker. Trong đó máy Master làm
nhiệm vụ điều phối sự hoạt động của quá trình thực hiện MapReduce
trên các máy Worker. Các máy Worker làm nhiệm vụ thực hiện quá
trình Map và Reduce với dữ liệu mà nó nhận được.
Thực hiện hàm Map
Máy master sẽ phân phối các tác vụ Map và Reduce vào các
worker đang rảnh rỗi. Các tác vụ này được Master phân phối cho các
máy dựa trên vị trí của dữ liệu liên quan trong hệ thống. Máy Worker
khi nhận được tác vụ Map sẽ đọc dữ liệu mà nó nhận được 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 <key, value> trung gian. Các cặp này được lưu tạm trên bộ
nhớ đệm của các máy.
Sau khi thực hiện xong công việc Map. Các máy Worker làm
nhiệm vụ chia các giá trị trung gian thành R vùng (tương ứng với R
tác vụ Reduce) lưu xuống đĩa và thông báo kết quả, vị trí lưu cho
máy Master.


15
Master sẽ gán các giá trị trung gian và vị trí của các cặp dữ

liệu đó cho các
máy thực hiện công việc Reduce. Các máy Reduce làm nhiệm vụ xử
lý các key, thực hiện hàm Reduce và đưa kết quả cuối.
Thông báo kết quả
Master sẽ kích hoạt 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 R
tập tin.
Để thể hiện các chức năng ở trên trong việc viết chương trình
chúng ta cần xây dựng 3 hàm:
+Hàm Map
+Hàm reduce
+Driver
2.4 Kết chƣơng.
Chương này đã trình bày về lý thuyết nền tảng tính toán phân
tán Hadoop – MapReduce. Trong đó hai khái niệm HDFS và mô
hình tính toán Map Reduce là hai khái niệm rất quan trọng trong
Hadoop. Trong chương tiếp theo, tác giả xin trình bày thuật toán để
giải bài toán TSP và cách thiết kế thuật toán trên mô hình
Mapreduce.
CHƢƠNG 3 - PHÂN TÍCH THIẾT KẾ BÀI TOÁN TSP DỰA
TRÊN MÔ HÌNH XỬ
LÝ MAPREDUCE
3.1 Bài toán TSP
Một người bán hàng trên hệ thống n thành phố. Giữa các thành
phố có thể có hoặc không các đường nối, mỗi đường nối có chi phí
xác định từ trước. Người bán hàng xuất phát từ một thành phố, đi tới
tất cả các thành phố khác và mỗi thành phố đi qua một lần và quay


16

trở lại thành phố ban đầu. Hãy xác định một hành trình sao cho tổng
chi phí trên đường đi là nhỏ nhất[5].
Xét đồ thị đầy đủ G=(V,E), với V={1, 2, ..., n}, có trọng số
với trọng số Cij= C(i,j) có thể khác Cji = C(j,i). Như vậy, ta có thể
xem G như là một đồ thị có hướng đầy đủ “mạnh” theo nghĩa với
mọi i, j=1, 2, ..., n, với mọi i<>j, luôn có (i,j), (j,i) thuộc E. Bài
toán trở thành tìm chu trình Hamilton có độ dài ngắn nhất trong G.

Hình 3.1: Mô tả bài toán TSP
3.2 Phƣơng pháp nhánh và cận giải bài toán ngƣời bán hàng
3.3. Thiết kế cấu trúc dữ liệu và cài đặt thuật toán nhánh cận
3.4 Thiết kế bài TSP trên mô hình MapReduce
3.4.1 Bài toán TSP
Một người bán hàng xuất phát từ thành phố của anh ta, anh ta
muốn tìm một đường đi ngắn nhất đi qua tất cả các thành phố của
khách hàng mỗi thành phố đúng một lần và sau đó trở về thành phố
ban đầu[5].


17

Hình 3.4 : Mô hình bài toán TSP
3.4.2 Qui trình xử lí bài toán TSP trên mô hình Mapreduce
Giả sử bài toán gồm n thành phố khoảng cách mỗi thành phố
được lưu trữ trên ma trận trọng số như hình 3.5 và được biểu diễn
dưới dạng đồ thị như hình 3.6.

Hình 3.7: Đồ thị bài toán TSP
Các bước giải bài toán TSP như sau:



18

1. Phân cùng (Partition) : Chia bài toán thành n thành phần

Hình 3.8 : Chia bài toán TSP thành n thành phần
2. Giải quyết từng phần riêng biệt (Map)

Hình 3.9: Giải quyết từng thành phần riêng biệt bài toán TSP


19
3. Kết hợp các thành phần (Reduce)
Hợp nhất các thành phần lại với nhau. Để hợp nhất 2 thành
phần chúng ta loại bỏ cung từ mỗi thành phần và thêm 2 đường cung
nối các thành phần với nhau. Việc hợp nhất được diễn ra nhiều lần
cho đến khi đạt kết quả tốt nhất.

Hình 3.10: Kết hợp các thành phần lại với nhau
4. Kết quả(Result)
Hợp nhất nhiều lần để được kết quả cuối cùng.

Hình 3.11: Hợp nhất tất cả các thành phần để có kết quả cuối
cùng


20
3.4.3 Cài đặt và chạy bài toán TSP trên mô hình MapReduce
Input: Ma trận trọng số (Chi phí giữa các thành phố)


Hình 3.13 : Giao diện bài toán TSP trên Hadoop
Output: Đường đi từ một thành phố đi qua tất cả các thành
phố, mội thành phố đúng một lần và quay về thành phố ban đầu với
chi phí thấp nhất.

Hình 3.14: Kết quả thực hiện chương trình bài toán TSP trên
Hadoop


21
City 0-> City 1-> City 2-> City 7-> City 4-> City 8-> City 6->
City 5-> City 9-> City 3-> City 0
Tổng chi phí thấp nhất: 2019
3.4.4 Đánh giá kết quả
So sánh giữa hệ thống xử lý tuần tự trước đây với thuật toán
song song để kiểm tra sự khác biệt về kết quả và do đó sẽ có kết luận
về sự tối ưu hóa đạt được khi sử dụng thuật toán mới.
Hình 3.15 mô tả thời gian thực hiện thuật toán có số đỉnh khác
nhau được biểu diễn bằng ba đường khác nhau biểu diễn các giai
đoạn map 1, 2 và 3.
Chi phí trên hệ thống sẽ lớn khi thuật toán thực hiện nhưng sự
cố về mạng xảy ra dẫn đến làm tăng thời gian cần thiết để quá trình
tính toán được hoàn thành.
Hình 3.18 Mô tả hoạt động của thuật toán khi số giai đoạn
MapReduce tăng. Nhìn vào biểu đồ ta có thể biết được rằng khi số
giai đoạn tăng thì thời gian thực hiện thuật toán cũng tăng. Số đỉnh
cho mỗi hàm Mapper và số lượng máy trong một cụm có thể mang
lại kết quả tốt nhất và với hiệu suất tối ưu nhất. Tuy nhiên, khi hệ
thống được song song, có thể chạy với một số lượng đỉnh khá lớn
cho mỗi hệ thống làm cho hệ thống hiệu quả hơn với xử lý tải lớn

hơn nhiều so với hệ thống tuần tự. Hệ thống tuần tự không thể xử lý
được nhiều đỉnh như hệ thống song song vì nó là một bộ xử lý đơn
với khả năng tính toán bị giới hạn. Khi hệ thống song song được thực
hiện trên một cụm lớn, khả năng tính toán lớn hơn rất nhiều và hệ
thống có thể thực hiện tính toán tốt hơn.
Mục đích của thực nghiệm để so sánh thời gian thực hiện
chương trình giữa hai thuật toán: một thuật toán xử lý tuần tự theo
kiểu truyền thống và một thuật toán xử lý song song theo mô hình


22
Mapreduce. Với dữ liệu được sinh ra từ một chương trình sinh dữ
liệu ngẫu nhiên đã sinh ra bộ dữ liệu với số đỉnh khoảng 100000
đỉnh. Kết quả thực nghiệm cho thấy chương trình đã chạy và cho kết
quả đúng đắn. Với bộ dữ liệu 100000 đỉnh chương trình viết bằng
MapReduce chạy trên 1 máy cho thời gian thực hiện khoảng 36 giây.
Đây là kết quả bước đầu cho thấy thời gian thực hiện chương trình
nhanh hơn nhiều so với chương trình viết bằng thuật toán xử lý tuần
tự với cùng số đỉnh. Điều này thêm một lần nữa khẳng định rằng việc
ứng dụng cơ chế xử lý phân tán MapReduce để giải quyết các bài
toán đồ thị có dữ liệu lớn là có hiệu quả và đúng đắn.
3.5 Kết chƣơng
Chương này giới thiệu giải thuật để giải bài toán TSP, thiết kế
bài toán TSP trên mô hình MapReduce, qui trình xử lí bài toán TSP
trên mô hình MapReduce, cài đặt và chạy chương trình, đánh giá kết
quả của bài TSP.
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN
1. Kết Luận
Chúng ta đang sống trong thời đại mà ngành công nghệ máy
tính phát triển như vũ bão. 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ý ngày càng tăng nhanh dẫn đến khối
lượng dữ liệu số đang phồng to ra với tốc độ chóng mặt. Khi khối
lượng dữ liệu của hệ thống gia tăng tới một mức độ nhất định thì việc
hệ thống sẽ phải đối mặt với thách thức là làm thế nào để lưu trữ,
phân tích và xử lý dữ liệu đó. Việc lưu trữ và xử lý dữ liệu phân tán
bằng mô hình xử lý phân tán MapReduce là một lĩnh vực không còn
mới nhưng rất có tiềm năng và đáng để được nghiên cứu. Trải qua
quá trình làm việc nghiêm túc, bước đầu chúng tôi đã thu được một


23
số kết quả nhất định. Khái quát được những kiến thức cơ bản về
LTĐT, nền tảng tính toán phân tán với Hadoop. Nêu ra được phương
pháp giải một số bài toán trên đồ thị theo mô hình MapReduce. Tập
trung nghiên cứu, xây dựng bài toán trên các thuật toán của LTĐT
theo mô hình MapReduce nhằm giải quyết bài toán người bán hàng
TSP.
Luận văn này đã nghiên cứu giải bài toán người bán hàng
(TSP), lý thuyết đồ thị và mô hình xử lý phân tán MapReduce trên
nền tảng Hadoop nhận dạng các bài toán thực tế để đưa về giải quyết
các bài toán trên đồ thị có kích thước dữ liệu lớn. Chương trình đã
thể hiện được các bước xử lý của Hadoop MapReduce. Luận văn
cũng đã cài đặt thành công chương trình và đạt được những kết quả
ban đầu. Xuất ra các thông tin mà hệ thống MapReduce xử lý. Khẳng
định một lần nữa cơ chế xử lý phân tán MapReduce được quan tâm,
phát triển liên tục nhằm nghiên cứu, giải quyết một số bài toán có
kích thước dữ liệu lớn trong cuộc sống hiện nay.
2. Hƣớng phát triển
Trên cơ sở các kết quả nghiên cứu đã được trình bày trong
luận văn, chúng tôi nhận thấy còn một số vấn đề cần tiếp tục được

nghiên cứu để có được kết quả tốt hơn như: Sẽ phát triển thêm với
các nguồn tài nguyên lớn hơn, đánh giá được việc xử lý bài toán với
nhiều nút. Thực hiện được dữ liệu đầu vào với Data lớn hơn rất
nhiều. Tiếp tục phát triển những ứng dụng khoa học với hệ thống
MapReduce. Đưa ứng dụng vào thực tế để triển khai tính toán có
hiệu quả.
Trong quá trình làm luận văn, dù đã cố gắng nghiên cứu tìm
hiểu các kiến thức để thực hiện tốt đề tài. Tuy nhiên do thời gian
nghiên cứu và trình độ bản thân có hạn nên không thể tránh khỏi các


×