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

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 61)

Hệ thống bao gồm 3 thành phần chính: - Module ứng dụng

- Module hiển thị

- Module quản lý, theo dõi, ghi nhận lại hệ thống

Hình 4.2-1: Tổ chức hệ thống

Chúng ta sẽ nghiên cứu kỹ từng thành phần của hệ thống.

Module ứng dụng là thành phần chính của hệ thống, bao gồm hai thành phần bên trong là hệ thống thu thập xử lý Web, đánh chỉ mục dữ liệu và hệ thống tìm kiếm phân tán.

Module thu thập, xử lý nội dung Web bao gồm các module nhỏ hơn:

- Hệ thống thu thập tin tức: là một module được triển khai phân tán, module này bao gồm 3 bước chính:

o Injector: đưa tất cả các URLs trong file seed vào trong CSDL URLs có tên là CrawlDB.

o Generator: sinh ra tất cả các URL cần phải thu thập. Generator sử dụng thuật toán PageRank để sinh các URL cần thu thập, các URL này có thể là những URL chưa được thu thập (un_fetched) hoặc những URL cần thu thập lại (re_fetched).

o Fetcher: chạy trên cluster trong điện toán đám mây, chia các URL cho tất cả các nút trong cluster. Thuật toán chia này thông thường sẽ được xây dựng theo hàm băm, chia ngẫu nhiên các URL cho các máy, hoặc sử dụng thuật toán chia theo host, những URL trong cùng host sẽ được chia vào cùng máy. Fetcher chạy để lấy toàn bộ nội dung các URL bằng cách chạy song song, đa luồng. Mỗi URL sẽ được cập nhật trong lần tiếp theo bằng một thuật toán thay thế.

- Module bóc tách dữ liệu (Parser)

Sử dụng kỹ thuật xử lý ngôn ngữ tự nhiên, học máy để là việc với dữ liệu thô do module thu thập dữ liệu lấy về. Ở bước đầu tiên, bóc tách toàn bộ các thông tin siêu dữ liệu, các thông tin có ý nghĩa trong trang như: tiêu đề trang, nội dung trang, các từ khóa,…. Ngoài ra, quá trình bóc tách dữ liệu, cũng sẽ tách toàn bộ các outlinks trong trang, để phục vụ cho bước tiếp theo khi xây dựng đồ thị Web và tính toán theo thuật toán PageRank.

- Module đánh chỉ mục dữ liệu (Indexer): bao gồm 3 bước chính:

o Updater: cập nhật lại Crawldb. Cập nhật lại các URL với các nội dung: trạng thái chuyển sang đã thu thập (fetched), cập nhật lại số outlinks của trang đó, cập nhật nội dung của trang sau khi đã được bóc tách. Phục vụ cho bước Generator tiếp theo, và xây dựng đồ thị các trang Web bao gồm inlinks và outlinks để thực thi giải thuật PageRank.

o Link Inverter: cập nhật lại cấu trúc các links, URLs. Tạo đồ thị các links là đồ thị có hướng, bao gồm các nút, mỗi nút chứa các link ra outlinks và các link trỏ đến nó inlinks.

o Indexer: đánh chỉ mục các trang web dựa trên nội dung, các links liên quan đến nó.

- Module tìm kiếm phân tán:

Mục đích để cung cấp cho người dùng kết quả tìm kiếm nhanh nhất, chính xác nhất, ngoài ra để cung cấp hệ thống có độ khả dụng cao, chúng tôi đã chia các chỉ mục thành hệ thống phân tán, lưu trữ trên một cluster phục vụ tìm kiếm. Mỗi nút trong hệ thống chứa một phần chỉ mục. Thời gian tìm kiếm về cơ bản sẽ nhỏ hơn 1 giây. Khi người dùng tạo yêu cầu tìm kiếm, bộ tìm kiếm sẽ tìm trong tất cả các chỉ mục ở các nút phân tán, sau đó thu thập lại từ các nút, tổng hợp các kết quả trả lại cho người dùng.

Hình 4.2-2: Tổ chức module máy tìm kiếm

Module quản lý, theo dõi giám sát hệ thống.

Do hệ thống của chúng ta chạy trên môi trường phân tán trong cluster có nhiều nút, với một lượng dữ liệu lớn, nên cần một hệ thống để tự động theo dõi, quản lý mọi thứ một cách tự động. Nếu không có những hệ thống theo dõi, quản lý tự động, chúng ta không thể kiểm soát được quá trình hoạt động của hệ thống, những nguyên nhân gây ra lỗi ngoài ý muốn.

- Module giám sát thiết bị phần cứng: theo dõi toàn bộ các máy trong cluster từ CPUs, bộ nhớ, băng thông mạng, thời gian trả lại kết quả, thời gian up time các máy chạy liên tục không cần nghỉ,…. Chúng tôi sử dụng một phần mềm miễn phí có tên là Ganglia [33] để theo dõi, giám sát các hệ thống phần cứng.

- Module giám sát các chương trình đang chạy: theo dõi, giám sát tất cả các bước đang chạy trong cluster. Công việc nào đang được chạy? Công việc đang chạy đến bước nào, chạy được bao nhiêu tác vụ, mỗi tác vụ đang chạy đến chức năng nào map hay reduce. Khi một tác vụ đang chạy trong hệ thống, nó sử dụng bao nhiêu tài nguyên

của hệ thống về CPUs, bộ nhớ, ổ cứng. Chúng ta cũng có thể theo dõi quy trình dữ liệu trong hệ thống. Chúng tôi sử dụng một tool của phòng thí nghiệm RADLab từ đại học Berkeley có tên là X-Trace [34]

- Module quản lý dữ liệu: quản lý luồng dữ liệu từ quá trình fetcher đến quá trình parser, indexer và đưa vào hệ thống tìm kiếm phân tán. Tất cả các bước này phải được thực thi một cách tự động, và trong suốt với người sử dụng.

- Module quản lý Log: chúng ta cần một hệ thống quản lý log, để ghi nhận lại toàn bộ yêu cầu tìm kiếm của khách hàng, hành vi của người dùng, hành vi của hệ thống. Chúng tôi tạo hệ thống phân tích log để phân tích yêu cầu tìm kiếm của người dùng, để nâng cao chất lượng tìm kiếm, quá trình đánh chỉ mục dữ liệu. Ngoài ra sử dụng log để gợi ý cho người dùng về các câu truy vấn tiếp theo, hoặc sửa lỗi chính tả cho người dùng.

Module hiển thị kết quả:

Hệ thống tìm kiếm cung cấp kết quả và trả lại cho người dùng. Đó là hệ thống tìm kiếm cơ bản nhất, ở tầng dưới của hệ thống. Việc sử dụng các kết quả của hệ thống tìm kiếm: crawler, parser, indexer, searcher là nền tảng để xây dựng các hệ thống tìm kiểm ở tầng trên. Có thể xây dựng các ứng dụng tìm kiếm toàn thể trên Web, hoặc các hệ thống tìm kiếm theo chiều dọc, các hệ thống đề xuất sản phẩm, hệ thống tìm kiếm đa phương tiện, tìm kiếm cho các thiết bị di động, các hệ thống gợi ý đề xuất văn bản. Các hệ thống tập trung hướng đến bài toán quảng cáo, phân phối, định hướng người dùng.

4.3 Đánh giá kết qu, các hướng ci tiến

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

Khi cài đặt thử nghiệm các hệ thống, chúng tôi thực hiện giải pháp cơ bản cho bốn hệ thống tìm kiếm thông tin, ba cho các hệ thống tìm kiếm thông tin tiếng Việt, một hệ thống thu thập các trang Web tiếng anh.

Trong số ba hệ thống tìm kiếm tiếng việt, bao gồm một hệ thống tìm kiếm tin tức, một hệ thống tìm kiếm thông tin trong các blog đặc biệt là blog Yahoo 360, một hệ thống tìm kiếm thông tin trong forum.

Các hệ thống tìm kiếm tiếng việt này được thực hiện cho hệ thống tìm kiếm Baamboo [26].

Hệ thống thu thập các trang Web tiếng anh, bao gồm hầu hết các trang web trên thế giới được viết trên ngôn ngữ tiếng anh, được sử dụng cho hệ thống sửa lỗi chính tả trong tiếng Anh.

Bốn hệ thống này được chạy trên bốn cluster khác nhau có cấu hình như sau Cluster News Search Blog Search Forum Search English Pages Số lượng máy 2 6 4 12

Bảng 4.3-1: Số lượng máy trong các cluster

Bốn hệ thống cluster News Search, Blog Search và Forum Search được xây dựng trên dedicated server. Mỗi máy có cấu hình

o 8 CPUs o 16G RAM o 2TB ổ cứng

Hệ thống thu thập và xử lý các trang web tiếng anh được xây dựng trên hệ thống EC2 của Amazon. Quá trình thu thập được thực hiện trên 12 máy extra-large instance của Amazon và hệ thống lưu trữ mạng (Storage Area Network – SAN) [35], hệ thống EBS và S3 của Amazon. Khi xử lý tổng số lượng các trang (thao tác bóc tách, đánh chỉ mục dữ liệu), sử dụng 200 máy extra-large instance. Mỗi máy có cấu hình như sau:

o 8 EC2 compute unique o 15G RAM

Trong hệ thống này, tôi đã thiết kế thuật toán thu thập tin tức theo hệ thống tìm kiếm theo chiều dọc cho các hệ thống tìm kiếm tin tức, tìm kiếm nội dung blog Yahoo 360 Việt Nam và hệ thống tìm kiếm trên các forum Việt Nam. Đây là những hệ thống tìm kiếm theo chiều dọc, nên cách thức thu thập nội dung, cách thức cập nhật, phát hiện các bài viết mới cũng hoàn toàn khác so với các cách thông thường. Thuật toán đã lọc những trang web không thuộc vùng quan tâm và chỉ tập trung vào những vùng miền xử lý. Trong hệ thống thu thập tin tức tiếng anh, tôi đã xây dựng bộ lọc tiếng anh sử dụng theo phương pháp N-Gram.

Số lượng trang Web mà mỗi hệ thống thu nhận được

Tốc độ thu thập trang web, và đánh chỉ mục dữ liệu

Hình 4.3-2: Tốc dộ thu thập trang web và đánh chỉ mục

Mỗi bài toán có một cách để thu thập dữ liệu của riêng nó. Với bài toán tìm kiếm tin tức, blog, forum thì là dạng tìm kiếm theo chiều dọc. Nên cần tối ưu lại hệ thống Crawler, thu hẹp lại phạm vi, chỉ tập trung liên quan đến các báo điện tử của Việt Nam trong trường hợp tìm kiếm tin tức, blog yahoo 360 trong trường hợp tìm kiếm blog và các forum tiếng Việt. Riêng bài toán thu thập các trang web tiếng anh, chỉ cần phát hiện ngôn ngữ tiếng anh là có thể xử lý, nên số lượng trang web nhiều hơn, tổng số trang web có thể down về cũng lớn hơn.

Ngoài ra vì hệ thống thu thập trang Web tiếng anh có nhiều dữ liệu hơn, chạy trên hệ thống cluster mạnh hơn, nên tốc độ thu thập, tốc độ đánh chỉ mục dữ liệu cũng nhanh hơn.

So sánh với cách thực thi thông thường, sử dụng các thuật toán chạy trên máy đơn lẻ, tốc độ thu thập và đánh chỉ mục dữ liệu đã tăng gấp 1,5 lần, và khả năng mở rộng phục vụ cho hệ thống hàng trăm triệu đến hàng tỷ trang web.

Hệ thống tìm kiếm:

- Trong hệ thống tìm kiếm, chúng tôi sử dụng một lượng lớn server với cấu hình memory lớn phục vụ cho việc tìm kiếm phân tán. Xây dựng thuật toán chia nhỏ chỉ mục ra thành các khối nhỏ hơn, chia đều cho các server tìm kiếm và đưa toàn bộ lượng chỉ mục này lên RAM. Bằng cách này, giúp nâng cao hiệu suất tìm kiếm, giảm thời gian tìm kiếm và thời gian trả về kết quả nhanh hơn. Ngoài ra, xây dựng hệ thống quản lý, tự động cập nhật nội dung các chỉ mục mới. Khi hệ thống dữ liệu chỉ mục phân tán, cần một cơ chế tự động quản lý, cập nhật các dữ liệu chỉ mục này.

- Ngoài ra, hệ thống cung cấp một lớp lưu trữ tạm (caching) các kết quả người dùng tìm kiếm. Trong các hệ thống tìm kiếm theo chiều dọc, và tìm kiếm trên tất cả các trang Web, có những từ khóa có tần suất tìm kiếm cao, nên kết quả của nó được lưu trữ tạm thời, phục vụ cho những người tìm kiếm ngay sau đó trong một khoảng thời gian ngắn. Tôi đã xây dựng hệ thống lưu trữ tạm thời trên bộ nhớ, sử dụng phương pháp LRU, ngoài ra sử dụng thêm hệ thống caching phần giao diện để nâng cao hiệu suất sử dụng của hệ thống.

- Thuật toán PageRank và phân tích tiếng Việt: khi người dùng tìm kiếm, kết quả trả về phụ thuộc vào xếp hạng của từng trang. Nếu một trang có xếp hạng tốt, nó sẽ được đưa lên đầu. Hiện nay chúng tôi đang sử dụng công thức tính PageRank tương tự như công bố của Google [36]. Ngoài ra khi người dùng tìm kiếm tiếng Việt, việc khó nhất là hiểu nội dung tìm kiếm của người dùng, vì thế cần một giải thuật xử lý ngôn ngữ tự nhiên, hiểu và tách được nội dung câu tìm kiếm. Hiện tại chúng tôi đang sử

dụng thư viện Baamboo OpenNLP để xử lý tiếng việt trong câu truy vấn. Ngôn ngữ tiếng Việt khác các ngôn ngữ latin khác như tiếng anh, mỗi âm tiết là một từ, trong tiếng Việt, một từ có thể gồm nhiều âm tiết. Sử dụng phương pháp tách từ, giúp cải thiện kết quả trong truy vấn của người dùng.

- Thuật toán tính toán độ tương quan trong nội dung và thời gian: khi tìm kiếm các nội dung, cần phải phối hợp nhiều yếu tố, giữa độ tương quan về mặt nội dung, đến độ tương quan về thời gian. Hiện tại chúng tôi đang sử dụng một hệ thống tính điểm của trang web dựa vào thời gian xuất hiện của trang web. Hệ thống này sẽ tính điểm cho các trang web xuất hiện gần so với hiện tại hơn sẽ có điểm cao hơn, và độ giảm điểm theo thời gian, sẽ được thực hiện theo hàm số mũ.

- Kết quả tìm kiếm: được cải thiện rất nhiều khi sử dụng phương pháp đánh chỉ mục dữ liệu đảo ngược, giúp giảm dung lượng chỉ mục xuống 15-20% so với các phương pháp khác. Bằng cách sử dụng hệ thống tìm kiếm phân tán, giảm thời gian tìm kiếm từ vài giây trước đây khi sử dụng hệ thống tìm kiếm tập trung, xuống dưới 1.5 giây, và cơ bản dưới 1 giây.

Dưới đây là kết quả tìm kiếm của các hệ thống tìm kiếm tiếng Việt:

Forum SE (4 nodes) Blog SE (6 nodes) News SE (2 nodes) Tổng dung lượng bộ nhớ 48GB 64GB 16GB Thời gian tìm kiếm 0.8-1.5s 0.5-1.2s <1s Bảng 4.3-2: Kết quả tìm kiếm 4.3.2 Tổng kết luận văn Nhiệm vụđã hoàn thành

- Trình bày một cách hệ thống các vấn đề về cơ sở lý thuyết về điện toán đám mây, các mô hình sử dụng, giải thuật MapReduce và những ưu điểm trong quá trình ứng dụng giải quyết bài toán xử lý dữ liệu lớn.

o Điện toán đám mây: Mô hình phát triển ứng dụng đang được sử dụng nhiều trên thế giới và được dự đoán sẽ là tương lai phát triển của các hệ thống tính toán trên thế giới. Điện toán đám mây dựa trên công nghệ ảo hóa, cung cấp các thành phần như một dịch vụ, từ hạ tầng (IaaS), nền tảng ứng dụng (PaaS), đến các chương trình ứng dụng (SaaS). Việc sử dụng điện toán đám mây giúp tiết kiệm chi phí xây dựng, chi phí quản lý, tối ưu hóa quá trình sử dụng và quản lý các tài nguyên.

o Giải thuật MapReduce: Được xây dựng và phát triển bởi Google, được Google công bố và được nhiều hệ thống hưởng ứng. Giải thuật MapReduce phân chia bài toán thành nhiều công việc, mỗi công việc được phân chia thành nhiều tác vụ nhỏ hơn và được chia cho các máy tính trong một hệ thống máy thực hiện đồng thời. Giải thuật tổng hợp lại các kết quả và đưa ra các kết quả cuối cùng. Giải thuật MapReduce giúp triển khai bài toán xử lý dữ liệu lớn trên một hệ thống máy tính lớn, xử lý các công việc đồng thời, phương pháp quản lý dữ liệu, xử lý phân tán và hệ thống chịu lỗi của các tác vụ xử lý.

- Giới thiệu về mô hình xây dựng một máy tìm kiếm bao gồm ba phần chính là hệ thống thu thập nội dung, hệ thống đánh chỉ mục nội dung và hệ thống tìm kiếm. Phương pháp lưu trữ, xử lý dữ liệu, thuật toán trong việc tìm kiếm giữa yêu cầu người dùng và nội dung lưu trữ. Phân tích những ưu điểm, khuyết điểm của phương pháp thông thường khi xây dựng máy tìm kiếm để so sánh với cách tiếp cận sử dụng giải thuật MapReduce trong mô hình này. Phân tích quá trình sử dụng thuật toán MapReduce trong hai thành phần chính của hệ thống tìm kiếm bao gồm quá trình thu thập nội dung, quá trình đánh chỉ mục nội dung

- Trình bày giải pháp xây dựng hệ thống tìm kiếm tổng thể, hệ thống tìm kiếm theo chiều dọc sử dụng giải thuật MapReduce trên nền điện toán đám mây. Xây dựng các ứng dụng sử dụng giải pháp trong thực tế, bao gồm các hệ thống tìm kiếm tin tứ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 61)

Tải bản đầy đủ (PDF)

(78 trang)