Đồ án: Mô hình Mapreduce và ứng dụng của Bigdata

78 1.7K 78
Đồ án: Mô hình Mapreduce và ứng dụng của Bigdata

Đ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

Hiện nay, trên thực tế có nhiểu lớp các bài toán cần phải thực hiện khối lƣợng tính toán lớn trên rất nhiều dữ liệu đầu vào. Các bài toán nhƣ vậy có thể gặp trong nhiều lĩnh vực, từ tìm kiếm, truy hồi thông tin, tới các bài toán tin sinh học. Một ví dụ điển hình là các máy tìm kiếm (search engine) lớn nhƣ Google, trong quá trình phân tích, đánh chỉ mục phải xử lý tới hàng tỷ trang Web và các tài liệu khác, tƣơng đƣơng lƣợng dữ liệu ở mức pentabyte. Hay trong lĩnh vực sinh học phân tử và tin sinh học. Trong bài toán phân tích hệ gen ngƣời hay sinh vật bậc cao đòi hỏi xử lý các bộ dữ liệu có kích thƣớc nhiều terabyte để mã hóa hơn 25.000 gen với số nucleotit lên hàng tỉ. Những vấn đề về xử lý ngôn ngữ tự nhiên, nhận dạng, xử lý ảnh ba chiều, dự báo thời tiết... đều đòi hỏi phải xử lý dữ liệu với tốc độc rất cao, với khối lƣợng dữ liệu rất lớn. Để đáp ứng yêu cầu tính toán và xử lý lớn nhƣ vậy, việc tính toán tuần tự trên các máy tính riêng lẻ là không đáp ứng yêu cầu. Do đó cần phải có những hệ thống máy tính mạnh mẽ hơn để đáp ứng đƣợc những yêu cầu của thực tế. Mặc dù tốc độ xử lý của các Bộ xử lý tăng nhanh trong những năm qua, nhƣng do giới hạn về vật lý nên khả năng tính toán của chúng không thể tăng mãi đƣợc. Điều này dẫn tới là muốn tăng đƣợc khả năng tính toán của các hệ thống máy tính thì phải khai thác đƣợc khả năng xử lý song song của chúng. Ngày càng xuất hiện nhiều bài toán mà những hệ thống đơn một bộ xử lý không đáp ứng đƣợc yêu cầu xử lý về thời gian, do đó đòi hỏi phải sử dụng những hệ thống đa bộ xử lý và đòi hỏi phải xử lý song song. Việc song song hóa để đẩy nhanh tốc độ thực thi của một tiến trình có thể thực hiện ở nhiểu mức, đầu tiên là mức vật lý, với việc xây dựng hệ thống máy tính liên kết với nhau. Mức thứ hai là mức ứng dụng, ngay chính bản thân các ứng dụng cũng phải hỗ trợ khả năng tính toán phân tán, tối ƣu các thuật toán khi làm việc trên môi trƣờng phân tan, mà tại đó rất hay gặp phải cái vấn đề về lỗi, vấn đề bảo mật, tức là hệ thống không đồng đều và tính tin cậy không cao. . Các phƣơng pháp song song hóa đã đƣợc đề cập từ lâu, khi mà J.Von Neumann giới thiệu mô hình tính toán song song có tên Otomat tế bào. Từ đó đến nay, lý thuyết về xử lý song song trở thành lĩnh vực nghiên cứu quan trọng và ngày càng đem lại những dấu hiệu khả quan trong việc xây dựng một mô hình lập trình mới có những tính năng vƣợt trội so với mô hình lập trình tuần tự truyền thống. Năm 2004, Google giới thiệu mô hình toán (ở mức ứng dụng) MapReduce để trợ tính toán phân tán trên một tập dữ liệu lớn và trên các cụm nhiều máy tính. Cho đến nay đã có nhiều giải pháp triển khai nhƣ Apache Hadoop, Qizmt, Skynet và Greenplum, làm cho MapReduce trở lên phổ biến và theo Infoworld, MapReduce là công nghệ doanh nghiệp có ảnh hƣởng lớn nhất 1 (năm 2009). Đồ án tốt nghiệp Đại học Đặt vấn đề SVTH: Vũ Minh Ngọc D07CNPM1 2 MapReduce nền tảng lập trình này đã đƣợc Google, Yahoo, Facebook, MySpace và nhiều hãng khác áp dụng để xử lý bộ dữ liệu khổng lồ hàng giờ. Ở dạng đơn giản nhất, MapReduce chia việc xử lý thành nhiều khối công việc nhỏ, phân tán khắp liên cung (cluster)gồm các nút tính toán (tiêu biểu là các server thông thƣờng) và rồi thu thập các kết quả. Hỗ trợ xử lý song song có khả năng mở rộng cao, MapReduce là giải pháp nhanh, rẻ và an toàn. Mục tiêu của đồ án là tìm hiểu về MapReduce nhƣ một mô hình tính toán mới, có nhiều tiềm năng và ứng dụng. Trong phạm vi đồ án, em sẽ tìm hiểu về mô hình MapReduce, cách hiện thực hóa MapReduce trong phần mềm nguồn mở Hadoop. Trên cơ sở các hiểu biết về MapReduce, em cũng xây dựng phiên bản song song cho một số thuật toán học máy thông dụng, cài đặt trên Hadoop và thử nghiệm làm rõ đặc điểm của phiên bản song song do em xây dựng. Các bạn muốn tìm hiểu về Bigdata và Mapreduce có thể liên hệ với mình qua skype: vungoc.89 (ghi rõ yêu cầu kết bạn)

Đồ án tốt nghiệp Đại học SVTH: Vũ Minh Ngọc D07CNPM1 i LỜI NÓI ĐẦU Quá trình thực hiện đồ án, là một thời gian dài và gây ra nhiều khó khăn với một sinh viên chƣa có kinh nghiệm nhƣ em. Tuy vậy, trong suốt thời gian ấy có sự giúp đỡ tận tình của thầy Từ Minh Phƣơng. Vì vậy, ngay những trang đầu này, em muốn dành lời cám ơn sâu sắc nhất tới thầy. Bên cạnh đó, trong thời gian thực tập và làm đồ án, em đƣợc sự giúp đỡ nhiệt tình của các anh chị trong công ty Cổ phần truyền thông Việt Nam - VCCorp. Tuy đã cố gắng để hoàn thành tốn đồ án, nhƣng không tránh khỏi những sai sót, vì vậy em mong nhận đƣợc sự thông cảm, chỉ bảo của Thầy Cô và các bạn. Em xin chân thành cảm ơn! Hà Nội, ngày 05 tháng 12 năm 2011. Sinh viên: Vũ Minh Ngọc Đồ án tốt nghiệp Đại học SVTH: Vũ Minh Ngọc D07CNPM1 ii NHẬN XÉT, ĐÁNH GIÁ, CHO ĐIỂM (Của Ngƣời hƣớng dẫn) ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… Điểm: …………………….………(bằng chữ: … …………… ….) Đồng ý/Không đồng ý cho sinh viên bảo vệ trƣớc hội đồng chấm đồ án tốt nghiệp?. …………, ngày tháng năm 20 CÁN BỘ- GIẢNG VIÊN HƢỚNG DẪN (ký, họ tên) Đồ án tốt nghiệp Đại học SVTH: Vũ Minh Ngọc D07CNPM1 iii Mục lục ĐẶT VẤN ĐỀ 1 CHƢƠNG I. MÔ HÌNH MAPREDUCE VÀ HADOOP 1 1.1. Mô hình MapReduce 1 1.1.1. Tổng quan về mô hình toán MapReduce 1 1.1.2. Ƣu điểm của mô hình MapReduce 3 1.1.3. Nguyên tắc hoạt động của mô hình MapReduce 3 1.2. Apache Hadoop 5 1.2.1. Giới thiệu tổng quát về Apache Hadoop 5 1.2.2. Ƣu điểm của Apache Hadoop 6 1.2.3. Các thành phần trong dự án Apache Hadoop 6 1.2.4. Nguyên tắc hoạt động của Hadoop MapReduce 6 1.2.5. Các trình nền của Hadoop 7 CHƢƠNG II. LẬP TRÌNH CƠ BẢN VỚI MÔ HÌNH TOÁN MAPREDUCE VÀ HADOOP 10 2.1. Phƣơng pháp viết một MapReduce job 10 2.1.1. Các kiểu dữ liệu mà Hadoop hỗ trợ 11 2.1.2. Mapper 12 2.1.3. Reducer 13 2.2. Hadoop I/O 14 2.2.1. InputFormat 14 2.2.2. OutputFormat 16 2.3. SequenceFile 17 CHƢƠNG III. SỬ DỤNG MÔ HÌNH MAPREDUCE ĐỂ SONG SONG HÓA MỘT SỐ THUẬT TOÁN CỤ THỂ 18 3.1. K-Means 18 3.1.1. Giới thiệu thuật toán K-Means 18 3.1.2. MapReduce hóa 20 3.2. Naïve Bayes 24 3.2.1. Giới thiệu thuật toán Naïve Bayes cơ bản 24 3.2.2. MapReduce hóa 29 3.3. LDA và Gibbs sampling 33 3.3.1. Giới thiệu thuật toán 33 3.3.2. MapReduce hóa lấy mẫu Gibbs cho LDA 38 CHƢƠNG IV. CÀI ĐẶT VÀ THỰC NGHIỆM 47 Đồ án tốt nghiệp Đại học SVTH: Vũ Minh Ngọc D07CNPM1 iv 4.1. Cài đặt trên Hadoop 47 4.1.1 K-Means 47 4.1.2. Naïve Bayes 48 4.1.3. LDA với Gibbs samppling 49 4.2. Thực thi các ứng dụng trên môi trƣờng thật 51 4.2.1. K-mean 51 4.2.2. Naïve Bayes 55 4.2.3. LDA và lấy mẫu Gibbs 58 4.3. So sánh và đánh giá hiệu năng 60 4.3.1. Đánh giá tính chính xác của thuật toán khi áp dụng mô hình MapReduce 60 4.3.2. Đánh giá khả năng cải thiện tốc độ thực thi của các thuật toán 60 4.3.3. MapReduce không phải lúc nào cũng mô hình tốt nhất. 63 DANH MỤC TÀI LIỆU THAM KHẢO 65 PHỤ LỤC 66 Đồ án tốt nghiệp Đại học SVTH: Vũ Minh Ngọc D07CNPM1 v SƠ ĐỒ HÌNH Hình 1. Mô hình làm việc của một công việc MapReduce 2 Hình 2. Quy trình xử lý của MapReduce 4 Hình 3. Tƣơng tác giữa JobTracker và TaskTracker. Sau khi client gọi JobTracker bắt đầu công việc xử lý dữ liệu, các phân vùng JobTracker làm việc và giao các nhiệm vụ Map và Recude khác nhau cho mỗi TaskTracker trong cluster. 9 Hình 4. Cấu trúc liên kết của một nhóm Hadoop điển hình. Đó là một kiến trúc master/slave trong đó NameNode và JobTracker là Master và DataNode & TaskTracker là slave. 9 Hình 5. Biểu đồ phân cấp quả quá trình MapReduce 10 Hình 6. Mô hình K-means đơn giản 18 Hình 7. Hình dạng cụm dữ liệu đƣợc khám phá bởi k-means 20 Hình 8. Lƣu đồ thuật toán k-means 22 Hình 9. Lƣu đồ MapReduce hoá K-means 23 Hình 10. Lƣu đồ thuật toán Naive Bayes 30 Hình 11. Lƣu đồ MapReduce hoá Naive Bayes 31 Hình 12. Quá trình lặp của thuật toán sinh LDA 34 Hình 13. (Trái) Mô hình độ hoạ biểu diễn của LDA. (Phải) Mô hình đồ hoạ biểu diễn của phân phối biến đổi đƣợc sử dụng để xấp xỉ xác suất hậu nghiệm trong LDA 35 Hình 14. Mô hình thuật toán lấy mẫu Gibbs 39 Hình 15. Lƣu đồ MapReduce hoá thuật toán lấy mẫu Gibbs - chiến lƣợc 1 41 Hình 16. Lƣu đồ MapReduce hoá lấy mẫu Gibbs - chiến lƣợc 2 42 Hình 17. Đoạn chƣơng trình của K-Means 51 Hình 18. Quá trình bắt đầu, hiển thị ra tọa độ trọng tâm ban đầu 52 Hình 19. Quá trình thực hiện, kết quả - trọng tâm mới đƣợc hiển thị sau mỗi vòng lặp 52 Hình 20. Kết quả cuối cùng, tọa độ của hai trọng tâm mới đƣợc hiển thị. 53 Hình 21. Trang web để theo dõi quá trình thực hiện job MapReduce 54 Hình 22. Nhật ký của một lần chạy job MapReduce, với số lƣợng Map và số lƣợng Reduce cùng chạy. 54 Hình 23. Đoạn mã nguồn chƣơng trình Naïve Bayes 55 Hình 24. Chạy đoạn mã trên Hadoop 55 Hình 25. Quá trình thực hiện job 56 Hình 26. Kết thúc job MapReduce để đếm số lần xuất hiện 56 Hình 27. Đoạn mã chƣơng trình tính sác xuất cuối cùng cho Naïve Bayes 57 Hình 28. Giá trị của mỗi biến xác suất cần tính, và chạy một kết quả thử nghiệm 57 Hình 29. Đoạn mã chƣơng trình Gibbs với nhiều biến đếm toàn cục 58 Hình 30. Chạy đoạn chƣơng trình trên Hadoop 58 Hình 31. Kết quả khi chạy với một dữ liệu đơn giản 59 Hình 32. Bảng tổng kết trực quan, so sánh tốc độ thực hiện Naïve Bayes trên từng máy và trên cả 5 máy 61 Hình 33. Biểu đồ cho thấy cải thiện tốc độ của thuật toán k-mean, khi sử dụng từ 1-16 bộ vi xử lý. Dòng đậm là mức độ trung bình, còn các dòng nét đứt là khoảng từ tốc độ cao nhất đến thấp nhất (phƣơng sai). 62 Hình 34. Biểu đồ cho thấy cải thiện tốc độ của thuật toán Naïve Bayes, khi sử dụng từ 1-16 bộ vi xử lý. Dòng đậm là mức độ trung bình, còn các dòng nét đứt là khoảng từ tốc độ cao nhất đến thấp nhất (phƣơng sai). 62 Đồ án tốt nghiệp Đại học SVTH: Vũ Minh Ngọc D07CNPM1 vi DANH MỤC BẢNG Bảng 1. Danh sách các kiểu dữ liệu cơ bản của Hadoop 11 Bảng 2. Một vài lớp thực hiện Mapper đƣợc định nghĩa trƣớc bởi Hadoop 13 Bảng 3. Danh sách một số reducer cơ bản đƣợc triển khai cung cấp bởi Hadoop 14 Đồ án tốt nghiệp Đại học Đặt vấn đề SVTH: Vũ Minh Ngọc D07CNPM1 1 ĐẶT VẤN ĐỀ Hiện nay, trên thực tế có nhiểu lớp các bài toán cần phải thực hiện khối lƣợng tính toán lớn trên rất nhiều dữ liệu đầu vào. Các bài toán nhƣ vậy có thể gặp trong nhiều lĩnh vực, từ tìm kiếm, truy hồi thông tin, tới các bài toán tin sinh học. Một ví dụ điển hình là các máy tìm kiếm (search engine) lớn nhƣ Google, trong quá trình phân tích, đánh chỉ mục phải xử lý tới hàng tỷ trang Web và các tài liệu khác, tƣơng đƣơng lƣợng dữ liệu ở mức pentabyte. Hay trong lĩnh vực sinh học phân tử và tin sinh học. Trong bài toán phân tích hệ gen ngƣời hay sinh vật bậc cao đòi hỏi xử lý các bộ dữ liệu có kích thƣớc nhiều terabyte để mã hóa hơn 25.000 gen với số nucleotit lên hàng tỉ. Những vấn đề về xử lý ngôn ngữ tự nhiên, nhận dạng, xử lý ảnh ba chiều, dự báo thời tiết đều đòi hỏi phải xử lý dữ liệu với tốc độc rất cao, với khối lƣợng dữ liệu rất lớn. Để đáp ứng yêu cầu tính toán và xử lý lớn nhƣ vậy, việc tính toán tuần tự trên các máy tính riêng lẻ là không đáp ứng yêu cầu. Do đó cần phải có những hệ thống máy tính mạnh mẽ hơn để đáp ứng đƣợc những yêu cầu của thực tế. Mặc dù tốc độ xử lý của các Bộ xử lý tăng nhanh trong những năm qua, nhƣng do giới hạn về vật lý nên khả năng tính toán của chúng không thể tăng mãi đƣợc. Điều này dẫn tới là muốn tăng đƣợc khả năng tính toán của các hệ thống máy tính thì phải khai thác đƣợc khả năng xử lý song song của chúng. Ngày càng xuất hiện nhiều bài toán mà những hệ thống đơn một bộ xử lý không đáp ứng đƣợc yêu cầu xử lý về thời gian, do đó đòi hỏi phải sử dụng những hệ thống đa bộ xử lý và đòi hỏi phải xử lý song song. Việc song song hóa để đẩy nhanh tốc độ thực thi của một tiến trình có thể thực hiện ở nhiểu mức, đầu tiên là mức vật lý, với việc xây dựng hệ thống máy tính liên kết với nhau. Mức thứ hai là mức ứng dụng, ngay chính bản thân các ứng dụng cũng phải hỗ trợ khả năng tính toán phân tán, tối ƣu các thuật toán khi làm việc trên môi trƣờng phân tan, mà tại đó rất hay gặp phải cái vấn đề về lỗi, vấn đề bảo mật, tức là hệ thống không đồng đều và tính tin cậy không cao. . Các phƣơng pháp song song hóa đã đƣợc đề cập từ lâu, khi mà J.Von Neumann giới thiệu mô hình tính toán song song có tên Otomat tế bào. Từ đó đến nay, lý thuyết về xử lý song song trở thành lĩnh vực nghiên cứu quan trọng và ngày càng đem lại những dấu hiệu khả quan trong việc xây dựng một mô hình lập trình mới có những tính năng vƣợt trội so với mô hình lập trình tuần tự truyền thống. Năm 2004, Google giới thiệu mô hình toán (ở mức ứng dụng) MapReduce để trợ tính toán phân tán trên một tập dữ liệu lớn và trên các cụm nhiều máy tính. Cho đến nay đã có nhiều giải pháp triển khai nhƣ Apache Hadoop, Qizmt, Skynet và Greenplum, làm cho MapReduce trở lên phổ biến và theo Infoworld, MapReduce là công nghệ doanh nghiệp có ảnh hƣởng lớn nhất [1] (năm 2009). Đồ án tốt nghiệp Đại học Đặt vấn đề SVTH: Vũ Minh Ngọc D07CNPM1 2 MapReduce - nền tảng lập trình này đã đƣợc Google, Yahoo, Facebook, MySpace và nhiều hãng khác áp dụng để xử lý bộ dữ liệu khổng lồ hàng giờ. Ở dạng đơn giản nhất, MapReduce chia việc xử lý thành nhiều khối công việc nhỏ, phân tán khắp liên cung (cluster)gồm các nút tính toán (tiêu biểu là các server thông thƣờng) và rồi thu thập các kết quả. Hỗ trợ xử lý song song có khả năng mở rộng cao, MapReduce là giải pháp nhanh, rẻ và an toàn. Mục tiêu của đồ án là tìm hiểu về MapReduce nhƣ một mô hình tính toán mới, có nhiều tiềm năng và ứng dụng. Trong phạm vi đồ án, em sẽ tìm hiểu về mô hình MapReduce, cách hiện thực hóa MapReduce trong phần mềm nguồn mở Hadoop. Trên cơ sở các hiểu biết về MapReduce, em cũng xây dựng phiên bản song song cho một số thuật toán học máy thông dụng, cài đặt trên Hadoop và thử nghiệm làm rõ đặc điểm của phiên bản song song do em xây dựng. TÓM TẮT NỘI DUNG CHÍNH CỦA ĐỒ ÁN Nội dung của đồ án đƣợc chia thành 4 chƣơng: Chƣơng 1. Giới thiệu các khái niệm cơ bản nhất về mô hình toán MapReduce, ƣu điểm, cũng nhƣ nguyên tắc hoạt động cơ bản. Đồng thời, đồ án cũng đề cập đến Apache Hadoop - giải pháp nguồn mở rất phổ biến hiện nay, mô hình cũng nhƣ thành phần của nó. Chƣơng 2. Trong phần này sẽ nói chi tiết hơn về mô hình toán MapReduce, làm thế nào để lập trình đƣợc với nó thông qua các ví dụ đơn giản. Bên cạnh đó, trong Chƣơng 2 này chúng ta cũng tìm hiểu một số API do Apache Hadoop cung cấp để lập trình với mô hình toán MapReduce trên nền Java. Chƣơng 3. Đây là phần chính của đồ án, với việc áp dụng mô hình toán cho 3 thuật toán là K-Mean, Naïve Bayes và LDA. Trong đó, sẽ giới thiệu về ba thuật toán này, cùng với cách áp dụng mô hình toán cho mỗi thuật toán. Chƣơng 4. Là phần cài đặt các mô hình toán của 3 thuật toán ở Chƣơng 3. Việc cài đặt đƣợc thực hiện trên môi trƣờng của Apache Hadoop. Đồng thời cũng đánh giá hiệu năng khi chạy phân tán trong môi trƣờng thực tế. Trong lúc viết, tuy đã cố gắng hết sức nhƣng vẫn không tránh khỏi thiếu sót mong các thầy góp ý giúp hoàn thiện hơn bản đồ án, để thông qua đồ án này làm cho MapReduce đƣợc ứng dụng rộng rãi hơn ở Việt Nam. Đồ án tốt nghiệp Đại học Chƣơng 1. Mô hình toán MapReduce và Hadoop SVTH: Vũ Minh Ngọc D07CNPM1 1 CHƢƠNG I. MÔ HÌNH MAPREDUCE VÀ HADOOP 1.1. Mô hình MapReduce 1.1.1. Tổng quan về mô hình toán MapReduce MapReduce là một “mô hình lập trình” (programming model), lần đầu đƣợc giới thiệu trong bài báo của Jefferey Dean và Sanjay Ghemawat ở hội nghị OSDI 2004 [thêm trích dẫn vào đây]. MapReduce chỉ là một mô hình hay là một khung (framework) để ngƣời lập trình xây dựng chƣơng trình. Để thực hiện chƣơng trình theo mô hình MapReduce thì cần có một nền tảng hay một hiện thực (implementation) cụ thể. Google có một nền tảng của MapReduce bằng C++. Apache có Hadoop, một implementation mã nguồn mở khác trên Java (ngƣời dùng dùng Hadoop qua một Java interface). MapReduce là quy trình giúp xử lý tập hợp dữ liệu lớn đặt tại các máy tính phân tán, có thể xử lý đƣợc dữ liệu không cấu trúc (dữ liệu lƣu trữ dạng tệp tin hệ thống) và dữ liệu cấu trúc (dữ liệu quan hệ 2 chiều). Trong MapReduce, các máy tính chứa dữ liệu đơn lẻ đƣợc gọi là các nút (node). Đơn giản thì MapReduce là một cách tiếp cận chia để trị, tức là chia vấn đề lớn thành các vấn đề nhỏ, xử lý song song từng vấn đề nhỏ và tổng hợp kết quả lại. Để thực hiện đƣợc công việc, mô hình MapReduce chia công việc thành hai phần chính là map và reduce. Trong đó, hàm map thƣờng rút trích thông tin cần thiết các từng phần tử, qua một bƣớc trung gian để trộn và sắp xếp lại kết quả, sau đó tại reduce thì tổng hợp kết quả trung gian và tính ra kết quả cuối cùng. Ví dụ, trong bài đếm từ, công việc chủ yếu là đếm số lần xuất hiện của các từ trong văn bản. Công việc nhƣ vậy thì có thể phân chia thành hai phần nhƣ sau: • Đầu vào : Một dòng của văn bản • Đầu ra : key : từ, value : 1 • Đầu vào : key : từ, values : tập hợp các giá trị đếm đƣợc của mỗi từ • Đầu ra : key : từ, value : tổng Dữ liệu là văn bản, đƣợc chia thành nhiều dòng khác nhau, lƣu trữ ở nhiều nơi khác nhau. Hàm map chạy song song tạo ra các giá trị trung gian khác nhau từ tập dữ liệu khác nhau. Hàm reduce cũng chạy song song, mỗi reducer xử lý một tập khóa khác nhau. Tất cả các giá trị đƣợc xử lý một cách độc lập. Và giai đoạn reduce chỉ bắt đầu khi giai đoạn map kết thúc. Đồ án tốt nghiệp Đại học Chƣơng 1. Mô hình toán MapReduce và Hadoop SVTH: Vũ Minh Ngọc D07CNPM1 2 Hình 1. Mô hình làm việc của một công việc MapReduce MapRedue định nghĩa dữ liệu (cấu trúc và không cấu trúc) dƣới dạng cặp khóa/giá trị (key/value). Ví dụ, key có thể là tên của tập tin (file) và value nội dung của tập tin, hoặc key là địa chỉ URL và value là nội dung của URL,… Việc định nghĩa dữ liệu thành cặp key/value này linh hoạt hơn các bảng dữ liệu quan hệ 2 chiều truyền thống (quan hệ cha – con hay còn gọi là khóa chính – khóa phụ). Để xử lý khối dữ liệu này, lập trình viên viết hai hàm map và reduce. Hàm map có input là một cặp (k1, v1) và output là một danh sách các cặp (k2, v2). Chú ý rằng các input và output keys và values có thể thuộc về các kiểu dữ liệu khác nhau. Nhƣ vập hàm map có thể đƣợc viết một cách hình thức nhƣ sau: map (k1, v1) -> list (k2, v2) MapReduce sẽ áp dụng hàm map (mà ngƣời dùng viết) vào từng cặp (key, value) trong khối dữ liệu vào, chạy rất nhiều phiên bản của map song song với nhau trên các máy tính của cluster. Sau giai đoạn này thì chúng ta có một tập hợp rất nhiều cặp (key, value) thuộc kiểu (k2, v2) gọi là các cặp (key, value) trung gian. MapReduce cũng sẽ nhóm các cặp này theo từng key, nhƣ vậy các cặp (key, value) trung gian có cùng k2 sẽ nằm cùng một nhóm trung gian. Phân vùng 1 Phân vùng 2 Phân vùng 3 Dữ liệu đầu vào Map 1 Map 3 Map 2 Reduce 1 Reduce 2 Giai đoạn Map Sắp xếp và xáo trộn Phân vùng 1 Phân vùng 3 Giai đoạn Reduce Dữ liệu đầu ra [...]... Chƣơng 3 Sử dụng mô hình MapReduce để song song hóa một số thuật toán cụ thể CHƢƠNG III SỬ DỤNG MÔ HÌNH MAPREDUCE ĐỂ SONG SONG HÓA MỘT SỐ THUẬT TOÁN CỤ THỂ Trong hai chƣơng trƣớc, em đã giới thiệu về MapReduce, các thức chung để áp dụng nó cho các thuật toán Và em cũng giới thiệu cách áp dụng mô hình này cho bài toán đếm từ đơn giản Trong chƣơng này, em sẽ trình bày cách áp dụng mô hình MapReduce để... bản với mô hình toán MapReduce và Hadoop CHƢƠNG II LẬP TRÌNH CƠ BẢN VỚI MÔ HÌNH TOÁN MAPREDUCE VÀ HADOOP Trong chƣơng này, em sẽ giới thiệu về cách ta tạo ra một ứng dụng MapReduce cơ bản, sử dụng java API của Apache Hadoop Ngoài ra, em cũng trình bày thêm các thƣ viện mà Hadoop cung cấp để thao tác với hệ thống file của mình 2.1 Phƣơng pháp viết một MapReduce job MapReduce job là một đơn vị của công... reduce đƣợc áp dụng vào nhiều nhóm trung gian độc lập nhau, chúng lại một lần nữa có thể đƣợc chạy song song với nhau 1.1.2 Ƣu điểm của mô hình MapReduce MapReduce đƣợc xây dựng từ mô hình lập trình hàm và lập trình song song Nó giúp cải thiện tốc độ tính toán trên tập dữ liệu lớn bằng cách tăng tốc độ đọc ghi và xử lý dữ liệu Mô hình MapReduce có thể áp dụng hiệu quả có nhiều bán toán Mô hình này làm... mapper trƣớc của chúng ta sử dụng LongWritable và Text tƣơng ứng nhƣ là kiểu của key và value LongWritable là một kiểu hợp lý cho key hơn TextInputFormat bởi vì key là một số lệch (offset) Khi sử dụng KeyValueTextInputFormat, cả key và value sẽ là Text, và bạn sẽ phải thay đồi implement của Mapper và phƣơng thức map() để làm việc với kiểu dữ liệu mới của key Dữ liệu đầu vào cho job MapReduce của chúng... Map và Reduce đã hoàn tất thì sẽ cho ra kết quả cuối cùng của quy trình MapReduce 1.2 Apache Hadoop 1.2.1 Giới thiệu tổng quát về Apache Hadoop Sau khi giới thiệu mô hình toàn MapReduce, thì Google cũng nhanh chóng triển khai mô hình toán và áp dụng nó vào các công việc xử lý của mình Thấy đƣợc tiềm năng to lớn của MapReduce, Apache đã phát triển hệ thống mã mở Hadoop cũng với nhân là khung phần mềm MapReduce. .. Vũ Minh Ngọc D07CNPM1 3 Đồ án tốt nghiệp Đại học Chƣơng 1 Mô hình toán MapReduce và Hadoop Hình 2 Quy trình xử lý của MapReduce MapReduce đƣợc xây dựng từ mô hình lập trình hàm và lập trình song song Tăng tốc độ thực thi xử lý dữ liệu là mục đích quan trọng nhất của MAPREDUCE Quy trình này gồm 2 phần: -Map: Đầu vào là nút chủ (master node) và sau đó chia nhỏ nó ra thành các vấn đề bé hơn Gọi là các... các đối tƣợng dữ liệu thƣờng đƣợc sử dụng dụng là khoảng cách Euclide, bởi vì đây là mô hình khoảng cách dễ để lấy đạo hàm và xác định các cực trị tối thiểu Hàm tiêu chuẩn và độ đo khoảng cách có thể đƣợc xác định cụ thể hơn tuỳ vào ứng dụng hoặc các quan điểm của ngƣời dùng SVTH: Vũ Minh Ngọc D07CNPM1 18 Đồ án tốt nghiệp Đại học INPUT: Chƣơng 3 Sử dụng mô hình MapReduce để song song hóa một số thuật... lý Hadoop và là định dạng ƣa thích khi xử lý nhiều công việc MapReduce Lớp InputFormat để đọc sequen file là SequenceFileInputFormat Kiểu đối tƣợng của key và value trong sequence file đƣợc định nghĩa bởi ngƣời sử dụng Kiểu đầu ra và đầu vaofphair giống nhau, và cái implement Mapper của bạn và phƣơng thức map() để sử dụng đƣợc đúng loại đầu vào 2.2.2 OutputFormat Dữ liệu đầu ra của MapReduce vào trong.. .Đồ án tốt nghiệp Đại học Chƣơng 1 Mô hình toán MapReduce và Hadoop Giai đoạn hai MapReduce sẽ áp dụng hàm reduce (mà ngƣời dùng viết) vào từng nhóm trung gian Một cách hình thức, hàm này có thể mô tả nhƣ sau: reduce (k2, list (v2)) -> list (v3) Trong đó k2 là key chung của nhóm trung gian, list(v2) là tập các values trong nhóm, và list(v3) là một danh sách các giá trị trả về của reduce thuộc... thúc thuật toán, lƣu trọng tâm Hình 9 Lưu đồ MapReduce hoá K-means SVTH: Vũ Minh Ngọc D07CNPM1 23 Đồ án tốt nghiệp Đại học Chƣơng 3 Sử dụng mô hình MapReduce để song song hóa một số thuật toán cụ thể  Cụ thể Sau khi lƣu dữ liệu cần phân cụm dƣới dạng các bản thì ta cần phải chuyển dữ liệu sang kiểu key/value làm đầu vào cho thuật toán Cùng xem lại mô hình cơ bản của MapReduce: map (k1, v1) -> list . CHƢƠNG I. MÔ HÌNH MAPREDUCE VÀ HADOOP 1 1.1. Mô hình MapReduce 1 1.1.1. Tổng quan về mô hình toán MapReduce 1 1.1.2. Ƣu điểm của mô hình MapReduce 3 1.1.3. Nguyên tắc hoạt động của mô hình MapReduce. ứng dụng rộng rãi hơn ở Việt Nam. Đồ án tốt nghiệp Đại học Chƣơng 1. Mô hình toán MapReduce và Hadoop SVTH: Vũ Minh Ngọc D07CNPM1 1 CHƢƠNG I. MÔ HÌNH MAPREDUCE VÀ HADOOP 1.1. Mô hình MapReduce. MapReduce 10 Hình 6. Mô hình K-means đơn giản 18 Hình 7. Hình dạng cụm dữ liệu đƣợc khám phá bởi k-means 20 Hình 8. Lƣu đồ thuật toán k-means 22 Hình 9. Lƣu đồ MapReduce hoá K-means 23 Hình

Ngày đăng: 28/08/2015, 15:27

Từ khóa liên quan

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

Tài liệu liên quan