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

Xây dựng thử nghiệm giải pháp tìm kiếm theo yêu cầu người dùng sử dụng cloud computing và thuật toán mapreduce

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.73 MB, 78 trang )

..

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

.......................................

HỒNG ANH TUẤN

XÂY DỰNG THỬ NGHIỆM GIẢI PHÁP TÌM KIẾM
THEO YÊU CẦU NGƯỜI DÙNG, SỬ DỤNG ĐIỆN
TOÁN ĐÁM MÂY VÀ THUẬT TOÁN MAPREDUCE

LUẬN VĂN THẠC SĨ KHOA HỌC

NGƯỜI HƯỚNG DẪN : PGS.TS. HUỲNH QUYẾT THẮNG

HÀ NỘI – 2010


MỤC LỤC
MỤC LỤC

................................................................................................................2

DANH MỤC HÌNH VẼ...................................................................................................5
DANH MỤC BẢNG BIỂU .............................................................................................6
CHƯƠNG 1

TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY, GIẢI THUẬT


MAPREDUCE, HỆ THỐNG TÌM KIẾM .......................................................................7
1.1

Sự phát triển của các mơ hình tính tốn ............................................................7

1.2

Tối ưu hóa của q trình xử lý dữ liệu lớn, giải thuật MAPREDUCE ứng

dụng cho các nguồn dữ liệu cực lớn (TB, PB). ............................................................9
1.3

Bài tốn tìm kiếm theo yêu cầu người sử dụng (Object searching by request) ..
.........................................................................................................................10

1.4

Nhiệm vụ trong luận văn .................................................................................11

CHƯƠNG 2
2.1

ĐIỆN TOÁN ĐÁM MÂY VÀ GIẢI THUẬT MAPREDUCE...........13

Khái niệm về Điện toán đám mây...................................................................13

2.1.1

Lịch sử Cloud computing.........................................................................14


2.1.2

Các đặc tính chính của Cloud Computing ...............................................15

2.2

Các nhánh chính của điện tốn đám mây........................................................15

2.2.1

Phần mềm hoạt động như một dịch vụ (SaaS - Software as a Service)...16

2.2.2

Nền tảng như một dịch vụ (PaaS - Platform as a Service) ......................17

2.2.3

Hạ tầng hoạt động như một dịch vụ (IaaS – Infrastructure as a Service) 17

2.3

Các hệ thống Cloud Computing tiêu biểu .......................................................18

2.3.1

Google App Engine..................................................................................18

2.3.2


Microsoft Azune ......................................................................................19

2.3.3

Amazon Elastic Compute Cloud (EC2)...................................................20

2.3.4

Amazon Simple Storage Service (S3) .....................................................21

2.4

Ứng dụng Cloud Computing trong tìm kiếm thơng tin...................................22

2


2.5

Lịch sử phát triển Mapreduce..........................................................................23

2.6

Kỹ thuật lập trình MapReduce ........................................................................25

2.6.1

Map Function ...........................................................................................26

2.6.2


Reduce Function ......................................................................................27

2.7

Một số ứng dụng tiêu biểu MapReduce ..........................................................28

2.7.1

Hệ thống Sort Data của Yahoo, Google ..................................................29

2.7.2

Ứng dụng xử lý dữ liệu log......................................................................31

2.8

Kết chương ......................................................................................................32

CHƯƠNG 3

BÀI TỐN TÌM KIẾM THEO YÊU CẦU NGƯỜI SỬ DỤNG VÀ

ĐỀ XUẤT GIẢI PHÁP DỰA TRÊN ĐIỆN TOÁN ĐÁM MÂY VÀ GIẢI THUẬT
MAPREDUCE ..............................................................................................................34
3.1

Bài tốn tìm kiếm dữ liệu ................................................................................34

3.1.1


Lịch sử máy tìm kiếm ..............................................................................35

3.1.2

Phân loại máy tìm kiếm trên Internet.......................................................37

3.1.3

Mơ hình của máy tìm kiếm ......................................................................39

3.2

Thuật tốn tìm kiếm ........................................................................................40

3.2.1

Bài tốn thu thập, bóc tách dữ liệu (Crawl, parse data)...........................40

3.2.2

Bài tốn đánh chỉ mục dữ liệu (Index data).............................................45

3.2.3

Thuật tốn tìm kiếm theo độ tương quan (relevance)..............................47

3.3

Các giải pháp xây dựng máy tìm kiếm............................................................49


3.4

Giải pháp tìm kiếm sử dụng thuật tốn MapReduce trên nền điện toán đám

mây

.........................................................................................................................52

3.4.1

Sử dụng MapReduce và điện toán đám mây trong việc thu thập, bóc tách

dữ liệu ..................................................................................................................52
3.4.2

Sử dụng MapReduce và điện toán đám mây trong bài toán đánh chỉ mục .
..................................................................................................................54

3


3.4.3

Sử dụng điện toán đám mây trong việc thiết kế module tìm kiếm phân tán
..................................................................................................................56

3.5

Kết chương ......................................................................................................58


CHƯƠNG 4

XÂY DỰNG HỆ THỐNG TÌM KIẾM VÀ THỬ NGHIỆM THỰC TẾ
..............................................................................................................60

4.1

Bài tốn tìm kiếm tin tức.................................................................................60

4.2

Xây dựng hệ thống tìm kiếm tin tức theo độ tương quan về nội dung, thời

gian. .........................................................................................................................60
4.2.1

Tổng quan về mơ hình hệ thống tìm kiếm ...............................................60

4.2.2

Các thành phần của hệ thống ...................................................................61

4.3

Đánh giá kết quả, các hướng cải tiến ..............................................................65

4.3.1

Các kết quả đạt được................................................................................65


4.3.2

Tổng kết luận văn.....................................................................................70

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

4


DANH MỤC HÌNH VẼ
Hình 1.1-1: định luật Moore [42].....................................................................................7
Hình 2.1-1: Mơ hình điện tốn đám mây [46] ...............................................................14
Hình 2.2-1: Các lớp của điện tốn đám mây..................................................................16
Hình 2.3-1: Giao diện sử dụng EC2 [19] .......................................................................20
Hình 2.3-2: Giao diện sử dụng Amazon S3 [20] ...........................................................22
Hình 2.6-1: Mơ hình MapReduce ..................................................................................26
Hình 2.6-2: Q trình xử lý MapReduce .......................................................................28
Hình 3.1-1: Số lượng URL trên thế giới [21] ................................................................35
Hình 3.1-2: Thị phần của các máy tìm kiếm tháng 9 năm 2010 [53] ............................36
Hình 3.1-3: Mơ hình máy tìm kiếm ...............................................................................40
Hình 3.2-1: Inverted index .............................................................................................47
Hình 3.4-1: Hệ thống tìm kiếm phân tán .......................................................................58
Hình 4.2-1: Tổ chức hệ thống ........................................................................................61
Hình 4.2-2: Tổ chức module máy tìm kiếm...................................................................64
Hình 4.3-1: Tổng số trang web trong hệ thống ..............................................................67
Hình 4.3-2: Tốc dộ thu thập trang web và đánh chỉ mục...............................................68

5



DANH MỤC BẢNG BIỂU
Bảng 2.7-1: Kết quả sắp xếp dữ liệu của Yahoo! [17]...................................................30
Bảng 3.1-1: Số lượng trang web đã được đánh chỉ mục................................................37
Bảng 4.3-1: Số lượng máy trong các cluster..................................................................66
Bảng 4.3-2: Kết quả tìm kiếm ........................................................................................70

6


CHƯƠNG 1

TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY, GIẢI

THUẬT MAPREDUCE, HỆ THỐNG TÌM KIẾM
1.1

Sự phát triển của các mơ hình tính tốn
Mơ hình tính tốn các hệ thống phát triển qua nhiều thời kỳ, ngày càng hiện đại

hơn, phát triển cả về chiều rộng (mở rộng về khơng gian tính toán, thêm các tài
nguyên), chiều sâu (cải tiến các thuật tốn (từ lập trình cấp thấp, lập trình cấp cao, tính
tốn song song, tính tốn hiệu năng cao,….). Phần cứng ngày càng phát triển nhanh,
theo định luật Moore [41] :”Số lượng transitor trên mỗi đơn vị inch vuông sẽ tăng gấp
đôi sau mỗi hai năm”. Việc tốc độ các hệ thống tính tốn ngày càng được phát triển
nhanh, giá thành ngày càng rẻ hơn giúp chúng ta rút ngắn thời gian tính tốn cho các
đơn vị dữ liệu lớn.

Hình 1.1-1: định luật Moore [42]


7


Cùng với việc phát triển của phần cứng, các mô hình lập trình cũng được phát
triển với tốc độ chóng mặt. Ban đầu chỉ là các phương pháp lập trình theo bìa đục lỗ,
sau đó phát triển lên thành mơ hình lập trình theo ngơn ngữ cấp cao, vào thập niên
1950, 1960, xuất hiện nhiều ngơn ngữ lập trình cấp cao như FORTRAN, LISP,
COBOL,…. Từ những năm 1990, kỷ nguyên của Internet bắt đầu, các mơ hình lập
trình ngày càng phát triển, bao gồm nhiều phương pháp lập trình mới như: lập trình
hướng sự kiện, lập trình hướng đối tượng, lập trình logic, lập trình hàm, lập trình đồng
thời,…. Khơng chỉ lập trình trên máy tính cá nhân đơn lẻ, nhiều mơ hình lập trình đã
hướng đến mơi trường phân tán, song song, giúp người sử dụng có thể triển khai mơi
trường lập trình trên nhiều máy tính. Mục đích của các mơ hình lập trình này giúp giải
quyết các bài toán dữ liệu lớn, các nhu cầu thực tế của người dùng. Thử tưởng tượng,
nếu khơng có những mơ hình lập trình này, chúng ta sẽ khơng có những ứng dụng trực
tuyến khổng lồ như Google, Facebook hay Yahoo, không thể phát triển những ứng
dụng trên Internet như Gmail, Google docs, các hệ thống chia sẻ file, ảnh,…
Cùng với sự phát triển nhanh chóng của Internet, các hệ thống tính tốn lớn
được xây dựng dựa trên sự phát triển về hạ tầng phần cứng và cấu trúc phần mềm trong
các chương trình điều khiển. Mỗi ngày, Google phải xử lý hơn 20 Petabytes dữ liệu,
còn Facebook là khoảng 80-90 Terabytes dữ liệu, với Yahoo là 3 Petabytes. Với những
con số khổng lồ như thế nếu khơng có đầy đủ hệ thống phần cứng và phần mềm hỗ trợ
chúng ta sẽ không thể giải quyết được. Việc phát triển các hệ thống tính tốn mới, dựa
trên nền tảng phân tán là địi hỏi cấp thiết của q trình giải quyết các vấn đề về tính
tốn. Hiện nay một trong những mơ hình được quan tâm phát triển nhiều nhất là điện
tốn đám mây [1]. Nó vừa giúp giải quyết bài tốn về phần cứng khi tối ưu hóa, cung
cấp các giải pháp về phần cứng như máy chủ, hệ thống lưu trữ, các nền tảng tính tốn,
đến các hệ thống phần mềm như khung lập trình đều trở thành dịch vụ. Điện tốn đám
mây là mơ hình phát triển của các hệ thống trong tương lai, giúp chúng ta giải quyết
các vấn đề về mặt hạ tầng, dịch vụ, cung cấp những giải pháp tối ưu cho các hệ thống


8


thương mại, phục vụ nhiều người dùng, theo nhiều quy mô từ bé đến lớn, từ đơn giản
đến phức tạp, từ phục vụ mục đích riêng tư, đến mục đích cơng cộng.
1.2

Tối ưu hóa của q trình xử lý dữ liệu lớn, giải thuật MAPREDUCE ứng

dụng cho các nguồn dữ liệu cực lớn (TB, PB).
Các ứng dụng lớn trên Internet như hệ thống của Google, Yahoo!, Facebook đều
cần phải lưu trữ, xử lý và tương tác với lượng dữ liệu cực kỳ lớn. Lưu trữ có thể giải
quyết được khi được cung cấp đủ thiết bị phần cứng và có thuật tốn lưu trữ tốt. Việc
lưu trữ khơng đơn thuần chỉ là lưu trữ lên thiết bị lưu trữ như ổ cứng nói chung, mà cịn
phụ thuộc rất nhiều vào quá trình xử lý. Với lượng dữ liệu khổng lồ, chúng ta phải lựa
chọn các phương pháp lưu trữ phân tán, tạo thành các hệ thống file phân tán và có cơ
chế quản lý chúng.
Khi đã lưu trữ được dữ liệu, chúng ta cần một hệ thống xử lý đủ nhanh cho
lượng dữ liệu đó. Một trong những giải thuật được nhắc đến nhiều nhất trong những
năm gần đây phục vụ cho việc xử lý lượng dữ liệu lớn là MapReduce [8]. Những ưu
điểm của giải thuật MapReduce được ứng dụng giải quyết các bài toán dữ liệu lớn:
-

MapReduce là một giải thuật, được viết lại thành khung lập trình, hỗ trợ lập

trình phân tán một cách nhanh chóng. Giải thuật MapReduce dễ dàng triển khai trên
nhiều máy, việc thêm một máy vào để chạy giải thuật rất đơn giản, chỉ thơng qua các
file cấu hình.
-


MapReduce có thể đọc và xử lý được hầu hết các dữ liệu cơ bản, như các giải

thuật khác, nó có cơ chế để chia nhỏ khối dữ liệu lớn thành các khối dữ liệu nhỏ hơn,
chia cho các tác vụ thực hiện và tổng hợp kết quả.
-

MapReduce quản lý các tác vụ chạy song song trên các máy, một máy có thể

chạy nhiều tác vụ, một công việc được chia làm nhiều tác vụ, chia cho mỗi máy theo
khả năng. Nó có khả năng tổng hợp các kết quả chạy trên các máy khác nhau tạo ra kết
quả cuối cùng đưa lại cho người dùng.

9


-

MapReduce xử lý dữ liệu theo cặp giá trị key/value nên có khả năng xử lý

nhanh các bài tốn cơ bản.
Với những ưu điểm của giải thuật MapReduce như trên, chúng ta có thể xây
dựng nhiều ứng dụng thơng dụng như [43]:
-

Các bài toán thống kê: thống kê log, xử lý log, thống kê số lượng, thống kê thời

tiết,…
-


Các bài toán về khai phá dữ liệu, hệ thống giới thiệu (recommendation engines)

-

Các bài tốn về phân tích dữ liệu, xử lý gian lận

-

Bài toán về xác định mục tiêu đối tượng quảng cáo, phân phối quảng cáo đến

đúng đối tượng, với số lượng đúng mức.
-

Bài tốn về chất lượng tìm kiếm.

Tất cả các bài toán cần xử lý dữ liệu nói chung, đặc biệt là các bài tốn dữ liệu lớn
đều có thể sử dụng thuật tốn MapReduce.
1.3

Bài tốn tìm kiếm theo yêu cầu người sử dụng (Object searching by request)
Bài tốn tìm kiếm dữ liệu đã tồn tại một thời gian khá lâu. Khi dữ liệu ít, khơng

có nhiều thì bài tốn là khá đơn giản, có thể được thực hiện bằng vài lệnh của hệ điều
hành (hệ điều hành Linux). Tuy nhiên khi dữ liệu lớn lên, tăng trưởng theo từng ngày,
từng giờ, mức độ cập nhật thông tin ngày càng tăng lên thì vấn đề tìm kiếm chính xác
theo u cầu của người dùng càng khó khăn.
Những khó khăn chính của bài tốn tìm kiếm [44]:
-

Khả năng bao phủ nội dung: hệ thống tìm kiếm có khả năng bao phủ được


những nội dung người dùng cần thiết chưa? Với lượng dữ liệu khổng lồ trên Internet,
có chiến thuật hay giải thuật nào để có thể bao phủ được hết số lượng nội dung trên đó?
-

Khả năng cập nhật nội dung: tương tự như vấn đề bao phủ, thời gian cập nhật

nội dung mới sẽ là bao lâu, có đủ cung cấp nội dung mới cho người dùng hay không?

10


-

Trang thiết bị hoạt động: hệ thống máy móc để hoạt động, lưu trữ dữ liệu, băng

thông mạng, các hạ tầng khác.
-

Thuật tốn tìm kiếm, lưu trữ dữ liệu: làm sao để tìm kiếm và cung cấp nội dung

đúng như người dùng mong muốn?
-

Thời gian tìm kiếm: thời gian tìm kiếm phải thỏa mãn người dùng, không được

phép quá lâu, thông thường sẽ phải nhỏ hơn 1 giây.
Tại Việt Nam, theo thống kê của VNNIC đến tháng 9 năm 2010 có hơn 25 triệu
người sử dụng Internet [30], nhu cầu tìm kiếm và sử dụng các dịch vụ trực tuyến là rất
lớn. Các cơng cụ tìm kiếm trên thế giới như Google, Yahoo, Bing đã đáp ứng được

phần nào nhu cầu sử dụng của những người sử dụng ở Việt Nam. Tuy nhiên khó khăn
lớn nhất của các cơng cụ tìm kiếm đó là khả năng “hiểu” tiếng Việt, văn hóa Việt Nam.
Khi một người Việt Nam tìm kiếm, họ muốn kết quả tìm kiếm được phải thỏa mãn yêu
cầu của họ và mang phong cách Việt Nam và phải “hiểu” được nhu cầu của người
dùng Việt Nam. Đó là một thách thức lớn, nhưng cũng là một cơ hội lớn cho việc phát
triển hệ thống tìm kiếm thuần Việt ở Việt Nam.
Với tất cả những khó khăn và thách thức đó, chúng ta sẽ chọn giải pháp để xây
dựng và giải quyết những khó khăn đó. Một trong những phương pháp là xây dựng hệ
thống tìm kiếm dựa trên điện toán đám mây và giải thuật MapReduce. Việc sử dụng
điện toán đám mây, giúp cung cấp nền tảng hệ thống tốt nhất trong phạm vi giới hạn về
khả năng quản lý, tài chính để xây dựng ứng dụng. Sử dụng thuật toán MapReduce
giúp giải quyết những vướng mắc về kỹ thuật, giải pháp trong việc xây dựng bài tốn
tìm kiếm theo yêu cầu người sử dụng.
1.4

Nhiệm vụ trong luận văn
Trong luận văn này, tôi tập trung vào nghiên cứu ba phần chính:

11


-

Khái niệm về điện toán đám mây, cách thức xây dựng ứng dụng trên mơ hình

điện tốn đám mây. Cách thức vận hành một hệ thống trên môi trường điện toán đám
mây.
-

Giải thuật MapReduce, cách thức sử dụng và ứng dụng giải thuật trong các bài


toán xử lý dữ liệu, ứng dụng giải thuật MapReduce trong bài toán xây dựng máy tìm
kiếm.
-

Phương pháp xây dựng máy tìm kiếm: cách thức xây dựng các thành phần của

máy tìm kiếm, hệ thống thu thập nội dung, hệ thống đánh chỉ mục dữ liệu và hệ thống
tìm kiếm theo yêu cầu người dùng.
Trong các chương tiếp theo, chúng ta sẽ nghiên cứu các thành phần cấu thành
nên hệ thống bao gồm hai phần chính là điện tốn đám mây và giải thuật MapReduce
để xây dựng nên một hệ thống tìm kiếm hiệu quả.

12


CHƯƠNG 2

ĐIỆN

TỐN

ĐÁM

MÂY



GIẢI


THUẬT

MAPREDUCE
2.1

Khái niệm về Điện tốn đám mây
Điện tốn đám mây là một trong những thuật ngữ được nhắc đến nhiều nhất

trong thời gian qua. Điện toán đám mây là mơ hình điện tốn sử dụng các cơng nghệ về
máy tính và phát triển dựa vào mạng Internet. Nó là cơ sở để phát triển các ứng dụng
hướng dịch vụ, cung cấp các dịch vụ cho khách hàng thông qua một hạ tầng dịch vụ
chung.
Theo hệ thống định nghĩa về điện tốn đám mây [45], có 3 định nghĩa về điện
toán đám mây:
-

Định nghĩa một: việc lưu trữ và truy cập các ứng dụng và dữ liệu máy tính

thường thơng qua một trình duyệt Web thay vì chạy các phần mềm cài đặt trên máy
tính văn phịng cá nhân hoặc máy chủ.
-

Định nghĩa hai: điện toán dựa trên Internet, trong đó các thơng tin, nguồn lực

cơng nghệ thơng tin (CNTT) và ứng dụng phần mềm được cung cấp cho các máy tính
và các thiết bị di động theo yêu cầu.
-

Định nghĩa ba: Sử dụng Internet để truy cập các ứng dụng dựa trên Web, các


dịch vụ Web và cơ sở hạ tầng như một dịch vụ.
Như vậy theo các định nghĩa, điện tốn đám mây là việc ảo hóa (virtualized) các
tài ngun điện tốn và các ứng dụng trên đó.
Theo các định nghĩa đó, mơ hình điện tốn đám mây có các đặc trưng chính:
-

Cho phép sử dụng dịch vụ theo yêu cầu (on-deaman serivce).

-

Cung cấp khả năng truy cập dịch vụ rộng rãi từ các thiết bị đầu cuối như máy

tính để bàn, máy tính xách tay, thiết bị di động.
-

Tài ngun tính tốn động, phục vụ cho nhiều người sử dụng, năng lực tính tốn

mềm dẻo, đáp ứng nhanh các nhu cầu sử dụng từ thấp đến cao.

13


-

Ngồi ra việc sử dụng điện tốn đám mây, người sử dụng và nhà cung cấp dịch

vụ có thể quản lý, theo dõi việc sử dụng các tài nguyên, giúp nhà cung cấp tối ưu hóa
tài nguyên, giúp người sử dụng chỉ phải trả số tiền dựa vào tài nguyên đã sử dụng.

Hình 2.1-1: Mơ hình điện tốn đám mây [46]

2.1.1 Lịch sử Cloud computing
Những khái niệm đầu tiên về điện toán đám mây được đưa ra từ những năm
1960 khi John McCarthy cha đẻ của thuật ngữ “Trí tuệ nhân tạo” phát biểu rằng “một
ngày nào đó có thể tính tốn sẽ được tổ chức lại như là một tiện ích cơng cộng”.
Thuật ngữ “đám mây” được vay mượn từ ngành viễn thông, khi cung cấp mạng
riêng ảo (VPN – Virtual Private Networking).
Amazon đóng vai trị quan trọng trong việc xây dựng điện toán đám mây bằng
cách hiện đại hóa trung tâm dữ liệu sau bong bóng dot-com. Amazon cung cấp điện
toán đám mây cho khách hàng, dịch vụ AWS – Amazon Web Service [3] vào năm
2006.
Trong năm 2007, Google, IBM và một số trường đại học cũng bắt tay vào một
dự án nghiên cứu quy mô lớn điện toán đám mây. Eucalyptus [4] trở thành dự án mã
mở đầu tiên triển khai điện toán đám mây riêng tư và mạng máy tính. Google cung cấp

14


giải pháp Google App Engine [51], ở đó Google đã cung cấp sẵn hệ thống hạ tầng điện
toán đám mây, người lập trình chỉ cần viết ứng dụng của mình lên đó.
2.1.2 Các đặc tính chính của Cloud Computing
Điện tốn đám mây mang lại những đặc tính quan trọng, tiện lợi, dễ sử dụng
hơn những mơ hình tính tốn khác. Những đặc tính chính của điện tốn đám mây:
-

Khả năng mở rộng theo yêu cầu dịch vụ: điện toán đám mây cung cấp các tài

nguyên, dịch vụ cho người dùng theo yêu cầu. Các tài nguyên được mở rộng trên nhiều
trung tâm dữ liệu, có thể tập trung hoặc phân tán.
-


Độc lập về không gian và thiết bị: người dùng có thể truy cập, sử dụng tài

nguyên hệ thống ở mọi lúc, mọi nơi thơng qua trình duyệt web, bằng nhiều thiết bị, có
thể là máy tính cá nhân hay thiết bị di động. Chỉ cần kết nối Internet, người dùng có thể
kết nối ở bất kỳ nơi nào.
-

Linh hoạt: người sử dụng có thể sử dụng nhanh chóng, khơng tốn kém các

nguồn tài nguyên. Người dùng có thể được đảm bảo chất lượng dịch vụ về phần cứng,
hiệu suất, băng thông, dung lượng bộ nhớ.
-

Hệ thống tập trung tự động: tất cả các cơ sở hạ tầng đều được tập trung tại các

địa điểm với chi phí thấp hơn, dễ dàng quản lý, bảo trì hơn khi các dịch vụ được tập
trung, không cài phân tán trên các máy người sử dụng.
-

Giá thành: việc sử dụng điện toán đám mây, giúp người dùng khơng phải đầu tư

tồn bộ chi phí về hạ tầng, thiết bị. Ngồi ra khơng cần th thêm chi phí nhân lực bảo
trì, bảo dưỡng hệ thống máy móc. Khơng bị lãng phí hệ thống khi không cần dùng
trong một thời gian, chỉ phải trả tiền cho thời gian sử dụng hệ thống.
2.2

Các nhánh chính của điện toán đám mây
Điện toán đám mây được chia làm 4 lớp chính:

15



Hình 2.2-1: Các lớp của điện tốn đám mây
Chúng ta sẽ nghiên cứu từng lớp của điện toán đám mây.
2.2.1 Phần mềm hoạt động như một dịch vụ (SaaS - Software as a Service)
Phần mềm hoạt động như một dịch vụ là lớp trên cùng của điện toán đám mây.
Đây là tập hợp các ứng dụng cung cấp cho người dùng theo yêu cầu, nó được cài đặt và
chạy trong các hệ thống đám mây, được quản trị, quản lý bởi những nhà cung cấp. Mục
đích của hệ thống là giúp người dùng có thể sử dụng ứng dụng ở mọi lúc, mọi nơi bằng
bất kỳ loại thiết bị tương thích nào. Việc truy cập các ứng dụng chủ yếu qua Internet và
phần mềm như là một dịch vụ, phục vụ người dùng khi có yêu cầu. Người dùng có thể
sử dụng các dịch vụ để sử dụng các ứng dụng ở những địa điểm khác nhau, không nhất
thiết phải cài đặt lên thiết bị của họ (máy tính cá nhân,…). Thơng thường người sử
dụng chỉ phải sử dụng trình duyệt Web để truy cập các ứng dụng này.
Một trong những ưu điểm lớn nhất của tính năng này là phục vụ tập trung. Tất
cả ứng dụng đều được lưu trữ và xử lý ở phía đám mây, khách hàng chỉ sử dụng những
công cụ đơn giản để truy cập. Việc này giúp khách hàng dễ dàng sử dụng, không cần
thiết phải cài đặt các ứng dụng lên thiết bị, giúp người quản trị, quản lý ứng dụng dễ
dàng quản lý, bảo trì, nâng cấp, cải tiến ứng dung. Ngồi ra, ứng dụng cũng cung cấp
những dịch vụ đo lường, giúp người dùng chỉ phải trả tiền cho thời gian sử dụng ứng

16


dụng, không như những phần mềm được cài đặt trên thiết bị, phải trả tiền cho tồn bộ
q trình từ cài đặt kể cả lúc không sử dụng.
Một trong những ứng dụng tiêu biểu nhất là Google Apps [18]. Khách hàng có
thể sử dụng những cơng cụ phục vụ cơng việc thơng qua nền web như: email, hệ thống
văn phịng như Word, Spreadsheets, Presentation,….
2.2.2 Nền tảng như một dịch vụ (PaaS - Platform as a Service)

Nền tảng như một dịch vụ là việc cung cấp nền tảng tính tốn như một dịch vụ.
Nó cung cấp một mơi trường thực thi phần mềm mà các dịch vụ ứng dụng có thể chạy
trên đó. PaaS cung cấp điều kiện triển khai ứng dụng mà khơng cần các chi phí và phức
tạp trong việc mua và quản lý phần cứng, phần mềm cơ bản. Nó cung cấp tất cả các
phương tiện cần thiết để hỗ trợ việc xây dựng, phát triển các ứng dụng từ đầu đến lúc
hoàn thành.
Nền tảng như một dịch vụ cung cấp những đặc điểm chính:
-

Cung cấp các dịch vụ cho quá trình phát triển, kiểm thử, triển khai, đưa dịch vụ,

duy trì các ứng dụng trong cùng một mơi trường phát triển tích hợp.
-

Các cơng cụ tạo giao diện người dùng dựa trên nền Web

-

Cung cấp kiến trúc phục vụ cho nhiều người sử dụng.

-

Tích hợp với Web Service và CSDL.

-

Hỗ trợ cho sự phát triển đội ngũ cộng tác.
Hai ứng dụng tiêu biểu của PaaS là Google App Engine và Microsoft Azure.

Google App Engine cung cấp môi trường phát triển cho những nhà phát triển trên hai

ngôn ngữ chính là Java và Python. Microsoft Azure cung cấp môi trường phát triển cho
.NET framework, hỗ trợ các ngôn ngữ .NET, ngoài ra cũng hỗ trợ PHP, Java và Ruby.
2.2.3 Hạ tầng hoạt động như một dịch vụ (IaaS – Infrastructure as a Service)
Cơ sở hạ tầng như một dịch vụ có thể hiểu đơn giản đó là phần cứng như là một
dịch vụ. Thay vì phải xây dựng các hệ thống server lớn (farm, data center), các công ty

17


nhỏ có thể trả tiền để sử dụng cơ sở hạ tầng được cung cấp bởi các doanh nghiệp
chuyên nghiệp. Các công ty như Google, Microsoft, IBM và Amazon đang cung cấp
những dịch vụ đó. Khả năng mở rộng của phần cứng máy tính và mạng máy tính kết
nối cao là những thành phần cơ bản của IaaS hiệu quả.
Cơ sở hạ tầng như một dịch vụ có thể chia làm hai loại:
-

Tính tốn như một dịch vụ (Computation as a Service – CaaS), trong đó các

máy chủ dựa trên máy ảo được thuê, và tính phí theo giờ sử dụng, công suất máy chủ
yếu là CPU, dung lượng bộ nhớ RAM, các tính năng của máy ảo, hệ điều hành và các
phần mềm được triển khai.
-

Dữ liệu như một dịch vụ (Storage as a Server – SaaS), trong đó không gian lưu

trữ dữ liệu không giới hạn được sử dụng để lưu trữ các loại dữ liệu của người dùng, và
chi phí được tính trên tổng dung lượng lưu trữ và truyền tải dữ liệu (tính theo GB).
Hai ứng dụng tiêu biểu của IaaS là Amazon EC2 và Amazon S3. Amazon EC2
là CaaS và Amazon S3 là SaaS [19] [20].
2.3


Các hệ thống Cloud Computing tiêu biểu

2.3.1 Google App Engine
Google App Engine được cung cấp bởi Google, là một môi trường phát triển,
triển khai ứng dụng Web trên các trung tâm dữ liệu do Google quản lý. Google App
Engine đề xuất phương pháp phát triển và triển khai nhanh, quản trị đơn giản, không
cần quan tâm đến các vấn đề phần cứng, dễ dàng mở rộng. Khi sử dụng Google App
Engine, rất dễ dàng để xây dựng ứng dụng, dễ dàng bảo trì, mở rộng theo sự tăng
trưởng của lưu lượng người sử dụng và lượng dữ liệu cần lưu trữ. Khi sử dụng Google
App Engine, người sử dụng không cần quan tâm đến các server, chỉ cần đưa ứng dụng
lên rồi hoạt động để phục vụ những đối tượng khách hàng của mình. Google App
Engine là ứng dụng PaaS, hỗ trợ hai ngơn ngữ lập trình chính là Python và Java, ngoài
ra cũng hỗ trợ người dùng sử dụng BigTable và GFS – Google File System.

18


Những ưu điểm lớn nhất của Google App Engine:
-

Quản lý tập trung: người sử dụng chỉ cần quan tâm đến ứng dụng của mình,

khơng cần phải quan tâm đến các hệ thống khác như server, đường truyền mạng.
-

Độ tin cậy và khả năng hỗ trợ: hỗ trợ trực tuyến, 99,9% thời gian trên mạng.

-


Bảo mật mặc định: chỉ những người dùng trong khu vực Google App mới có thể

truy cập vào ứng dụng theo mặc định
-

Giá thành rẻ: mỗi ứng dụng giá trung bình 8$ để sử dụng cho mỗi người dùng,

và tối đa 1000$ một tháng, chỉ phải trả tiền khi sử dụng. Mỗi người sử dụng được miễn
phí 500MB lưu trữ và 5M pageviews trong một tháng. Ngoài ra Google App Engine
cịn hỗ trợ những cơng nghệ mở rộng như GFS và BigTable.
2.3.2 Microsoft Azune
Dịch vụ Microsoft Azure cung cấp nền tảng ứng dụng trên môi trường đám mây
cho phép những ứng dụng được đưa lên và chạy ở trung tâm dữ liệu của Microsoft.
Dịch vụ Microsoft Azure cung cấp một hệ điều hành đám mây là Microsoft Azure, và
mọi ứng dụng đều chạy trên hệ điều hành đám mây này. Microsoft Azure cũng là một
ứng dụng PaaS, nó cho phép phát triển, quản lý và đưa các ứng dụng lên.
Microsoft Azure bao gồm 3 thành phần chính: Compute, Storage và Fabric.
-

Compute cung cấp mơi trường tính tốn với Web Role và Worker Role.

-

Storage tập trung vào việc cung cấp khả năng mở rộng lưu trữ (Blobs, Tables,

Queues, Drives) cho yêu cầu mở rộng lớn.
-

Fabric cung cấp mô hình ứng dụng ở mức độ cao, cho việc quản lý thơng minh


quy trình phát triển ứng dụng hồn chỉnh bao gồm: phát triển, giám sát hệ thống, nâng
cấp và bỏ kích hoạt.
Hiện tại các dịch vụ của Microsoft Azure đang chạy trên nền .NET framework,
có hỗ trợ PHP. Ngồi ra nó cũng có thể tích hợp với 2 SDK cơ bản: Java SDK cho
AppFabric và Ruby SDK cho AppFabric, nên cho phép các lập trình viên Java và Ruby
tích hợp với AppFabric.

19


2.3.3 Amazon Elastic Compute Cloud (EC2)
Amazon đã cung cấp một giải pháp phổ thơng và tồn diện cho điện tốn đám
mây, có tên là Amazon Elastic Compute Cloud – EC2 [19]. Giải pháp này được công
bố vào ngày 25 tháng 8 năm 2006. EC2 là dịch vụ CaaS. Ngày nay EC2 cung cấp đầy
đủ khả năng kiểm soát các tài nguyên máy tính của khách hàng, một máy chủ mới có
thể thiết lập và khởi động trong vài phút và khả năng mở rộng nhanh chóng thơng qua
giao diện Web đơn giản.
EC2 cung cấp nhiều tính năng hữu ích cho khách hàng, giá thành không quá đắt,
khả năng triển khai ở nhiều địa điểm, hệ thống địa chỉ IP mềm dẻo, kết nối với hệ
thống hạ tầng hiện tại của khách hàng thông qua VPN, giám sát các dịch vụ bằng
Amazon CloudWatch, và cân bằng tải mềm dẻo. EC2 đã được triển khai chính xác và
nó trở thành chuẩn mực của điện toán đám mây.
EC2 cung cấp các instance theo những cấu hình cơ bản: theo hệ điều hành
Linux-Window, theo cấu hình máy Small-Large-Extra Large và bổ sung thêm các cấu
hình yêu cầu về RAM, CPUs. Tất cả giá sử dụng máy được tính theo giờ và theo khu
vực đặt máy.

Hình 2.3-1: Giao diện sử dụng EC2 [19]

20



2.3.4 Amazon Simple Storage Service (S3)
Amazon Simple Storage Server (S3) [20] là một dịch vụ lưu trữ trực tuyến được
cung cấp bởi Amazon Web Service. S3 được truy cập thông qua Web Service, giao
diện REST HTTP, 1 hoặc liên quan đến giao diện SOAP. S3 là dịch vụ SaaS. Giống
như các dịch vụ điện toán đám mây khác, người dùng có thể yêu cầu dung lượng lưu
trữ lớn hay nhỏ để được cung cấp hệ thống lưu trữ có khả năng mở rộng cao.
Amazon S3 tổ chức không gian lưu trữ theo từng “buckets”, mỗi bucket được
gán một không gian tên duy nhất trên toàn cầu để xác định vị trí địa chỉ dữ liệu, xác
định tài khoản sử dụng để thanh tốn, và thu thập các thơng tin truy cập. S3 coi tất cả
các kiểu dữ liệu là các đối tượng, và lưu trữ chúng với các thông tin thêm vào các
bucket được người dùng lựa chọn. Mỗi đối tượng có thể truy cập thơng qua URL được
tổng hợp bằng khóa của nó, và ID của phiên bản với không gian tên bucket là tiền tố.
Người sử dụng S3 trải rộng trên nhiều lĩnh vực như SmugMug, SlideShare và Twitter
đã sử dụng Amazon S3 để lưu trữ hình ảnh.
Apache Hadoop sử dụng S3 để lưu trữ dữ liệu tính tốn, và đồng bộ hóa trực
tuyến.
Các dịch vụ trực tuyến như Dropbox, Ubuntu One sử dụng S3 như không gian
lưu trữ của mình.
Amazon S3 cung cấp các gói sử dụng không gian lưu trữ dữ liệu theo độ chắc
chắn của dữ liệu, theo GB lưu trữ, lưu lượng dữ liệu chuyển qua hệ thống và số lượng
request vào hệ thống.

21


Hình 2.3-2: Giao diện sử dụng Amazon S3 [20]
2.4


Ứng dụng Cloud Computing trong tìm kiếm thơng tin
Các hệ thống tìm kiếm thông tin phải đối mặt với vấn đề lượng dữ liệu lớn, tần

suất truy vấn cao đồng thời các yêu cầu cần phải được xử lý với độ trễ thấp. Nếu như
sử dụng các trung tâm tính tốn tập trung thì khơng chỉ tốn kém, cịn gặp vấn đề về
việc mở rộng theo yêu cầu của ứng dụng. Nền tảng điện tốn đám mây có thể được sử
dụng như là hạ tầng kinh doanh cốt lõi, cung cấp khả năng lưu trữ dữ liệu lớn, quản lý
và xử lý. Điện tốn đám mây có những ưu điểm dưới đây:
-

Thứ nhất là chi phí thấp. Các hệ thống điện tốn đám mây khơng mất chi phí để

xây dựng hạ tầng, thiết bị, lưu trữ, theo dõi. Ngoài ra, người dùng chỉ phải trả tiền cho
thời gian sử dụng, không phải thuê theo toàn bộ định kỳ. Việc này giúp người sử dụng
có thể tính tốn được thời gian sử dụng, nguồn tài nguyên sử dụng và có thể đưa ra
được kế hoạch sử dụng hợp lý.
-

Thứ hai là độ linh hoạt. Các hệ thống điện toán đám mây là nền tảng phân tán,

kiến trúc ràng buộc lỏng. Nó có khả năng mở rộng tốt và chi phí quản lý hệ thống nhỏ.
Kể từ khi điện tốn đám mây có thể được xây dựng bằng cách sử dụng không đồng

22


nhất các nút, các doanh nghiệp và tổ chức nghiên cứu có thể tái sử dụng các phần cứng
trong thiết bị hiện tại, và tạo điều kiện để chuyển đổi từ hệ thống hiện tại sang nền tảng
điện toán đám mây.
-


Thứ ba là sự dễ dàng mở rộng trong kinh doanh. Trong thời đại của điện toán

đám mây, nhiều ứng dụng có thể chia sẻ nền tảng điện tốn đám mây. Ví dụ các ứng
dụng thư điện tử, có thể kết hợp với hệ thống đưa quảng cáo hoặc các ứng dụng nâng
cao tính sử dụng của hệ thống, để gia tăng lợi nhuận.
Tuy nhiên, những ưu điểm của điện toán đám mây trên đây, về cơ bản là mặt
phần cứng, về các cách tổ chức, sử dụng các thiết bị hạ tầng để đáp ứng các yêu cần
cần thiết của bài tốn tìm kiếm dữ liệu. Chúng ta cần một hệ thống mềm, cung cấp các
chức năng cần thiết để xây dựng, vận hành hệ thống tìm kiếm. Hệ thống này cần được
triển khai trên môi trường phân tán để sử dụng được nền tảng của điện toán đám mây.
Ngồi ra cịn phải có khả năng xử lý được lượng dữ liệu lớn, trong thời gian đáp ứng.
Và giải thuật đó được cung cấp bởi Google có tên là MapReduce [8].
2.5

Lịch sử phát triển Mapreduce
MapReduce lần đầu tiên được giới thiệu vào tháng 12 năm 2004 bởi Jeffrey

Dean [6] và Sanjay Ghemawat [7] tại San Fracisco [8]. MapReduce được định nghĩa là
một mơ hình lập trình, một sự thực thi được kết hợp nhằm xử lý và sinh ra tập dữ liệu
lớn. Người dùng xác định hàm Map xử lý một cặp key/value để sinh ra tập các giá trị
key/value trung gian, và hàm reduce sẽ kết hợp tất cả các giá trị trung gian liên hệ với
cùng một key. Mục đích của MapReduce là tạo ra một khung lập trình (framework), hỗ
trợ tính tốn phân tán trên cluster lớn. Các tác vụ (task) sẽ được tạo cho từng công việc
(job), phân chia cho các máy xử lý song song trong môi trường phân tán và tổng hợp
kết quả.
Google MapReduce được viết bằng C++ và có các giao diện cho Python và
Java.

23



Sau khi Google cơng bố thuật tốn MapReduce, có rất nhiều hệ thống đã sử
dụng ý tưởng để viết lại các khung lập trình theo mơ hình này. Chúng ta có thể tham
khảo các hệ thống nổi bật đã sử dụng ý tưởng MapReduce
-

Hadoop MapReduce: được viết lại theo mô hình MapReduce của Google bởi

Doug Cutting [9]. Doug Cutting đồng thời tạo ra Lucene [47], Nutch [31], Hadoop
[32], phát triển hệ thống MapReduce của Yahoo, và Cloudera [48]. Hadoop
MapReduce thừa kế hầu hết các ý tưởng của Google MapReduce, Google Distributed
File System, và trở thành một trong những dự án lớn mã mở nhất hiện nay của Apache
Foundataion System, được sử dụng rất nhiều trên thế giới.
-

Yahoo MapReduce: được phát triển bởi Doug Cutting khi Doug Cutting gia

nhập Yahoo. Hệ thống hiện đang được Yahoo sử dụng để xử lý các bài toán dữ liệu
lớn.
-

CouchDB [10] MapReduce sử dụng khung lập trình MapReduce để định nghĩa

khung nhìn cho các tài liệu phân tán và cũng được triển khai trong ngôn ngữ Erlang.
-

Mars [11]: khung lập trình MapReduce cho chip xử lý đồ họa.

-


Hive [12]: mã nguồn mở được Facebook sử dụng, cung cấp ngôn ngữ tương tự

như SQL, dựa trên Hadoop MapReduce.
Khung lập trình MapReduce được sử dụng trong các hệ thống
Tại Google:
-

Xây dựng dữ liệu index cho hệ thống tìm kiếm của Google.

-

Xây dựng cụm những bài báo cho hệ thống Google News.

-

Sử dụng trong quá trình dịch máy theo phương pháp thống kê – Statistical

Machine Translation [49]
Tại Yahoo!:
-

“Web Map” cung cấp kết quả cho Yahoo! Search

-

Phát hiện Spam trong Yahoo! Mail

Tại FaceBook:


24


-

Sử dụng trong khai phá dữ liệu

-

Tối ưu hóa các quảng cáo

-

Phát hiện spam.

Tại Baamboo:
-

Xây dựng dữ liệu index cho các hệ thống tìm kiếm của Baamboo

Tại VNTEAM:
-

Xây dựng hệ thống thu thập và phân tích 1,5 tỷ trang web tiếng anh.

Mục tiêu của khung lập trình MapReduce:
-

Khả năng mở rộng phục vụ lượng dữ liệu lớn: mở rộng đến hàng nghìn máy với


hàng chục nghìn ổ đĩa lưu trữ dữ liệu.
-

Hiệu quả kinh tế: chạy được trên hệ thống các máy tính “cơ bản”, khơng cần

thiết chạy trên các hệ thống máy tính lớn. Tự động chịu lỗi và dễ lập trình.
2.6

Kỹ thuật lập trình MapReduce
Kỹ thuật lập trình MapReduce bao gồm 2 bước chính là Map và Reduce. Map

xử lý một cặp key/value và sinh ra các cặp key/value trung gian. Reduce sẽ nhóm các
value của cùng một key trung gian.

25


×