XỬ lý dữ LIỆU PHÂN tán với MAPREDUCE và xây DỰNG ỨNG DỤNG MINH họa

87 1.8K 10
XỬ lý dữ LIỆU PHÂN tán với MAPREDUCE và xây DỰNG ỨNG DỤNG MINH họa

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN  XỬ LÝ DỮ LIỆU PHÂN TÁN VỚI MAPREDUCE VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA Sinh viên: NGUYỄN VĂN DIỆT Lớp : 49TH MSSV : 4913071011 GVHD : HUỲNH TUẤN ANH Nha Trang, tháng 6 năm 2011 LUẬN VĂN TỐT NGHIỆP 1 TÓM TẮT Sự phát triển nhanh chóng của công nghệ thông tin đã tạo ra một lƣợng dữ liệu lớn và đặt ra những thách thức trong việc xử lý chúng. Đánh giá dựa trên một lƣợng lớn dữ liệu đã tạo ra cái nhìn sâu sắc hơn và mở ra những cơ hội hấp dẫn mới trong thƣơng mại điện tử, khoa học và các ứng dụng tính toán. Xử lý lƣợng dữ liệu lớn cho các công việc trên cần phải có những cụm máy tính lớn. Chính vì thế, mô hình xử lý phân tán đang trở nên quan trọng trong sự phát triển của công nghệ thông tin hiện nay. MapReduce là một mô hình lập trình để biểu diễn các tính toán phân tán trên tập dữ liệu lớn và là bộ khung thực thi (execution framework) để xử lý dữ liệu lớn trên các cụm máy chủ bình thƣờng (clusters of commodity servers). Mô hình lập trình MapReduce cung cấp một mức trừu tƣợng dễ hiểu cho việc thiết kế các thuật toán có thể mở rộng, trong khi bộ khung thực thi xử lý trong suốt các chi tiết ở mức hệ thống, từ việc lập lịch đến việc xử lý lỗi. MapReduce đƣợc Google phát triển đầu tiên và đƣợc sử dụng rộng rãi thông qua cài đặt mã nguồn mở Hadoop – đƣợc phát triển bởi Yahoo (nay là một dự án Apache). Hiện nay Mapreduce đƣợc nhiều công ty ứng dụng nhƣ: Google, Yahoo, Amazone,… cũng nhƣ đƣợc các nhóm nghiên cứu quan tâm phát triển. Một vài ví dụ về dữ liệu lớn: Google xử lý 20 PB một ngày (2008), Facebook có 2.5 PB dữ liệu ngƣời dùng và tăng thêm 15 TB/ngày (4/2009) , eBay có 6.5 PB dữ liệu ngƣời dùng và tăng thêm 50 TB/ngày (5/2009). Trong nghiên cứu khoa học, các tập dữ liệu hàng Petabyte cũng đang trở nên bình thƣờng. Ví dụ: Viện Large Hadron Collider (LHC) gần Geneva mô phỏng vụ nổ Big Bang, khi hoạt động sẽ tạo ra 15 PB/ năm. Các nhà thiên văn học Chile đang tạo chiếc camera 3.2 Gigapixel, khi hoạt động sẽ tạo ra khoảng nửa Petabyte dữ liệu ảnh trong một tháng. Xử lý dữ liệu lớn nằm ngoài khả năng của của một máy và đòi hỏi phải có các cụm máy tính – có nghĩa các bài toán dữ liệu lớn chính là việc tổ chức tính toán trên hàng chục, trăm hay cả nghìn máy tính. Đó chính là những gì MapReduce làm. Khóa luận này sẽ giới thiệu tổng quát về tính toán đám mây, cơ bản về MapReduce và thiết kế thuật toán trong MapReduce, một cài đặt mã nguồn mở của MapReduce là Hadoop. Đồng thời khóa luận cũng giới thiệu về phần mềm mã nguồn mở Lucene, Solr và Nutch và minh họa hoạt động của MapReduce thông qua ứng dụng tìm kiếm truyện tranh. 2 LỜI CẢM ƠN Trƣớc hết tôi xin bày tỏ lòng cảm ơn đến quý thầy cô thuộc khoa Công nghệ thông tin trƣờng Đại học Nha Trang đã tận tình dạy dỗ và truyền đạt cho tôi nhiều kiến thức quý báu trong suốt bốn năm qua. Đặc biệt, tôi xin tỏ lòng biết ơn xâu sắc đến thầy Huỳnh Tuấn Anh, ngƣời đã trực tiếp gợi ý, hƣớng dẫn và tận tình truyền đạt nhiều kinh nghiệm để tôi có thể thực hiện và hoàn thành đề tài này. Tôi cũng xin gửi tất cả lòng biết ơn sâu sắc đến cha mẹ, cùng toàn thể gia đình, những ngƣời nuôi dạy tôi trƣởng thành nhƣ ngày hôm nay, đồng thời cũng giúp đỡ, chăm sóc tôi trong suốt quá trình thực hiện đề tài. Cuối cùng, tôi xin cảm ơn những ngƣời bạn đã luôn động viên và cổ vũ để tôi có thể hoàn thành tốt đề tài này. Nha Trang, tháng 6 năm 2011 Sinh viên thực hiện Nguyễn Văn Diệt 3 NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN 4 NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 5 MỤC LỤC Nội dung: 1 Giới thiệu 11 1.1 Cloud Computing 11 Định nghĩa 11 1.1.1 Các đặc trƣng của tính toán đám mây 12 1.1.2 Các mô hình dịch vụ của tính toán đám mây 13 1.1.3 Các lợi ích của tính toán đám mây 17 1.1.4 Ảnh hƣởng của sự phát triển các dịch vụ đám mây đến MapReduce17 1.1.5 1.2 Các ý tƣởng của MapReduce 18 1.3 Sự quan trọng của MapReduce 19 2 Cơ bản về MapReduce 20 2.1 Nguồn gốc từ Functional Programming 21 2.2 Cấu trúc dữ liệu trong MapReduce 22 2.3 Mapper và Reducer – hai thành phần cơ bản trong MapReduce 22 2.4 Partitioner và Combiner 24 2.5 The execution framework (Bộ khung thực thi) 25 2.6 Distributed File System (Hệ thống file phân tán) 26 3 Thiết kế thuật toán cho MapReduce 31 3.1 Local Aggregation 32 Combiner và In-Mapper combining 33 3.1.1 Sự chính xác của thuật toán trong Local Aggregation 35 3.1.2 3.2 Secondary Sorting 38 3.3 Thuật toán MapReduce trong xử lý dữ liệu quan hệ 39 Phép chiếu: 39 3.3.1 Phép chọn: 39 3.3.2 Phép gộp (Group by ) 40 3.3.3 Phép kết nối quan hệ (Relational Join) 40 3.3.4 4 Apache Hadoop 42 6 4.1 Giới thiệu 42 4.2 MapReduce Job 42 JobTracker 42 4.2.1 TaskTracker 42 4.2.2 4.3 Các hàm API cơ bản của Hadoop 45 4.4 Các kiểu dữ liệu và định dạng trong Hadoop 45 Các kiểu dữ liệu 45 4.4.1 Các định dạng đầu vào (input formats) 45 4.4.2 Các định dạng đầu ra (output formats) 48 4.4.3 4.5 Ứng dụng đếm từ (Wordcount) viết trong Hadoop 49 4.6 Các chƣơng trình xây dựng trên nền Hadoop 51 4.7 Hadoop và CSDL quan hệ 52 5 Mã nguồn mở Lucene, Solr và Nutch 53 5.1 Mã nguồn mở Lucene 53 5.2 Mã nguồn mở Solr 55 5.3 Mã nguồn mở Nutch 55 5.4 MapReduce trong Nutch: 57 Cấu trúc dữ liệu chính trong Nutch 57 5.4.1 Các thuật toán MapReduce trong Nutch 58 5.4.2 6 Giới thiệu ứng dụng tìm kiếm truyện tranh 62 6.1 Tóm tắt: 62 6.2 Cơ sở lý thuyết 63 Phân tích dữ liệu text và lấy thông tin (Information Retrieval) 63 6.2.1 Các cách tiếp cận Text mining 70 6.2.2 6.3 Sơ đồ hoạt động 71 Giai đoạn thu thập dữ liệu 72 6.3.1 Giai đoạn tạo tài liệu và đánh chỉ mục 74 6.3.2 Giai đoạn tìm kiếm 75 6.3.3 6.4 Các plugin đƣợc viết thêm cho ứng dụng tìm kiếm truyện tranh 76 Plugin parse-htmlformangasearch 76 6.4.1 7 Plugin index-mangasearch 76 6.4.2 6.5 Trang web tìm kiếm 77 AJAX Solr 77 6.5.1 Các tính năng chính 77 6.5.2 7 Tổng kết 79 7.1 Kết quả đạt đƣợc 79 7.2 Những hạn chế 79 7.3 Hƣớng phát triển 79 8 Phụ lục 80 8.1 Hƣớng dẫn cài đặt và sử dụng Hadoop trên Windows 80 8.2 Hƣớng dẫn cài đặt và sử dụng Nutch 84 8 DANH MỤC HÌNH VẼ Hình 1. Mô hình trực quan để định nghĩa Cloud Computing của NIST 12 Hình 2. Các loại dịch vụ Cloud Computing 14 Hình 3. Mô hình chia để trị 20 Hình 4. Hàm Map và Fold trong Functional Programming 21 Hình 5. Hai pha Map và Reduce của một MapReduce job 23 Hình 6. Mô hình MapReduce đầy đủ các thành phần 25 Hình 7. Kiến trúc của HDFS 27 Hình 8. Vai trò của NameNode và DataNode trong HDFS 29 Hình 9. Kiến trúc HDFS đầy đủ 30 Hình 10. Bảo toàn trạng thái trong Hadoop 32 Hình 11. Tiến trình hoạt động của chƣơng trình WordCount 33 Hình 12. Phép chiếu 39 Hình 13. Phép chọn 39 Hình 14. Phép kết nối quan hệ 40 Hình 15. Sự liên hệ giữa JobTracker và TaskTracker 43 Hình 16. Sơ đồ đầy đủ của một Hadoop Cluster 43 Hình 17. Sơ đồ thực thi chi tiết một ứng dụng MapReduce trong Hadoop 44 Hình 18. Hệ thống phân cấp các lớp của InputFormat 47 Hình 19. Hệ thống phân cấp các lớp của OutputFormat 48 Hình 20. Cấu trúc của Hbase 51 Hình 21. Hive và Pig 52 Hình 22. Các thành phần Lucene hỗ trợ cho hệ thống tìm kiếm 53 Hình 23. Sơ đồ hoạt động của Nutch khi sử dụng nhƣ một Crawler 56 Hình 24. Sơ đồ đầy đủ của Nutch khi sử dụng nhƣ một Search Engine 57 Hình 25. Revelant and retrieved 64 Hình 26. Sơ đồ hoạt động tổng quát của ứng dụng tìm kiếm truyện tranh 71 Hình 27. Sơ đồ hoạt động chi tiết của giai đoạn thu thập dữ liệu 72 Hình 28. Sơ đồ hoạt động chi tiết của giai đoạn tạo chỉ mục 74 Hình 29. Sơ đồ hoạt động của giai đoạn tìm kiếm 75 Hình 30. Giao diện trang web khi tìm kiếm 77 Hình 31. Kết quả tìm kiếm khi sử dụng chức năng lọc 78 9 Hình 32. Kết quả khi tìm kiếm theo tác giả 78 Hình 33. Giao diện của Cygwin 81 Hình 34. Giao diện web của NameNode 82 Hình 35. Giao diện web của JobTracker 83 Hình 36. Giao diện của CDH 84 [...]... bằng cách chạy đoạn mã trên bộ xử lý một cách trực tiếp trên khối dữ liệu cần xử lý Hệ thống tập tin phân tán có nhiệm vụ quản lý dữ liệu mà MapReduce xử lý Process data sequentially and avoid random access (xử lý dữ liệu tuần tự và tránh truy cập ngẫu nhiên): Trong trƣờng hợp xử lý một lƣợng lớn dữ liệu, dung lƣợng bộ nhớ thƣờng không đủ cho toàn bộ dữ liệu xử lý Do đó dữ liệu phải đƣợc lƣu trữ trên... dữ liệu không phải là những đòi hỏi xử lý cao Do đó việc tách rời việc lƣu trữ dữ liệu và tính toán tạo ra sự thắt cổ chai trong mạng Do đó sẽ hiệu quả hơn nếu chuyển sự thực thi xử lý đến dữ liệu thay vì chuyển dữ liệu đến nơi xử lý chúng MapReduce sử dụng một kiến trúc trong đó các bộ xử lý và đĩa lƣu trữ đƣợc đặt cùng với nhau Trong sự thiết lập nhƣ vậy, chúng ta có thể tận dụng lợi thế của dữ liệu. .. đĩa do đó làm chậm công việc xử lý Để tránh hạn chế này, MapReduce đƣợc thiết kế để xử lý các khối dữ liệu của một tập dữ liệu lớn Hide system-level details from the application developer (che giấu mức chi tiết hệ thống đối với nhà phát triển): Để dễ dàng cho các lập trình viên khi viết ứng dụng xử lý phân tán, MapReduce che giấu sự thực thi phức tạp bên dƣới Thay vào đó, 18 MapReduce cung cấp một mô... nên sự chính xác của thuật toán không thể phụ thuộc vào sự tính toán trên Combiner hoặc phụ thuộc vào nó Trong các chƣơng trình MapReduce, kiểu dữ liệu đầu vào trong Reducer phải cùng kiểu dữ liệu đầu ra của Mapper, vì thế kiểu dữ liệu đầu vào và đầu ra của Combiner phải cùng kiểu với dữ liệu đầu ra của Mapper Trong trƣờng hợp kiểu dữ liệu đầu vào và đầu ra của Reducer giống nhau thì Reducer có thể... đặt nào đi nữa thì chu trình xử lý vẫn không thay đổi: các node tính toán lấy đầu vào từ nơi lƣu trữ, nạp dữ liệu vào bộ nhớ, xử lý dữ liệu và ghi kết quả ngƣợc trở lại Khi kích thƣớc dữ liệu càng tăng lên thì khả năng xử lý cũng phải tăng lên Nhƣng khi khả năng xử lý tăng thì sự liên kết giữa node lƣu trữ và node xử lý lại trở thành một trở ngại Lúc này để có hiệu năng cao thì cần phải có đƣờng truyền... xử lý cặp key-value cụ thể Chỉ định Reducer sẽ xử lý các cặp key-value trung gian Tuy nhiên, lập trình viên cũng có một số kĩ thuật để điều khiển việc thực thi và quản lý dòng dữ liệu trong MapReduce Bao gồm: Khả năng xây dựng các cấu trúc dữ liệu phức tạp dùng làm keys và values để lƣu trữ và giao tiếp các kết quả từng phần Khả năng thực thi các đoạn mã của ngƣời dùng lúc bắt đầu và kết thúc map và. .. tƣơng tự với PaaS và SaaS Cũng cùng theo dòng chảy, mô hình lập trình MapReduce là một mức trừu tƣợng mạnh mẽ để tách biệt “what” (xử lý cái gì) ra khỏi “how” (xử lý nhƣ thế nào) trong việc xử lý dữ liệu lớn 17 1.2 Các ý tưởng của MapReduce Giải quyết các bài toán dữ liệu lớn đòi hỏi cách tiếp cận riêng biệt mà nhiều khi đối lập với mô hình tính toán truyền thống Dƣới đây là các ý tƣởng chính của MapReduce: ... Vì MapReduce đƣợc thiết kế dành cho các cụm máy giá rẻ (low-end) nên việc thực thi có thể sẽ dễ xảy ra lỗi, đặc biệt trong các cụm lớn, lỗi đĩa cứng và RAM sẽ xảy ra thƣờng xuyên MapReduce frame work phải xử lý đƣợc các việc này 2.6 Distributed File System (Hệ thống file phân tán) Chúng ta đã tập trung nhiều vào việc xử lý dữ liệu lớn Nhƣng một điều không kém phần quan trọng đó là: nếu không có dữ liệu. .. thuật MapReduce là việc xác định cấu trúc key-value trên các tập dữ liệu cần xử lý Ví dụ, đối với một tập các trang web, các key có thể là các URL và các value có thể là nội dung của các trang HTML, đối với một đồ thị, key có thể là node id và value có thể là danh sách kề của node đó Trong một số thuật toán key đƣợc sử dụng để phân biệt các bộ dữ liệu (giống nhƣ khái niệm khóa trong cơ sở dữ liệu) ,... triển khai lên hạ tầng đám mây các ứng dụng do ngƣời dùng tạo nên hoặc khả năng phát triển các ứng dụng sử dụng các ngôn ngữ lập trình và các công cụ đƣợc hỗ trợ bởi nhà cung cấp dịch vụ Khách hàng không cần quản lý hay kiểm soát hạ tầng đám mây bên dƣới nhƣng cần phải kiểm soát các ứng dụng đã triển khai và đôi khi là cả những ứng dụng nhằm cấu hình môi trƣờng host ứng dụng đó Đặt trưng Phục vụ cho việc . tận dụng lợi thế của dữ liệu cục bộ bằng cách chạy đoạn mã trên bộ xử lý một cách trực tiếp trên khối dữ liệu cần xử lý. Hệ thống tập tin phân tán có nhiệm vụ quản lý dữ liệu mà MapReduce xử lý. . BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN  XỬ LÝ DỮ LIỆU PHÂN TÁN VỚI MAPREDUCE VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA Sinh viên:. random access (xử lý dữ liệu tuần tự và tránh truy cập ngẫu nhiên): Trong trƣờng hợp xử lý một lƣợng lớn dữ liệu, dung lƣợng bộ nhớ thƣờng không đủ cho toàn bộ dữ liệu xử lý. Do đó dữ liệu phải

Ngày đăng: 31/08/2014, 08:32

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan