Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 210 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
210
Dung lượng
4,25 MB
Nội dung
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN HỆ THỐNG THÔNG TIN ĐẶNG VŨ ĐÌNH DUY – NGUYỄN TẤN DƯƠNG TÌM HIỂU NỀN TẢNG PHÁT TRIỂN ỨNG DỤNG PHÂN TÁN VỚI HADOOP VÀ ÁP DỤNG CHO SEARCH ENGINE PHÂN TÁN KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT TPHCM, 2010 i TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN HỆ THỐNG THƠNG TIN ĐẶNG VŨ ĐÌNH DUY NGUYỄN TẤN DƯƠNG 0612068 0612072 TÌM HIỂU NỀN TẢNG PHÁT TRIỂN ỨNG DỤNG PHÂN TÁN VỚI HADOOP VÀ ÁP DỤNG CHO SEARCH ENGINE PHÂN TÁN KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT GIÁO VIÊN HƯỚNG DẪN TS HỒ BẢO QUỐC KHÓA 2006 - 2010 ii NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… TpHCM, ngày … tháng …… năm …… Giáo viên hướng dẫn [Ký tên ghi rõ họ tên] iii NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… Khóa luận đáp ứng yêu cầu Khóa luận cử nhân CNTT TpHCM, ngày … tháng …… năm …… Giáo viên phản biện [Ký tên ghi rõ họ tên] iv LỜI CẢM ƠN Chúng em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, trường Đại Học Khoa Học Tự Nhiên, Đại Học Quốc gia Tp Hồ Chí Minh tạo điều kiện thuận lợi cho chúng em thực tốt tài tốt nghiệp Chúng em xin chân thành bày tỏ lòng biết ơn sâu sắc đến thầy Hồ Bảo Quốc Thầy tận tâm hướng dẫn, định hướng có nhận xét đắn, kịp thời cho nhóm chúng em suốt thời gian thực luận văn Chúng em xin cảm ơn sâu sắc thầy Lương Vỹ Minh Thầy tận tình giúp đỡ chúng em q trình triển khai hệ thống Nhóm xin cảm ơn thầy cô khoa Công Nghê Thông Tin tận tình giảng dạy, trang bị cho chúng em kiến thức tảng suốt trình học tập khoa Bên cạnh đó, khơng thể khơng nhắc tới yêu thương chăm sóc gia đình, động viên bạn bè giúp nhóm vượt qua khó khăn thực đề tài Mặc dù nhóm cố gắng trình thực đề tài chắc khơng tránh khỏi thiếu sót Kính mong q thầy bạn tận tình góp ý, bảo Một lần nữa, nhóm xin cảm ơn mong nhận tình cảm chân thành từ tất người TP HCM, tháng 07 năm 2010 Nhóm thực đề tài Nguyễn Tấn Dương – Đặng Vũ Đình Duy v Khoa Công Nghệ Thông Tin Bộ môn Hệ Thống Thơng Tin ĐỀ CƯƠNG CHI TIẾT KHĨA LUẬN TỐT NGHIỆP TÊN ĐỀ TÀI: Tìm hiểu tảng phát triển ứng dụng phân tán với Hadoop áp dụng cho Search Engine phân tán GIÁO VIÊN HƯỚNG DẪN: TS Hồ Bảo Quốc THỜI GIAN THỰC HIỆN: 01/02/2010 – 01/07/2010 SINH VIÊN THỰC HIỆN: Nguyễn Tấn Dương 0612072 Đặng Vũ Đình Duy 0612068 LOẠI ĐỀ TÀI: Tìm hiểu cơng nghệ có ứng dụng minh họa NỘI DUNG ĐỀ TÀI: Tìm hiểu tảng xây dựng ứng dụng phân tán tảng Hadoop o Hệ thống tập tin phân tán HDFS o Framework xây dựng ứng dụng phân tán theo mơ hình MapReduce: vi MapReduce Engine Tìm hiểu cách phát triển ứng dụng phân tán tảng Hadoop Tìm hiểu ứng dụng Seacrh Engine phân tán Nutch triển khai thực tế KẾ HOẠCH THỰC HIỆN Thời gian u cầu Phân cơng 01/02–10/02 Tìm hiểu tổng quan Hadoop 0612072-0612068 11/02–20/02 Tìm hiểu mơ hình MapReduce GFS 0612072-0612068 theo cơng bố Google 21/02–18/03 Tìm hiểu hệ thống tập tin phân tán HDFS 0612072-0612068 19/03– 5/04 0612072-0612068 Tìm hiểu MapReduce Engine 16/04–31/04 Tìm hiểu trình xây dựng ứng dụng 0612072-0612068 phân tán theo mơ hình MapReduce với Hadoop 01/05–25/05 Tìm hiểu ứng dụng Seacrh Engine phân 0612072-0612068 tán với Hadoop 26/05– 6/06 Triển khai Nutch lên hệ thống thực tế 0612072-0612068 07/06– 8/06 Thực thực nghiệm hệ thống 0612072-0612068 đánh giá 19/06– 7/07 Hoàn chỉnh báo cáo 0612072-0612068 vii Xác nhận GVHD Ngày 05 tháng 07 năm 2010 SV Thực viii Mục lục Chương 1: Giới thiệu đề tài 1.1 Giới thiệu 1.2 Ngữ cảnh lý thực đề tài 1.2.1 Sự bùng phát liệu toán truy tìm liệu 1.2.2 Search engine khó khăn 1.2.3 Sự đời mơ hình MapReduce 1.2.4 Lý thực 1.3 Nội dung luận văn Chương 2: Nền tảng tính tốn phân tán với Hadoop 2.1 Giới thiệu Framework Hadoop 2.1.1 Hadoop gì? 2.1.2 Lịch sử Hadoop 10 2.1.3 Các thành phần Hadoop 12 2.1.4 Ứng dụng Hadoop số công ty: 13 2.1.5 Tổng quan Hadoop cluster: 14 2.2 Hadoop Distributed File System (HDFS) 17 2.2.1 Giới thiệu 17 2.2.2 Tổng quan thiết kế HDFS 19 ix 2.2.3 Các tính NameNode 29 2.2.4 Khả chịu lỗi chẩn đoán lỗi HDFS 34 2.2.5 Các giao diện tương tác 36 2.2.6 Quản trị HDFS 37 2.3 MapReduce 39 2.3.1 Giới thiệu mơ hình tính tốn MapReduce 39 2.3.2 Hadoop MapReduce Engine 42 Chương 3: Nutch - Ứng dụng Search Engine phân tán tảng Hadoop 62 3.1 Ngữ cảnh đời lịch sử phát triển Nutch 62 3.2 Giới thiệu Nutch 63 3.2.1 Nutch gì? 63 3.2.2 Nền tảng phát triển 64 3.2.3 Các tính Nutch 64 3.3 Kiến trúc ứng dụng Nutch 66 3.3.1 Thuật giải Nutch 66 3.3.2 Cấu trúc liệu Nutch 69 3.4 Kiến trúc Nutch 73 3.4.1 Kiến trúc thành phần 73 3.4.2 Plugin-based 77 3.5 Nutch việc áp dụng tính tốn phân tán với mơ hình MapReduce vào Nutch 80 3.5.1 Nguyên nhân cần phải phân tán 80 3.5.2 Áp dụng tính tốn phân tán cho thành phần Crawler 80 x Cấu hình lại Search server khởi động chúng Cấu hình lại Search server (slave03, slave04) tập tin core-site.xml để điều chỉnh lại hệ thống tập tin sử dụng local Khởi động Search server slave03, slave04 Các Search server chạy cổng 2010 Cấu hình lại ứng dụng Search – Font End Tạo Nutch tập tin search-servers.txt chưa danh sách Search server port hoạt động chúng: /nutch/search-servers.txt slave03 2010 slave04 2010 Tập tin lưu giữ danh sách Search server cổng hoạt động tương ứng 181 Cấu hình lại nutch-site, điểu chỉnh tham số searcher.dir trỏ tới thư mục chứa tập tin search-servers.txt /nutch/tomcat/webapps/ROOT/WEB-INF/classes/nutch-site.xml searcher.dir /nutch/ Chạy hệ thống Khởi động lại Tomcat 182 Thử tìm kiếm: Ta thấy với từ khố “bóng đá” số kết trả 15785 hit Ta thử tắt search server (slave04) tìm kiếm lại với từ khố “bóng đá” 183 Lúc số lượng kết lại 2970 hit Điều chứng minh ứng dụng Search – Font End thực tìm kiếm nhiều search server (ở 2) 184 Phụ lục F: Bảng tham số cấu hình cho Nutch Tương tự hệ thống Hadoop, Nutch sử dụng file cấu hình bên ngồi để từ áp dụng thơng tin cho hệ thống Do Nutch chứa dựng gói MapReduce HDFS Hadoop nên có file cấu core-site.xml, hdfssite.xml, mapred-site.xml Thêm vào file cấu hình riêng biệt cho hệ thống Nutch file nucth-site.xml, thơng tin cấu hình mặc định nằm file nutch-default.xml File nutch-default.xml cấu hình thơng tin mặc định hệ thống nutch Do nutch-default.xml có nhiều thông số để nêu hết đây, chúng tơi đưa số thông số để minh hoa Để biết thêm đầy đủ, bạn nên tham khảo file nutch-default.xml bên thư mục /installation/conf/ File nutch-site.xml nutch-site.xml Name file.content.limit Value 65536 Description Chiều dài tối đa nội dung download Nếu giá trị lớn chiều dài nội dung nhiều bị cắt (Đơn vị: Byte) Name http.agent.name Default value Description Header HTTP ‘User-Agent’ request Giá trị không rỗng Name http.robots.agents 185 Default value * Description Một chuỗi agent mà user tìm thấy chúng file robots.txt Các agent chuỗi phân cách dấu phẩy Name http.robots.403.allow Default value true Description Nếu file robots.txt khơng tồn server trả trạng thái Forbidden qua HTTP Điều có nghĩa người dụng phép craw trang web Ngược lại “false”, trang web xem Forbidden Name http.agent.description Default value Description Description cho user-agent header Name http.agent.email Default value Description Địa email để giới thiệu cho request header từ HTTP agent request header Name http.agent.version Default value Nutch-1.1 Description Phiên để giới thiệu cho User-Agent header Name http.agent.host Default value 186 Description Tên hay địa chi ip host mà Nutch crawler chạy Mặc định giá trị sử dụng 'protocol-httpclient' plugin Name http.timeout Default value 10000 Description Thời gian network timeout (millisecond) Name http.content.limit Default value 65536 Description Chiều dài tối đa nội dung download Nếu giá trị lớn chiều dài nội dung nhiều bị cắt (Đơn vị: Byte) Name http.proxy.host Default value Description Host name proxy, giá trị rỗng khơng sử dụng proxy Name http.proxy.port Default value Description Port proxy Name searcher.dir Default value crawl Description Thư mục mặc định search 187 Phụ lục G: Cách lệnh command line điều khiển Nutch Các command line gọi từ script \installation\bin\nutch script gọi lớp tương ứng với chức riêng, tên lớp dài hệ thống dùng alias thay cho lớp Do để thuận tiện cho việc gọi command Chúng set CLASSPATH đến thư mục Lệnh thực thao tác crawl Usage: nutch crawl [-dir d] [-threads n] [-depth i] [-topN N] Bảng tham số urlDir Thư mục file chứa danh sách URL muốn crawl -dir d Thư mục lưu trữ liệu thao tác crawl -thread n Số tiểu trình cần để thực crawl Mặc định lấy giá trị thông số fetcher.threads.fetch 10 -depth i Độ sâu thực crawl URL Giá trị mặc định -topN Số lượng link tối đa crawl URL Giá trị mặc định Integer.MAX_VALUE Lệnh đọc kết xuất crawldb Usage: nutch readdb (-stats | -dump | -url ) Bảng tham số Crawldb Thư mục crawldb -stats Hiện thị thông số thống kê tổng quát đến System.out -dump Xuất liệu crawldb đến file thư mục -url Hiển thị thông tin thống kê URL tới System.out 188 Lệnh xuất thông tin linkdb trả thông tin URL linkdb Usage: nutch readlinkdb {-dump | -url ) Bảng tham số linkdb Thư mục linkdb -stats Hiện thị thông số thống kê tổng quát đến System.out -dump Xuất liệu linkdb đến file thư mục -url Hiển thị thông tin thống kê URL tới System.out Lệnh thực inject URL vào crawldb Usage: nutch inject Bảng tham số crawldb Thư mục crawldb url_dir Thư mục file chứa danh sách URL Lệnh thực generate segment để fetch từ crawldb Usage: nutch generate [-topN ] [- numFetchers ] [-adddays ] Bảng tham số Crawldb Thư mục crawldb url_dir Thư mục chứa segment -topN Số lượng URL dành cho segment Giá trị mặc định Long.MAX_VALUE 189 numFetchers Số lượng fetch partition Giá trị mặc định giá trị thông số mapred.map.tasks -adddays Thêm số ngày vào thời gian hành để làm thuận tiện cho cho việc crawl URL mà fetch sớm chu kỳ db.default.fetch.interval Lệnh thực fetch page segment Usage: nutch fetch [-threads n] [-noParsing] Bảng tham số Segment Đường dẫn segment -thread n Số lượng tiểu trình thực fetch -noParsing Disable chế tự động pasre liệu segment Lệnh thực parse content segment Usage: nutch parse Bảng tham số Segment Đường dẫn segment Lệnh thực đọc liệu segment Usage: nutch segread Bảng tham số Segment Đường dẫn segment Lệnh thực update crawldb với thông tin chứa từ thao tác fetch 190 Usage: nutch updatedb (-dir | ) [noAdditions] Bảng tham số Crawldb Thư mục crawldb -dir Thư mục chứa segment danh sách segment | ) -noAddition Không thêm URL vào crawldb Lệnh thực tạo update linkdb với nhiều segment Usage: nutch invertlinks (-dir | ) Bảng tham số Linkdb Thư mục linkdb -dir Thư mục chứa segment danh sách segment | ) Lệnh thực tạo liệu index cho segment sử dụng thơng tin từ crawldb linkdb để tính score cho page liệu index Usage: nutch index … Bảng tham số Index Thư mục index 191 crawldb Thư mục crawldb Linkdb Thư mục linkdb Segment Thư mục segment Lệnh thực merge liệu index segment Usage: nutch merge [-workingdir ] outputIndex indexesDir Bảng tham số -workingdir Thư mục thực thao tác merge OutputIndex Đường dẫn thư mục chứa liệu index sau merge IndexesDir Đường dẫn thư mục chứa liệu index để phục vụ cho thao tác merge Lệnh thực merge crawdb lại thành crawldb Usage: nutch mergedb output_crawldb crawldb1 [crawldb2 crawldb3 ] [filter] Bảng tham số output_crawldb Đường dẫn thư mục crawldb output merge thành crawldb1 Các đường dẫn thư mục crawldb input crawldb2 crawldb3 -filter URLFilters áp dụng đến với URL crawldb input để loại URL không mong muốn 192 Lệnh thực merge linkdb lại thành linkdb Usage: nutch mergelinkdb output_linkdb crawldb1 [linkdb2 linkdb3 ] [-filter] Bảng tham số output_linkdb Đường dẫn thư mục linkdb output merge thành linkdb1 Các đường dẫn thư mục linkdb input linkdb2 linkdb3 -filter URLFilters áp dụng đến với URL link crawldb input để loại URL link không mong muốn Lệnh thực merge segment lại thành segment Usage: nutch mergelinkdb output_dir (-dir segments | seg1 seg2 ) [-filter] [slice NNNN] Bảng tham số output_dir Đường dẫn thư mục chứa segment output merge thành -dir segments Đường dẫn thư mục chứa segment danh sách | seg1 seg2 đường dẫn segment -filter URLFilters áp dụng đến với URL để loại URL không mong muốn -slice NNNN Số lượng segment output, segment chứa NNNN URL 193 Lệnh thực xóa trang trùng liệu indexes segment Usage: nutch dedup Bảng tham số Indexes Các thư mục chứa liệu indexes Lệnh thực load plugin chạy thao tác bên thơng qua hàm main() lớp bên Usage: nutch plugin [args ] Bảng tham số PluginId ID plugin thực thi ClassName Class với hàm main thực thi thao tác args … Danh sách tham số truyền vào plugin Lệnh thực khởi động Search server Usage: nutch server Bảng tham số Port Port Search server crawl dir Đường dẫn thư mục chứa liệu segment indexes Ngồi ra, Nutch cịn hỗ trợ command để thực thao tác search Usage: nutch org.apache.nutch.searcher.NutchBean Bảng tham số Keyword Từ khóa muốn search 194 crawl dir Thư mục chưa liệu crawl dùng để thực search 195 ... tảng phát triển ứng dụng phân tán với Hadoop áp dụng cho Search Engine phân tán. ” Sơ lược: Trong đề tài này, nhóm thực tìm hiểu kỹ tảng phát triển ứng dụng MapReduce framework Hadoop để phát triển. .. cách phát triển ứng dụng phân tán Hadoop Chương 3: Nutch - Ứng dụng Search Engine phân tán tảng Hadoop Trong chương nhóm giới thiệu Nutch, ứng dụng Search Engine phân tán phát triển tảng Hadoop. .. ĐÌNH DUY NGUYỄN TẤN DƯƠNG 0612068 0612072 TÌM HIỂU NỀN TẢNG PHÁT TRIỂN ỨNG DỤNG PHÂN TÁN VỚI HADOOP VÀ ÁP DỤNG CHO SEARCH ENGINE PHÂN TÁN KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT GIÁO VIÊN HƯỚNG DẪN TS