1. Trang chủ
  2. » Công Nghệ Thông Tin

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

78 317 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 1,58 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 toán Mô hình tính toán các hệ thống phát triển qua nhiều thời kỳ,

Trang 1

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

HOÀ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

Trang 2

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 toán 7

1.2 Tối ưu hóa của quá 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 toá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 ĐIỆN TOÁN ĐÁM MÂY VÀ GIẢI THUẬT MAPREDUCE 13

2.1 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 toá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

Trang 3

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 TOÁ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 toá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 toán tìm kiếm 40

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

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

3.2.3 Thuật toá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 toá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

Trang 4

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 toá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

Trang 5

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 toán đám mây [46] 14

Hình 2.2-1: Các lớp của điện toá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: Quá 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

Trang 6

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

Trang 7

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 toán

Mô hình tính toá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 toán (từ lập trình cấp thấp, lập trình cấp cao, tính toán song song, tính toá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 toá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 toán cho các đơn vị dữ liệu lớn

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

Trang 8

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 toá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 toá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 quá trình giải quyết các vấn đề về tính toá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 toán đám mây [1] Nó vừa giúp giải quyết bài toá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 toá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 toá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

Trang 9

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 quá 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 toá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

Trang 10

- 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 toá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 toá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 toá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 toán dữ liệu lớn đều có thể sử dụng thuật toán MapReduce

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

Bài toá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 toá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 yê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 toá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?

Trang 11

- 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 toá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 toá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:

Trang 12

- 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 toá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 toá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ả

Trang 13

CHƯƠNG 2 ĐIỆN TOÁN ĐÁM MÂY VÀ GIẢI THUẬT MAPREDUCE

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

Điện toá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 toá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 toá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 toán đám mây là việc ảo hóa (virtualized) các tài nguyên điện toán và các ứng dụng trên đó

Theo các định nghĩa đó, mô hình điện toá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 nguyên tính toán động, phục vụ cho nhiều người sử dụng, năng lực tính toán mềm dẻo, đáp ứng nhanh các nhu cầu sử dụng từ thấp đến cao

Trang 14

- Ngoài ra việc sử dụng điện toá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 toá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 toá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

Trang 15

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 toá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 toán khác Những đặc tính chính của điện toá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ư toàn bộ chi phí về hạ tầng, thiết bị Ngoài ra không cần thuê 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:

Trang 16

Hình 2.2-1: Các lớp của điện toá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 Ngoà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

Trang 17

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 toàn bộ quá 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 toá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

Trang 18

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 toá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

Trang 19

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 toá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 hoà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 Ngoà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

Trang 20

2.3.3 Amazon Elastic Compute Cloud (EC2)

Amazon đã cung cấp một giải pháp phổ thông và toàn diện cho điện toá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]

Trang 21

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 toá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

Trang 22

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 toá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 toá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 toá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 toá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 toá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 toán đám mây có thể được xây dựng bằng cách sử dụng không đồng

Trang 23

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 toá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 toá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 Ngoà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 toá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

Trang 24

Sau khi Google công bố thuật toá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:

Trang 25

- 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

Trang 26

Hàm map tách các dữ liệu đầu vào thành các cặp key/value trung gian

Ví dụ: đầu vào dữ liệu là hai câu: “Hello World Bye World”, “Hello Hadoop Goodbye Hadoop” và mục đích của map là tách riêng từng từ thì kết quả của quá trình map sẽ là:

Trang 27

Map sẽ tách hai câu input đầu vào, thành các cặp key/value trung gian, trong đó key là từ, còn value là vị trí của câu chứa từ đó

2.6.2 Reduce Function

Hàm reduce thực hiện công việc:

reduce 〈 k2, list 〈 v2 〉 〉 →list 〈 v3 〉

Hàm reduce nhận dữ liệu từ đầu ra của hàm map, thực hiện 3 thao tác chính sort: sắp xếp lại các key trung gian theo một thứ tự đã xác định

Ví dụ ở trên, các cặp giá trị trung gian sẽ được sắp xếp lại theo thứ tự chữ cái như sau:

Câu thứ nhất:

〈 Bye, 1 〉 , 〈 Hello, 1 〉 , 〈 World, 1 〉 , 〈 World, 1 〉

Câu thứ hai:

〈 Goodbye, 1 〉 , 〈 Hadoop, 1 〉 , 〈 Hadoop, 1 〉 , 〈 Hello, 1 〉

reduce: nhóm các giá trị trung gian cho cùng một key

Ví dụ ở đây, sẽ nhóm các giá trị cho cùng các key là các chữ cái

Câu thứ nhất:

〈 Bye, 1 〉 , 〈 Hello, 1 〉 , 〈 World, 2 〉

Câu thứ hai:

〈 Goodbye, 1 〉 , 〈 Hadoop, 2 〉 , 〈 Hello, 1 〉

Như vậy kết quả cuối cùng của reduce đối với cả hai câu sẽ là:

〈 Bye, 1 〉 , 〈 Goodbye, 1 〉 , 〈 Hadoop, 2 〉 , 〈 Hello, 2 〉 , 〈 World, 2 〉

Dưới đây sẽ là minh họa đầy đủ của quá trình xử lý dữ liệu từ map đến reduce

Trang 28

Hình 2.6-2: Quá trình xử lý MapReduce

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

Khung lập trình Hadoop của Apache thực thi giải thuật MapReduce đã được sử

dụng bởi hơn 10000 lập trình viên trên khắp thế giới Ngoài ra các cá nhân, tổ chức

cũng phát triển rất nhiều ứng dụng trên nền giải thuật MapReduce để giải quyết các bài

toán nan giải về các hệ thống tính toán lớn trên thế giới như Google, FaceBook,

Amazon, Yahoo!,…

Ở đây, tôi xin trình bày hai ví dụ tiêu biểu nhất về cách ứng dụng giải thuật

MapReduce trong các ứng dụng Từ ứng dụng cực kỳ lớn của Google, Yahoo! trong

việc sắp xếp dữ liệu với hệ thống cluster hàng nghìn máy, đến ví dụ kinh điển nhất của

giải thuật MapReduce khi thống kê, tính toán các bài toán về tần suất sử dụng thông

qua dữ liệu log của một hệ thống Việc ứng dụng giải thuật MapReduce có thể chạy

Trang 29

trên từng máy đơn, hoặc chạy trên một cụm cluster với hàng nghìn máy để giải quyết được hầu hết các bài toán về xử lý dữ liệu

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

Vào đầu năm 2007, Jim Gray và sau đó là Chris Nyberg, Mehul Shal, Naga Govindaraju đã cung cấp hệ thống dữ liệu chuẩn để đo hiệu năng của các hệ thống tính toán, có tên là Sort Benchmark [14] Hệ thống cung cấp 1TB (1 terabyte = 1000 Gigabyte), 1PB (1 petabyte = 1000 terabyte) dữ liệu quy chuẩn để các hệ thống chạy thử nghiệm và tính toán hiệu năng của mình

Google và Yahoo đã thử nghiệm hệ thống xử lý MapReduce của mình với dữ liệu chuẩn của hệ thống Sort Benchmark 1TB, 1PB dữ liệu và đã công bố những kết quả đáng kinh ngạc

Thử nghiệm lần đầu tiên của Yahoo! [15]

Yahoo! thực hiện thử nghiệm sắp xếp dữ liệu lần đầu tiên vào năm 2008, 1 Hadoop cluster đã sắp xếp 1 terabyte dữ liệu trong vòng 209 giây

Thống kê của cluster:

- 910 máy

- 2 quad core Xeon 2.0ghz mỗi máy

- 4 ổ đĩa SATA mỗi máy

- 8G RAM mỗi máy

- Đường mạng 1 gigabit giữa các máy trong cùng rack

- 40 máy đặt trong một rack

- Đường mạng 8 gigabit giữa các máy ở khác rack

- Hệ điều hành Red Hat Enterprise Linux Server Release 5.1 (kernel 2.6.18)

- Sun Java JDK 1.6.0_05-b13

Thử nghiệm của Google [16]

Vào tháng 11 năm 2008, Google công bố những số liệu thử nghiệm của bài toán sắp xếp đo hiệu quả

Trang 30

Thử nghiệm sắp xếp 1TB dữ liệu

- Thời gian: 68 giây

- Số lượng máy trong cluster: 1000 máy

Thử nghiệm sắp xếp 1PB dữ liệu

- Thời gian: 6 giờ và 2 phút tương đương 362 phút

- Số lượng máy trong cluster: 4000 máy

Đây thật sự là những con số rất ấn tượng, thể hiện khả năng xử lý tuyệt vời của

hệ thống Google MapReduce

Thử nghiệm lần thứ hai của Yahoo! [17]

Vào tháng 5 năm 2009, Yahoo! tiếp tục thử nghiệm phép đo hiệu năng của Jim

Gray với dữ liệu test là 1TB và 1PB

Kết quả như sau:

100.000.000.000.000 3452 190.000 10.000 2 173 phút

1.000.000.000.000.000 3658 80.000 20.000 2 975 phút

Bảng 2.7-1: Kết quả sắp xếp dữ liệu của Yahoo! [17]

So sánh các kết quả của hai hệ thống Yahoo MapReduce và Google

MapReduce, chúng ta có thể thấy:

Trong lần thử nghiệm sắp xếp 1TB, cluster của Yahoo với 1406 nút và chạy lưu

duy nhất một bản dữ liệu chạy tốt hơn Google MapReduce khi hết 59 giây, trong khi

Google hết 68 giây cho dù cluster chỉ chạy với 1000 nút, ít hơn 29%

Trong lần thử nghiệm sắp xếp 1PB, cluster của Yahoo với 3658 nút chạy lưu trữ

2 bản sao dữ liệu chạy chậm hơn rất nhiều so với Google MapReduce Yahoo

MapReduce sử dụng 975 phút để sắp xếp, trong khi Google MapReduce chỉ cần sử

dụng 362 phút, với cluster 4000 nút, nhiều hơn 9% so với cluster của Yahoo

Trang 31

Chúng ta có thể so sánh hai hệ thống của Google và Yahoo trong cùng bài toán sắp xếp dữ liệu Hệ thống Google MapReduce hoạt động hiệu quả hơn rất nhiều so với

hệ thống của Yahoo khi xử lý một lượng dữ liệu lớn (PB), hệ thống của Yahoo hoạt động tốt hơn một chút ở lượng dữ liệu nhỏ hơn (TB) Điều này giải thích vì sao trong thực tế, hệ thống tìm kiếm, xử lý dữ liệu của Google tốt hơn rất nhiều so với hệ thống của Yahoo Từ hệ thống tìm kiếm, đến hệ thống lưu trữ, xử lý dữ liệu, Google đang dẫn đầu, tiên phong về mặt công nghệ

Như vậy với phương pháp sử dụng mô hình lập trình MapReduce, đã giúp giải quyết bài toán xử lý dữ liệu lớn và rất lớn

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

Hệ thống logging ghi nhận lại toàn bộ các hoạt động của hệ thống các website

và các tương tác của người dùng trong hệ thống Mỗi khi một người dùng xem một trang, tạo ra một pageview và dữ liệu này sẽ được ghi vào server thành một bản ghi, tương đương với một dòng có chứa các dữ liệu sau:

- Mã xác định người dùng

- IP của người dùng

- URL mà người dùng vừa xem

- Danh sách các banner mà người dùng đó vừa xem

- Thời gian người dùng vào trang

Mỗi khi người dùng click vào một banner, một bản ghi tương tự như trên cũng được ghi vào hệ thống

Một ngày hệ thống xử lý trung bình 1 tỷ bản ghi, cần thống kê các con số như sau:

- Số lượng người dùng duy nhất đã vào trang web

- Mỗi người dùng đã xem bao nhiêu banner, mỗi banner đã được xem bởi bao nhiêu người

Trang 32

- Mỗi người dùng click vào bao nhiêu banner và mỗi banner được click bởi bao nhiêu người

Sử dụng giải thuật MapReduce, chúng ta có thể tính toán được toàn bộ các yêu cầu trên trong thời gian giới hạn một ngày

Phương pháp: sử dụng giải thuật MapReduce

- Map:

o Tách mỗi bản ghi ra thành một dòng đọc đầu vào

o Tách dữ liệu trong mỗi bản ghi, sử dụng mã xác định người dùng là key, value là các giá trị về banner người đó đã click, banner người đó đã view

- Reduce:

o Nhóm các key/value trung gian của giai đoạn map và tính toán

Chúng ta sẽ tính được các yêu cầu của đề bài: số lượt người duy nhất vào website, số banner đã xem của mỗi người, số click vào banner của mỗi người

Với cách xử lý tương tự, lấy banner làm key và value là số lượt view, click của mỗi người sử dụng, chúng ta có thể tính được: mỗi banner được xem bởi bao nhiêu người, mỗi banner được click bởi bao nhiêu người

Tóm lại chương 2 tập trung vào nghiên cứu khái niệm về điện toán đám mây và giải thuật MapReduce Điện toán đám mây bao gồm 3 dịch vụ chính là: hạ tầng như là một dịch vụ (IaaS), nền tảng như là một dịch vụ (PaaS) và phần mềm như là một dịch

vụ (Saas) Điện toán đám mây mang lại nhiều lợi ích thiết thực cho người sử dụng: chi phí thấp, không phải tự xây dựng hệ thống hạ tầng thiết bị và duy trì quản lý chúng, linh hoạt trong sử dụng, mở rộng hệ thống và dễ dàng sử dụng Giải thuật MapReduce bao gồm hai bước chính là Map và Reduce Giải thuật MapReduce giúp giải quyết các bài toán xử lý lượng dữ liệu lớn bằng cách chia dữ liệu thành các phần nhỏ hơn, và đưa đến các tác vụ xử lý trên các máy Các tác vụ này sẽ xử lý đồng thời và tập hợp lại kết

Trang 33

quả cho hệ thống Với việc chia nhỏ dữ liệu và xử lý đồng thời, giúp giải quyết những bài toán tưởng chừng không thể giải quyết nổi với lượng dữ liệu khổng lồ

Trang 34

CHƯƠNG 3 BÀI TOÁ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

3.1 Bài toán tìm kiếm dữ liệu

Bài toán tìm kiếm thông tin không mới, đã được nghiên cứu và phát triển trong một thời gian dài Ngay từ thời gian đầu, lúc các máy tính làm việc riêng lẻ, nhu cầu tìm kiến thông tin trong các văn bản, tài nguyên trên máy tính đã là nhu cầu cấp thiết của con người Đặc biệt từ khi mạng máy tính được xây dựng, thời đại phát triển của Internet và Web, việc tìm kiếm càng phát triển và bùng nổ Lượng thông tin, tài nguyên được cung cấp qua Web trên môi trường Internet phát triển theo cấp số nhân và người

sử dụng mò mẫm trong mớ hỗn độn thông tin đó để tìm được thông tin mình cần, giống như việc đọc muột cuốn sách mà không có chỉ mục Các máy tìm kiếm – Search engine

đã được phát triển từ thời gian đầu của Internet, cung cấp nội dung cần thiết cho người

sử dụng, giúp người dùng tìm kiếm được nhanh nhất, chính xác nhất nội dung mình cần Mục tiêu của hệ thống là hướng đến môi trường Internet với số lượng khổng lồ các trang web và các tài nguyên

Theo số liệu thống kê của Google, thế giới đã đạt con số 1 trillion (1.000.000.000.000) URL vào tháng 7 năm 2008 [21] Theo con số không chính thức thì hiện tại, thế giới đã có khoảng 2,4 trillion URL Với lượng trang web khổng lồ như thế, các hệ thống tìm kiếm cần hoạt động cực kỳ hiệu quả mới có thể đảm bảo cung cấp nội dung, tiện ích đến cho người sử dụng Ngay từ trước khi có hệ thống mạng Internet,

đã tồn tại nhiều hệ thống tìm kiếm tài nguyên Chúng ta sẽ tìm hiểu về lịch sử hình thành các máy tìm kiếm và cách thức xây dựng một hệ thống tìm kiếm

Trang 35

Hình 3.1-1: Số lượng URL trên thế giới [21]

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

Công cụ đầu tiên được sử dụng để tìm kiếm trên Internet có tên là Archie, được tạo ra năm 1990 Allan Emtage, Bill Heelan và J Peter Deutsch, sinh viên khoa học máy tính tại đại học McGill ở Montreal Chương trình tải về danh sách tất cả các file trên các site FTP công cộng, tạo ra CSDL các tên file có thể tìm kiếm được, tuy nhiên Archie không đánh chỉ mục nội dung của các site này, dẫn đến dữ liệu đã quá giới hạn

và không thể tìm kiếm bằng tay

Vào mùa hè năm 1993, không có công cụ tìm kiếm nào cho web, mặc dù có rất nhiều catalog chuyên ngành được duy trì bằng tay.Oscar Nierstrasz tại đại học Geneva

Trang 36

đã viết các script Perl định kỳ xem các site và viết lại chúng thành định dạng chuẩn, tạo

thành cơ sở hình thành W3Catalog, công cụ tìm kiếm Web nguyên thủy đầu tiên

Một trong những công cụ tìm kiếm toàn văn bản dựa trên crawler đầu tiên tên là

WebCrawler ra đời năm 1994 Không giống như những công cụ tìm kiếm trước, nó cho

phép người dùng tìm kiếm bất kỳ từ nào trong trang web và nó cũng trở thành tiêu

chuẩn cho các công cụ tìm kiếm sau đó

Ngay sau đó, hàng loạt công cụ tìm kiếm ra đời bao gồm: Magellan, Excite,

Infoseek, Inktomi, North Light và Altavista Yahoo! cũng cung cấp tìm kiếm trên cây

thư mục

Khoảng đầu năm 2000, công cụ tìm kiếm Google nổi lên, Google đưa ra khái

niệm mới là PageRank để so sánh, xếp hạng trang web Google cũng duy trì giao diện

đơn giản, nhưng khả năng tìm kiếm mạnh mẽ cho người dùng

Năm 2000, Yahoo! cung cấp dịch vụ tìm kiếm trực tuyến

Microsoft MSN search ra mắt từ năm 1998, và trong năm 2009 được thay mới

và đổi tên thành Bing Vào ngày 29 tháng 7 năm 2009, hệ thống tìm kiếm Yahoo! sẽ

được hỗ trợ bởi Bing, hiển thị các kết quả từ Bing

Theo thống kê đến tháng 9 năm 2010, Google chiếm 83,34% thị phần tìm kiếm

trên toàn thế giới, Yahoo! và Bing là 9,57%

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]

Trang 37

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

Các máy tìm kiếm trên Internet có thể chia làm nhiều loại

Tìm kiếm toàn thể các trang web – Web Search Engine

Đây là những máy tìm kiếm hoạt động rộng nhất, chứa nhiều các trang web nhất Mỗi hệ thống có hệ thống dữ liệu riêng và thuật toán tìm kiếm khác nhau Số lượng các trang web được lưu trữ và đánh địa chỉ ngày càng lớn, nên cần có một giải thuật tìm kiếm chính xác theo nội dung tìm kiếm của người dùng

Chúng ta có thể tham khảo số lượng trang web đã được đánh chỉ mục của ba hệ thống tìm kiếm lớn nhất hiện nay là: Google, Yahoo!, Bing trong tháng 10 năm 2010

Số liệu này chỉ mang tính chất tham khảo và là số liệu hiển thị cho người dùng

Search Engine Số trang đã đánh chỉ mục

Google 25.280.000.000

Yahoo! 15.700.000.000

Bing 16.000.000.000

Bảng 3.1-1: Số lượng trang web đã được đánh chỉ mục

Tìm kiếm theo chiều dọc – Vertical Search Engine

Các công cụ tìm kiếm theo chiều dọc, phân biệt với các công cụ tìm kiếm toàn thể Web, chỉ tập trung vào một phân khúc cụ thể của nội dung trực tuyến Nội dung của các máy tìm kiếm theo chiều dọc có thể dựa trên các chủ đề, các loại phương tiện truyền thông hoặc thể loại của nội dung Ngược lại với công cụ tìm kiếm Web nói chung, cố gắng thu thập số lượng lớn các trang web thông qua một hệ thống thu thập các trang web – web crawler, các công cụ tìm kiếm theo chiều dọc chủ yếu sử dụng một hệ thống thu thập tin tức tập trung vào những chỉ mục chỉ có ở trên Web có liên quan đến chủ đề đang cần theo dõi

Một số công cụ tìm kiếm theo chiều dọc như Kayak [22] và Expedia [23] tập trung đặc biệt vào lĩnh vực tìm kiếm du lịch Những công cụ tìm kiếm theo chiều dọc khác tập trung vào các sản phẩm tiêu dùng như ShopWiki [24] và NexTag [25] Ngoài

Trang 38

ra, các công cụ tìm kiếm theo chiều dọc có thể bao gồm nhiều hệ thống tìm kiếm theo chiều dọc trong cùng một máy tìm kiếm Ví dụ như Baamboo [26] tập trung vào lĩnh vực nhạc, video, tra từ điển và điểm thi

Tìm kiếm theo chiều dọc cung cấp một số lợi ích hơn so với tìm kiếm toàn thể Web:

- Độ chính xác hơn do đã giới hạn chủ đề tìm kiếm

- Sử dụng được kiến thức phân loại theo miền, bao gồm cả sự phân loại (taxonomies) và phân lớp (ontologies)

- Hỗ trợ cụ thể cho các yêu cầu riêng biệt của người dùng

Tìm kiếm siêu dữ liệu – MetaSearch Engine

Những máy tìm kiếm này không thật sự là những máy tìm kiếm đúng nghĩa Nó nhận yêu cầu người dùng và gửi yêu cầu này đến các máy tìm kiếm khác để nhận về kết quả và tập hợp lại thành một kết quả duy nhất để hiển thị, bao gồm cả nguồn gốc của từng kết quả Mục tiêu của MetaSearch đó là cho phép người dùng chỉ phải nhập yêu cầu tìm kiếm một lần và MetaSearch sẽ đi tìm kiếm và tổng hợp lại nội dung từ các

hệ thống tìm kiếm hiện tại MetaSearch cho rằng lượng dữ liệu trên Internet quá lớn, không một máy tìm kiếm nào có thể bao phủ hết, nên kết quả tập hợp của các máy tìm kiếm sẽ hoàn chỉnh hơn Việc này giúp người dùng tiết kiệm thời gian sử dụng

MetaSearch tạo một CSDL ảo, để lưu trữ tạm thời các kết quả từ các máy tìm kiếm khác Sau khi lưu được các kết quả tìm kiếm, MetaSearch sẽ sắp xếp lại các kết quả theo ý mình và hiển thị cho người dùng

Một trong những đặc điểm cơ bản để nhận biết các MetaSearch đó là phần lớn các MetaSearch không có kết quả lưu trữ (cached) Khi một máy tìm kiếm hoàn chỉnh hoạt động, nó lưu trữ kết quả dữ liệu sau khi đánh chỉ mục và nội dung hoàn chỉnh của văn bản Các MetaSearch khi lấy các kết quả từ các máy tìm kiếm, chỉ có thể lấy được nội dung dữ liệu đã được đánh chỉ mục, còn lại không thể lấy được nội dung hoàn chỉnh của toàn văn bản

Trang 39

Các hệ MetaSearch nổi tiếng trên thế giới: Brainboost, Excite, Info.com,… Ở Việt Nam đã tồn tại một MetaSearch là Monava, lấy các kết quả trực tiếp từ Google, Yahoo!

3.1.3 Mô hình của máy tìm kiếm

Một máy tìm kiếm thông thường bao gồm ba bộ phận chính sau [34]:

- Bộ phận thu thập nội dung các trang Web

- Bộ phận đánh chỉ mục các trang Web

- Bộ phận tìm kiếm

Máy tìm kiếm hoạt động bằng cách lưu trữ thông tin về các trang Web được lưu trữ dưới dạng HTML Những trang web này được thu thập bởi một bộ thu thập nội dung Web được gọi là Web Crawler hoặc đôi khi gọi là Web Spider, tự động lấy về nội dung của các trang web và các link bên trong trang Web Để có thể bảo vệ nội dung, không muốn bị các Web Crawler lấy về, chúng ta có thể thêm file robot.txt để chặn không cho các Web Crawler lấy nội dung về Nội dung của mỗi trang Web sẽ được phân tích và xác định cách thức để đánh chỉ mục nó, tùy thuộc vào nội dung, thành phần, các định dạng trong trang web Quá trình này được gọi là bóc tách nội dung, từ nội dung thô là các trang Web đến nội dung cơ bản, quan trọng và trọng tâm của mỗi trang

Nội dung của phần dữ liệu sau khi đã bóc tách vẫn khá nặng, nếu tìm kiếm trực tiếp sẽ rất chậm, nên chúng ta phải đánh chỉ mục nội dung này và tất cả các chỉ mục sẽ được lưu trữ vào cơ sở dữ liệu chỉ mục phục vụ cho quá trình tìm kiếm sau này Nội dung tìm kiếm sẽ được tìm kiếm trong CSDL chỉ mục, tuy nhiên một số hệ thống tìm kiếm vẫn lưu trữ cả nội dung văn bản gốc để người dùng có thể xem sau này, gọi là lưu trữ đệm (cached)

Khi người dùng tìm kiếm một truy vấn, bộ phận tìm kiếm sẽ tìm trong CSDL chỉ mục và tìm ra những văn bản “tốt nhất” phù hợp với nội dung tìm kiếm của người dùng Phần lớn các máy tìm kiếm đều hỗ trợ các toán tử tìm kiếm cơ bản là: AND, OR,

Ngày đăng: 27/07/2017, 20:36

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[44] Anna Patterson (2004). “Why writing your own Search Engine is hard”. ACM Queue, May 5, 2004: http://queue.acm.org/detail.cfm?id=988407 [45] Cloud Computing Defined: http://cloudcomputingdefined.com/ Sách, tạp chí
Tiêu đề: Why writing your own Search Engine is hard”. "ACM Queue
Tác giả: Anna Patterson
Năm: 2004
[50] Gantz et al., “The Diverse and Exploding Digital Universe,” March 2008 http://www.emc.com/collateral/analyst-reports/diverse-exploding-digital-universe.pdf Sách, tạp chí
Tiêu đề: The Diverse and Exploding Digital Universe
[54] Mike Cafarella and Doug Cutting, “Building Nutch: Open Source Search.”, ACM Queue, April 2004, http://queue.acm.org/detail.cfm?id=988408 Sách, tạp chí
Tiêu đề: Building Nutch: Open Source Search.”, "ACM Queue
[1] Communications of ACM April 2010 Vol. 53 – A view of Cloud Computing [2] http://www.cloudcomputingdefined.com/ Link
[3] AWS – Amazon Web Service: http://aws.amazon.com/ Link
[4] Eucalyptus: http://www.eucalyptus.com/ Link
[5] Handbook of Cloud Computing: Borko Furht, ArmandoEscalante – Springer [6] Jeffrey Dean: http://research.google.com/people/jeff/index.html Link
[10] CouchDB: document-oriented database implements MapReduce fashion using JavaScript. http://couchdb.apache.org/ Link
[11] Mars: A MapReduce Framework on Graphics Processors. http://www.cse.ust.hk/gpuqp/Mars.html Link
[12] Hive – A data warehouse infrastructure built on top of Hadoop, implements MapReduce Framework. http://hive.apache.org/ Link
[14] Sort Benchmark Home Page: http://sortbenchmark.org/ Link
[15] Apache Hadoop wins Terabyte Sort Benchmark: http://developer.yahoo.com/blogs/hadoop/posts/2008/07/apache_hadoop_wins_terabyte_sort_benchmark/ Link
[16] Official Google Blog: Sorting 1PB with MapReduce: http://googleblog.blogspot.com/2008/11/sorting-1pb-with-mapreduce.html Link
[17] Hadoop Sorts a Petabyte in 16.25 Hours and a Terabyte in 62 Seconds: http://developer.yahoo.com/blogs/hadoop/posts/2009/05/hadoop_sorts_a_petabyte_in_162/ Link
[18] Google Apps: http://www.google.com/apps/ Link
[19] Amazon EC2: http://aws.amazon.com/ec2/ Link
[20] Amazone S3: http://aws.amazon.com/s3/ Link
[21] Official Google Blog: We knew the web was big… http://googleblog.blogspot.com/2008/07/we-knew-web-was-big.html [22] Kayak – Travel Search Engine: http://www.kayak.com/ Link
[23] Expedia – Travel Search Engine: http://www.expedia.com/ Link
[24] ShopWiki – Tìm kiếm sản phẩm tiêu dùng: http://www.shopwiki.com/ Link

HÌNH ẢNH LIÊN QUAN

Hình 1.1-1: định luật Moore [42] - 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
Hình 1.1 1: định luật Moore [42] (Trang 7)
Hình 2.1-1: Mô hình điện toán đám mây [46] - 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
Hình 2.1 1: Mô hình điện toán đám mây [46] (Trang 14)
Hình 2.2-1: Các lớp của điện toán đám mây - 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
Hình 2.2 1: Các lớp của điện toán đám mây (Trang 16)
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 - 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
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 (Trang 20)
Hình 2.3-2: Giao diện sử dụng Amazon S3 [20] - 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
Hình 2.3 2: Giao diện sử dụng Amazon S3 [20] (Trang 22)
Hình 2.6-1: Mô hình MapReduce - 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
Hình 2.6 1: Mô hình MapReduce (Trang 26)
Hình 2.6-2: Quá trình xử lý MapReduce - 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
Hình 2.6 2: Quá trình xử lý MapReduce (Trang 28)
Hình 3.1-1: Số lượng URL trên thế giới [21] - 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
Hình 3.1 1: Số lượng URL trên thế giới [21] (Trang 35)
Hình 3.1-3: Mô hình máy tìm kiếm - 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
Hình 3.1 3: Mô hình máy tìm kiếm (Trang 40)
Hình 3.2-1: Inverted index - 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
Hình 3.2 1: Inverted index (Trang 47)
Hình 3.4-1: Hệ thống tìm kiếm phân tá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 cloud computing và thuật toán mapreduce
Hình 3.4 1: Hệ thống tìm kiếm phân tán (Trang 58)
Hình 4.2-1: Tổ chức hệ thống - 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
Hình 4.2 1: Tổ chức hệ thống (Trang 61)
Hình 4.2-2: Tổ chức module máy tìm kiếm - 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
Hình 4.2 2: Tổ chức module máy tìm kiếm (Trang 64)
Hình 4.3-1: Tổng số trang web trong hệ thống - 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
Hình 4.3 1: Tổng số trang web trong hệ thống (Trang 67)
Hình 4.3-2: Tốc dộ thu thập trang web và đánh chỉ mục - 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
Hình 4.3 2: Tốc dộ thu thập trang web và đánh chỉ mục (Trang 68)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w