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

Một phần của tài liệu 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 (Trang 54 - 60)

Trong quá trình đánh chỉ mục, có thể chia nhỏ các văn bản đã được bóc tách ra thành từng phần nhỏ hơn và chuyển vào cho MapReduce đánh chỉ mục. Quá trình đánh chỉ mục dữ liệu bao gồm ba quá trình chính là cập nhật lại CrawlDB, sinh lại cấu trúc các links trong hệ thống bao gồm inlinks, outlinks, và đánh chỉ mục ngược từ các dữ liệu này.

- MapReduce: tổng hợp dữ liệu nội dung đã thu thập, và dữ liệu đã được bóc tách vào trong CSDL CrawlDB

o Input: <url, CrawlDatum> đã có trong CrawlDB và dữ liệu đã thu thập và bóc tách được

o Map: không chạy

o Reduce: trộn toàn bộ các thành phần vào thành một thành phần mới.

ƒ Ghi đè trạng thái dữ liệu cũ từ dữ liệu đã thu thập, cập nhật trạng thái mới là fetched cho các dữ liệu đã thu thập thành công.

ƒ Đếm tổng số outlink từ dữ liệu đã bóc tách và cập nhật lại vào CrawlDB.

o Output: CSDL CrawlDB mới, phục vụ cho lần chạy tiếp theo.

Quá trình cập nhật lại CSDL CrawlDB sử dụng nền tảng điện toán đám mây như một nền tảng ứng dụng, sử dụng nhiều máy tính để tăng tốc quá trình cập nhật CSDL CrawlDB. Sau một thời gian chạy, hệ thống sẽ càng nhiều dữ liệu CrawlDB và thời gian cập nhật sẽ càng lâu hơn.

Quá trình cập nhật lại cấu trúc links, URLs

- MapReduce: tính toán lại toàn bộ inlinks cho tất cả các URLs. o Input: <url, ParseData>, chứa các outlink của các trang web. o Map: <srcUrl, ParseData> -> <destUrl, Inlinks>

ƒ Đếm các outlinks và đảo ngược từng outlinks, mỗi outlink đảo ngược thành một inlink. Phải giới hạn số outlinks trong mỗi trang.

ƒ Inlinks: <srcUrl, anchorText> o Reduce: nối tất cả các inlinks.

o Output: <url, Inlinks>, chứa đựng đầy đủ các link đã được đảo ngược từ outlinks thành inlinks.

Quá trình sinh lại toàn bộ inlinks sử dụng điện toán đám mây như một nền tảng ứng dụng, cập nhật mới lại toàn bộ đồ thị URLs, phục vụ cho quá trình tính PageRank sau này.

Quá trình đánh chỉ mục

- Map(): tập hợp tất cả các phần của văn bản, Reduce() phân tích dữ liệu văn bản và đánh chỉ mục theo phương pháp inverted index.

o Input:

ƒ <url, ParseData> từ hệ thống bóc tách: gồm title, siêu dữ liệu

ƒ <url, ParseText> từ hệ thống bóc tách: gồm dữ liệu text

ƒ <url, Inlinks> gồm các dữ liệu inlink

ƒ <url, CrawlDatum> từ dữ liệu thu thập, lưu trữ ngày thu thập o Map: phân tích văn bản.

o Reduce: đánh chỉ mục văn bản

Quá trình đánh chỉ mục cần sử dụng khá nhiều bộ nhớ, vì sử dụng càng nhiều RAM sẽ giúp tăng tốc quá trình đánh chỉ mục. Lúc này cần thực hiện trên một hệ thống máy giúp tăng hiệu suất đánh chỉ mục, giảm thời gian đánh chỉ mục, nhanh chóng cập nhật các dữ liệu mới cho bộ phận tìm kiếm.

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

Khi thực hiện câu lệnh tìm kiếm, nếu dung lượng chỉ mục dữ liệu quá lớn, thì kết quả tìm kiếm sẽ rất chậm, vì thế để tăng tốc độ tìm kiếm, tôi thiết kế module tìm kiếm phân tán. Module này thực hiện nhiệm vụ chia dữ liệu chỉ mục thành các phần nhỏ hơn, chia cho các máy trong cluster tìm kiếm. Các máy này được xây dựng từ các dịch vụ điện toán đám mây, với mục tiêu cung cấp nhiều bộ nhớ để tăng tốc độ tìm kiếm. Mỗi máy chứa rất nhiều RAM (có thể từ 32 GB đến 196GB), lưu trữ trực tiếp toàn bộ dữ liệu chỉ mục lên trên RAM. Với phương pháp này, thay vì phải tìm kiếm dữ liệu chỉ mục trên hệ thống ổ cứng với tốc độ chậm (vài chục MB/s), chúng ta tìm kiếm trực tiếp trên hệ thống bộ nhớ RAM với tốc độ hàng trăm MB/s. Module tìm kiếm

phân tán sẽ chịu trách nhiệm quản lý các chỉ mục phân tán trên các máy tìm kiếm, quản lý quá trình liên lạc giữa máy chủ tìm kiếm và các máy tìm kiếm chứa chỉ mục. Một ưu điểm khác của hệ thống tìm kiếm phân tán này là hệ thống chịu lỗi. Khi phân tán các chỉ mục ra trong hệ thống điện toán đám mây, nếu như một trong các máy bị lỗi, không thực hiện được, thì các máy khác vẫn trả về kết quả, không gây ra hiện tượng mất dữ liệu khi một máy gặp sự cố.

Các bước tìm kiếm phân tán:

- Bước 1: nhận yêu cầu từ người sử dụng.

- Bước 2: phân tích yêu cầu, tách truy vấn của người dùng và tiến hành thực hiện tìm kiếm.

- Bước 3: gửi thông tin tìm kiếm đến toàn bộ các máy trong hệ thống tìm kiếm. Các máy này sẽ tìm kiếm trên hệ thống dữ liệu chỉ mục của bản thân nó và gửi kết quả về cho máy chủ tổng hợp. Các máy này chỉ gửi về một lượng giới hạn các kết quả, trung bình là 10 đến 20 kết quả tốt nhất theo độ tương quan, sử dụng công thức tính theo tf-idf. Mỗi máy chứa các dữ liệu đã được đánh chỉ mục, và tôi đã sử dụng cách thức đưa các chỉ mục này lên RAM, để nâng cao hiệu suất tìm kiếm. (adsbygoogle = window.adsbygoogle || []).push({});

- Bước 4: tổng hợp các kết quả trả về từ các máy tìm kiếm chứa dữ liệu chỉ mục. Sắp xếp lại các kết quả này theo các tiêu chí về độ tương quan, thuật toán PageRank, thuật toán xử lý theo thời gian, các thuật toán ưu tiên khác. Đây là giai đoạn quan trọng nhất khi tổng hợp các kết quả từ các máy chứa dữ liệu chỉ mục và sử dụng thuật toán sắp xếp. Kết quả sẽ được trả lại cho người dùng theo các định dạng người dùng mong muốn: qua giao diện Web, qua mobile hay sử dụng cho các hệ thống khác như hệ thống gợi ý theo văn bản hay hệ thống gợi ý đa phương tiện.

Hình 3.4-1: Hệ thống tìm kiếm phân tán

3.5 Kết chương

Trong chương này, tôi đã trình bày về phương pháp xây dựng một máy tìm kiếm. Một máy tìm kiếm bao gồm 3 phần chính là: hệ thống thu thập dữ liệu, hệ thống đánh chỉ mục dữ liệu và hệ thống tìm kiếm thông tin theo yêu cầu người dùng. Có rất nhiều phương pháp thực thi xây dựng máy tìm kiếm, tuy nhiên để giải quyết được bài toán với lượng dữ liệu lớn, nên xây dựng theo phương án sử dụng thuật toán MapReduce trên nền tảng điện toán đám mây. Điện toán đám mây cung cấp các dịch vụ về hạ tầng, nền tảng để mở rộng cấu trúc phần cứng, giúp chúng ta có khả năng nâng cao hiệu suất. Tuy nhiên, cần phải có một giải thuật có thể thực thi hiệu quả trên nền hạ tầng phân tán này và đó là MapReduce. MapReduce thực thi trên nền tảng phân

tán, chia nhỏ dữ liệu thành các khối riêng biệt và xử lý đồng thời các khối dữ liệu đó bằng các tác vụ. MapReduce có khả năng quản lý các tác vụ đang hoạt động, cung cấp khả năng chịu lỗi cho các tác vụ, thay thế các tác vụ lỗi bằng các tác vụ mới để thực thi tiếp chương trình và tổng hợp kết quả. Ngoài ra, để tăng tốc độ tìm kiếm, xây dựng hệ thống tìm kiếm phân tán trên nền tảng điện toán đám mây giúp giải quyết vấn đề này.

CHƯƠNG 4 XÂY DỰNG HỆ THỐNG TÌM KIẾM VÀ THỬ NGHIỆM THỰC TẾ

Một phần của tài liệu 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 (Trang 54 - 60)