Xử lý dữ liệu phân tán với mapreduce và xây dựng ứng dụng minh họa

  • Số trang: 87 |
  • Loại file: PDF |
  • Lượt xem: 34 |
  • Lượt tải: 0
nhattuvisu

Đã đăng 26946 tài liệu

Mô tả:

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG KHOA CÔNG NGHỆ THÔNG TIN  LUẬN VĂN TỐT NGHIỆP 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: Lớp : MSSV : GVHD : NGUYỄN VĂN DIỆT 49TH 4913071011 HUỲNH TUẤN ANH Nha Trang, tháng 6 năm 2011 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. 1 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 2 NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... 3 NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... .......................................................................................................................................... 4 MỤC LỤC Nội dung: 1 Giới thiệu ........................................................................................................ 11 1.1 2 3 1.1.1 Định nghĩa ......................................................................................... 11 1.1.2 Các đặc trƣng của tính toán đám mây ............................................... 12 1.1.3 Các mô hình dịch vụ của tính toán đám mây .................................... 13 1.1.4 Các lợi ích của tính toán đám mây .................................................... 17 1.1.5 Ảnh hƣởng của sự phát triển các dịch vụ đám mây đến MapReduce17 1.2 Các ý tƣởng của MapReduce ...................................................................18 1.3 Sự quan trọng của MapReduce ................................................................19 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 Thiết kế thuật toán cho MapReduce ............................................................... 31 3.1 4 Cloud Computing .....................................................................................11 Local Aggregation ....................................................................................32 3.1.1 Combiner và In-Mapper combining .................................................. 33 3.1.2 Sự chính xác của thuật toán trong Local Aggregation ...................... 35 3.2 Secondary Sorting ....................................................................................38 3.3 Thuật toán MapReduce trong xử lý dữ liệu quan hệ ................................39 3.3.1 Phép chiếu: ........................................................................................ 39 3.3.2 Phép chọn: ......................................................................................... 39 3.3.3 Phép gộp (Group by ) ........................................................................ 40 3.3.4 Phép kết nối quan hệ (Relational Join) .............................................. 40 Apache Hadoop ............................................................................................... 42 5 5 6 4.1 Giới thiệu ..................................................................................................42 4.2 MapReduce Job ........................................................................................42 4.2.1 JobTracker ......................................................................................... 42 4.2.2 TaskTracker ....................................................................................... 42 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 4.4.1 Các kiểu dữ liệu ................................................................................. 45 4.4.2 Các định dạng đầu vào (input formats) ............................................. 45 4.4.3 Các định dạng đầu ra (output formats) .............................................. 48 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 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 5.4.1 Cấu trúc dữ liệu chính trong Nutch ................................................... 57 5.4.2 Các thuật toán MapReduce trong Nutch ........................................... 58 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 6.2.1 Phân tích dữ liệu text và lấy thông tin (Information Retrieval) ........ 63 6.2.2 Các cách tiếp cận Text mining .......................................................... 70 6.3 Sơ đồ hoạt động ........................................................................................71 6.3.1 Giai đoạn thu thập dữ liệu ................................................................. 72 6.3.2 Giai đoạn tạo tài liệu và đánh chỉ mục .............................................. 74 6.3.3 Giai đoạn tìm kiếm ............................................................................ 75 6.4 Các plugin đƣợc viết thêm cho ứng dụng tìm kiếm truyện tranh ............76 6.4.1 Plugin parse-htmlformangasearch ..................................................... 76 6 6.4.2 6.5 7 8 Plugin index-mangasearch ................................................................ 76 Trang web tìm kiếm .................................................................................77 6.5.1 AJAX Solr ......................................................................................... 77 6.5.2 Các tính năng chính ........................................................................... 77 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 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 7 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 8 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 9 DANH MỤC TỪ VIẾT TẮT AJAX Asynchronous Javascript And XML Amazon EC2 Amazon‟s Elastic Compute Cloud API Application Programming Interface BSP Bulk Synchronous Parallel CDH Cloudera‟s Distribution including Apache Hadoop CRM Customer Relationship Management ERP Enterprise Resource Planning GFS Google File System HDFS Hadoop Distributed File System HPC High-Perfomance Computing IaaS Infrastructure as a Service IR Information Retrieval IT Information Technology JSON JavaScript Object Notation NAS Network-Attach Storage NIST National Institude of Standards and Technology PaaS Platform as a Service PDA Personal Digital Assistant PRAM Parallel Random Access Machine RDBMS Relational Database Management System RESP Representational State Transfer SaaS Software as a Service SAN Storage Area Network SCM Supply Chain Management SNN Secondary NameNode SPOF Single Point Of Failure 10 Chƣơng 1: GIỚI THIỆU 1 Giới thiệu Chƣơng này sẽ giới thiệu về Cloud Computing, các đặc trƣng và mô hình dịch vụ của nó để có cái nhìn tổng quát hơn về các mô hình tính toán lớn hiện nay. Đồng thời cũng giới thiệu các ý tƣởng chính và tầm quan trọng của MapReduce trong việc xử lý các bài toán dữ liệu lớn. 1.1 Cloud Computing 1.1.1 Định nghĩa Hiện nay, các định nghĩa về Cloud Computing (tính toán đám mây) vẫn chƣa thống nhất. Viện NIST1 đã đƣa ra một định nghĩa dài với rất nhiều những đặc trƣng của Cloud Computing. Một số tổ chức khác cũng xây dựng các định nghĩa riêng của mình nhƣ sau: Theo Wikipedia: “Mô hình tính toán trên mạng Internet, nơi mà các tài nguyên chia sẻ, phần mềm và thông tin đƣợc cung cấp đến máy tính và nhiều thiết bị khác theo nhu cầu, nhƣ một tiện ích công cộng”. Theo Gartner2: “Một hình thức tính toán trong đó các năng lực công nghệ thông tin với sự co giãn lớn đƣợc cung cấp „theo kiểu dịch vụ‟ đến với ngƣời dùng bên ngoài qua các kỹ thuật Internet”. Theo Forrester3: “Một năng lực IT chuẩn (các dịch vụ, phần mềm, hay hạ tầng) triển khai qua mạng Internet theo hình thức trả phí trên ngƣời dùng và trên dịch vụ”. Các định nghĩa trên đều định nghĩa Cloud Computing là một hệ phân bố, cung cấp các dạng tài nguyên ảo dƣới dạng dịch vụ một cách linh động theo nhu cầu của ngƣời dùng trên môi trƣờng internet. Hoặc có thể hiểu Tính toán đám mây thông qua các từ khóa đại diện cho những đặc trƣng chính: cung cấp qua internet - delivered over internet (web 2.0), tài nguyên theo nhu cầu - resource on demand (scalable, elastic, 1 National Institude of Standards and Technology http://www.nist.gov 2 Gartner, Inc. (NYSE: IT) là công ty tƣ vấn và nghiên cứu hàng đầu thế giới trong lĩnh vực CNTT. 3 Forrester Research, Inc. (Nasdaq: FORR) một công ty nghiên cứu độc lập cung cấp các lời khuyên tiên phong cho các lãnh đạo trong lĩnh vực kinh doanh và công nghệ toàn cầu. 11 usage-based costing), ảo hóa - virtualized, mọi thứ đều là dịch vụ - everything as a service, không phụ thuộc vị trí - location independent. Theo NIST, mô hình tính toán đám mây bao gồm 5 đặc trƣng chính, ba mô hình dịch vụ và bốn mô hình triển khai. Hình 1. Mô hình trực quan để định nghĩa Cloud Computing của NIST 1.1.2 Các đặc trưng của tính toán đám mây 1.1.2.1 Tự phục vụ theo nhu cầu (On-demand self-service) Mỗi khi có nhu cầu, ngƣời dùng chỉ cần gửi yêu cầu thông qua trang web cung cấp dịch vụ, hệ thống của nhà cung cấp sẽ đáp ứng yêu cầu của ngƣời dùng. Ngƣời dùng có thể tự phục vụ yêu cầu của mình nhƣ tăng thời gian sử dụng server, tăng dung lƣợng lƣu trữ… mà không cần phải tƣơng tác trực tiếp với nhà cung cấp dịch vụ, mọi nhu cầu về dịch vụ đều đƣợc xử lý trên môi trƣờng web (internet). 1.1.2.2 Truy xuất diện rộng (Broad network access) Cloud Computing cung cấp các dịch vụ thông qua môi trƣờng internet. Do đó, ngƣời dùng có kết nối internet là có thể sử dụng dịch vụ. Hơn nữa, Cloud Computing ở dạng dịch vụ nên không đòi hỏi khả năng xử lý cao ở phía client, vì vậy ngƣời dùng có thể truy xuất bằng các thiết bị di dộng nhƣ điện thoại, PDA, laptop… Với Cloud Computing ngƣời dùng không còn bị phụ thuộc vị trí nữa, họ có thể truy xuất dịch vụ từ bất kỳ nơi nào, vào bất kỳ lúc nào có kết nối internet. 1.1.2.3 Dùng chung tài nguyên (Resource pooling) Tài nguyên của nhà cung cấp dịch vụ đƣợc dùng chung, phục vụ cho nhiều ngƣời dùng dựa trên mô hình “multi-tenant”. Trong mô hình “multi-tenant”, tài nguyên sẽ 12 đƣợc phân phát động tùy theo nhu cầu của ngƣời dùng. Khi nhu cầu của một khách hàng giảm xuống, thì phần tài nguyên dƣ thừa sẽ đƣợc tận dụng để phục vụ cho một khách hàng khác. Ví dụ nhƣ khách hàng A thuê 10 CPU mỗi ngày từ 7 giờ đến 11 giờ, một khách hàng B thuê 10 CPU tƣơng tự mỗi ngày từ 13 giờ đến 17 giờ thì hai khách hàng này có thể dùng chung 10 CPU đó. Cloud Computing dựa trên công nghệ ảo hóa, nên các tài nguyên da phần là tài nguyên ảo. Các tài nguyên ảo này sẽ đƣợc cấp phát động theo sự thay đổi nhu cầu của từng khách hàng khác nhau. Nhờ đó nhà cung cấp dịch vụ có thể phục vụ nhiều khách hàng hơn so với cách cấp phát tài nguyên tĩnh truyền thống. 1.1.2.4 Khả năng co giãn nhanh chóng (Rapid elasticity) Đây là tích chất đặc biệt, nổi bật và quan trọng nhất của Cloud Computing. Đó là khả năng tự động mở rộng hoặc thu nhỏ hệ thống tùy theo nhu cầu của ngƣời dùng. Khi nhu cầu tăng cao, hệ thống sẽ tự mở rộng bằng cách thêm tài nguyên vào. Khi nhu cầu giảm xuống, hệ thống sẽ tự giảm bớt tài nguyên. Ví dụ: khách hàng thuê một Server gồm 10 CPU. Thông thƣờng do có ít truy cập nên chỉ cần 5 CPU là đủ, khi đó hệ thống quản lý của nhà cung cấp dịch vụ sẽ tự ngắt bớt 5 CPU dƣ thừa, khách hàng không phải trả phí cho những CPU dƣ thừa này (những CPU này sẽ đƣợc cấp phát cho các khách hàng khác có nhu cầu). Khi lƣợng truy cập tăng cao, nhu cầu tăng lên thì hệ thống quản lý của nhà cung cấp dịch vụ sẽ tự “gắn” thêm CPU vào, nếu nhu cầu tăng vƣợt quá 10 CPU thì khách hàng phải trả phí cho phần vƣợt mức theo thỏa thuận với nhà cung cấp. Khả năng co giãn giúp cho nhà cung cấp sử dụng tài nguyên hiệu quả, tận dụng triệt để tài nguyên dƣ thừa, phục vụ đƣợc nhiều khách hàng. Đối với ngƣời sử dụng dịch vụ, khả năng co giãn giúp họ giảm chi phí do họ chỉ trả phí cho những tài nguyên thực sự dùng. 1.1.2.5 Điều tiết dịch vụ (Measured service) Hệ thống Cloud Computing tự động kiểm soát và tối ƣu hóa việc sử dụng tài nguyên (dung lƣợng lƣu trữ, đơn vị xử lý, băng thông…). Lƣợng tài nguyên sử dụng có thể đƣợc theo dõi, kiểm soát và báo cáo một cách minh bạch cho cả hai phía nhà cung cấp dịch vụ và ngƣời sử dụng. 1.1.3 Các mô hình dịch vụ của tính toán đám mây Hiện tại có rất nhiều nhà cung cấp dịch vụ Cloud Computing cung cấp nhiều loại dịch vụ khác nhau. Tuy nhiên có ba loại dịch vụ Cloud Computing cơ bản là: dịch vụ cơ sở hạ tầng (Infrastructure as a Service – IaaS), dịch vụ nền tảng (Platform as a Service – PaaS) và dịch vụ phần mềm (Software as a Service – SaaS). Cách phân loại này thƣờng đƣợc gọi là “mô hình SPI”. 13 Hình 2. Các loại dịch vụ Cloud Computing 1.1.3.1 Dịch vụ hạ tầng (Infrastructure-as-a-Service IaaS) Định nghĩa Là các năng lực nhằm đƣa đến cho ngƣời dùng khả năng xử lý, lƣu trữ, mạng và các nguồn tài nguyên tính toán thiết yếu, nơi mà ngƣời dùng có thể triển khai và thực thi một phần mềm bất kỳ, bao gồm các ứng dụng và cả hệ điều hành. Ngƣời dùng không phải quản lý hay kiểm soát các hạ tầng đám mây bên dƣới nhƣng phải kiểm soát các hệ điều hành, sự lƣu trữ, và các ứng dụng đã triển khai và có khả năng là một vài điều khiển có hạn chế trên một số thành phần của hạ tầng mạng. (ví dụ nhƣ các tƣờng lửa trên máy chủ). Đặc trưng Cung cấp tài nguyên nhƣ là dịch vụ: bao gồm cả máy chủ, thiết bị mạng, bộ nhớ, CPU, không gian đĩa cứng, trang thiết bị trung tâm dữ liệu. Khả năng mở rộng linh hoạt Chi phí thay đổi tùy theo thực tế Nhiều ngƣời thuê có thể cùng dùng chung trên một tài nguyên Cấp độ doanh nghiệp: đem lại lợi ích cho công ty bởi một nguồn tài nguyên tích toán tổng hợp Các sản phẩm IaaS tiêu biểu Amazon EC2 http://aws.amazon.com/ec2 Vào thời điểm hiện tại, dịch vụ IaaS chiếm thị phần lớn nhất là Amazon‟s Elastic Compute Cloud (Amazon EC2). Đƣợc triển khai từ tháng Tám năm 2006 và phát triển kể từ đấy với việc thêm vào các dịch vụ khác nhau và sự hỗ trợ cho nhiều hệ điều hành. Nó cung cấp giao diện Web cho phép truy cập các máy ảo. Khái niệm co dãn (Elastic) trong tên của sản phẩm là sự khác biệt, nó ám chỉ khả năng EC2 có thể tăng hay giảm tài nguyên hạ tầng tƣơng ứng với nhu cầu, và chi trả 14 cho tài nguyên đó theo giờ. (Tuy nhiên cần phải có yêu cầu từ trƣớc, không phải thay đổi động). Rackspace http://www.rackspace.com/index.php GoGrid http://www.gogrid.com MediaTemple http://mediatemple.net Gridlayer http://www.layeredtech.com Flexiscale http://www.flexiant.com Joyent Accelerator http://www.joyentcloud.com 1.1.3.2 Dịch vụ nền tảng (Platform-as-a-Service PaaS ) Định nghĩa Là các năng lực nhằm đem đến cho ngƣời dùng khả năng 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 phát triển, kiểm thử, triển khai và vận hành ứng dụng giống nhƣ là môi trƣờng phát triển. Các công cụ khởi tạo với giao diện trên nền web. Kiến trúc đồng nhất. Tích hợp dịch vụ web và cơ sở dữ liệu. Hỗ trợ cộng tác nhóm phát triển công cụ hỗ trợ tiện tích. Các sản phẩm tiêu biểu Các sản phẩm dịch vụ nền tảng có thể chia làm ba nhóm: Nhóm nền tảng hỗ trợ vòng đời phát triển tích hợp (Integrated lifecycle platforms) Các nền tảng này cung cấp cho các nhà phát triển một môi trƣờng đầy đủ cho toàn bộ vòng đời phát triển ứng dụng: máy hỗ trợ luồng làm việc, các công cụ phát triển, môi trƣờng kiểm tra, công cụ triển khai v.v… Tiêu biểu nhƣ: o Google App Engine http://code.google.com/appengine o Microsoft Windows Azure www.microsoft.com/windowsazure Nhóm nền tảng hỗ trợ vòng đời phát triển đặc thù (Anchored lifecycle platforms) 15 Có các đặc tính giống nhóm đầu tiên, tuy nhiên các môi trƣờng này thƣờng có một gói phần mềm thƣơng mại đặc thù ở trung tâm. Tiêu biểu nhƣ: o Salesforce.com‟s Force.com http://www.salesforce.com/ap/platform Nhóm công nghệ hỗ trợ trên phát triển nền tảng (Enabling Technologies as a Platform) Không phải nền tảng đám mây nào cũng cung cấp một môi trƣờng hỗ trợ đầy đủ cho vòng đời phát triển, nhóm này chỉ tập trung vào cung cấp một số khả năng nhất định, một vài khả năng chỉ là các công cụ. Nhóm này gồm các sản phẩm tiêu biểu: o Dịch vụ hỗ trợ kiểm tra trên nền đám mây: HP, IBM, công ty độc lập nhƣ iTKO và SOASTA v.v… o Dịch vụ quản lý: RightScale là công ty quản lý cho Amazon. o Dịch vụ tùy biến: WaveMaker hỗ trợ tùy biến ứng dụng Web. o Dịch vụ phát triển mạng xa hội: Nhƣ dịch vụ blog Wordpress. 1.1.3.3 Dịch vụ phần mềm (Software-as-a-Service SaaS ) Định nghĩa Là các năng lực nhằm đem đến cho ngƣời dùng thông qua các ứng dụng thực thi trên nền tảng đám mây của nhà cung cấp phần mềm. Các ứng dụng này có thể truy cập từ nhiều thiết bị khác nhau thông qua một giao diện nhƣ trình duyệt web (ví dụ nhƣ các dịch vụ email nền web). Ngƣời dùng không phải quản lý hoặc kiểm soát hạ tầng đám mây bên dƣới và cả những ứng dụng đơn lẻ, ngoại trừ một số quyền cấu hình tùy chỉnh ứng dụng hạn chế cho một vài cá nhân cụ thể. Đặt trưng Đƣợc xây dựng trên kiến trúc cho nhiều ngƣời thuê. Nghĩa là nhiều khách hàng có thể cùng chạy một thể hiện/dịch vụ đặt trên một máy chủ từ xa. Thông thƣờng truy cập qua giao diện Web. Mô hình kinh doanh là dạng: hosted-Ngƣời cung cấp, vận hành CRM không phải là công ty có nhu cầu sử dụng ứng dụng mà là công ty khác Phƣơng thức thanh toán theo hàng phí hàng tháng. Thƣờng kèm theo chi phí khởi chạy ứng dụng hoặc chi phí tùy chỉnh cấu hình, tuy nhiên chi phí bảo trì thƣờng đã tính trong phí hàng tháng Các sản phẩm tiêu biểu Có rất nhiều sản phẩm SaaS, tuy nhiên chúng có thể đƣợc chia làm ba nhóm: Gói phần mềm (Packaged Software): Chiếm thị phần lớn nhất, gồm các sản phẩm ERP, CRM , SCM v.v… Các sản phẩm tiêu biểu gồm: 16 o Netsuitt hay Salesforce.com, Intuit, RightNow, Concur, SugarCRM, Microsoft với Dynamics package, SAP với dịch vụ By Design, Oracle với On Demand dựa trên Siebel. Phần mềm cộng tác (Collaborative software): Hỗ trợ cho các hình thức làm việc và cộng tác qua mạng giữa các cá nhân hoặc thành viên tổ chức. Các sản phẩm tiêu biểu: o MicrosoftLive o LotusLive o GoogleApps Nhóm phần mềm quản lý và các công cụ (Collaborative software): Tiêu biểu nhƣ: o Dịch vụ an ninh: Nhƣ các sản phẩm phần mềm diệt virus dạng dịch vụ của Symantec, McAfee, CA, và Kapersky Labs. o Cùng nhiều sản phẩm tiện ích khác: Chia sẻ ảnh, nghe nhạc v.v… 1.1.4 Các lợi ích của tính toán đám mây Giảm chi phí đầu tƣ và tỷ lệ phí tổn (Reduced Investment and Proportional Costs) Gia tăng tính mở rộng (Increased Scalability) Gia tăng khả năng đáp ứng và khả năng tin cậy (Increased Availability and Reliability) 1.1.5 Ảnh hưởng của sự phát triển các dịch vụ đám mây đến MapReduce “Everyting as a Service” đƣợc hƣớng theo nhu cầu của các hiệu quả kinh doanh tốt hơn nhƣng khả năng mở rộng và sự mềm dẻo cũng đóng vai trò quan trọng. Cloud Computing giúp cho các tổ chức có thể mở rộng hoặc thu hẹp một cách dễ dàng mà không cần có kế hoạch từ trƣớc. Cloud services, cũng nhƣ MapReduce đại diện cho sự tìm kiếm một cấp độ trừu tƣợng thích hợp và lợi ích của việc chia sẻ sức lao động. IaaS là một mức trừu tƣợng về phần cứng vật lý – một tổ chức có thể thiếu vốn, chuyên gia và sự quan tâm đến việc hoạt động các Datacenter, vì thế họ bỏ tiền thuê các Cloud Provider làm việc đó. Điều này cũng 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: Scale “out” not “up” (mở rộng chứ không nâng cấp): Để tăng sức mạnh xử lý thay vì nâng cấp bộ vi xử lý cũng nhƣ khả năng lƣu trữ của máy tính (mua các server có khả năng xử lý cao – high-end server) giải pháp đƣa ra là tăng số lƣợng các server thông dụng (low-end server). Giải pháp này kinh tế hơn nhiều so vì nó chỉ bổ sung một số máy tính và tận dụng đƣợc các server sẵn có trong khi giải pháp nâng cấp có thể dẫn đến việc mua sắm mới lại toàn bộ các server. Hơn nữa giá thành của một server chuyên dụng đắt hơn nhiều so với một cụm máy tính thông thƣờng với khả năng xử lý tƣơng đƣơng. Assume failures are common (chấp nhận việc xảy ra lỗi là thường xuyên): Với sự gia tăng về số lƣợng của các server trong một cluster, lỗi xảy ra là điều bình thƣờng. Do đó các dịch vụ phân tán trên nhiều server phải tính toán đến các lỗi về phần cứng cũng nhƣ phần mềm thƣờng xuyên xảy ra. Mô hình lập trình MapReduce có khả năng xử lý các lỗi thông qua một số cơ chế nhƣ tự động khởi động lại các task trên cluster node khác nhau. Move processing to the data (đưa xử lý đến dữ liệu): Trong các ứng dụng tính toán hiệu năng cao truyền thống (High – Prefomance Computing - HPC). Thông thƣờng, một siêu máy tính có các nút xử lý (processing node) và các nút lƣu trữ (storage node) đƣợc kết nối với nhau qua một kết nối tốc độ cao. Nhiều công việc nặng nề về 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 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ý. 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 đĩa. Thời gian cho việc truy cập ngẫu nhiên thƣờng hạn chế bởi sự di chuyển của đầu đọc cũng nhƣ tốc độ đĩ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ô hình lập trình trừu tƣợng với các interface đơn giản đƣợc định nghĩa sẵn. 1.3 Sự quan trọng của MapReduce Về tính thiết thực, MapReduce cung cấp một công cụ rất hiệu quả để giải quyết các bài toán dữ liệu lớn. Ngoài ra, MapReduce còn quan trọng trong cách nó đã thay đổi việc sắp xếp tính toán trên quy mô lớn. Nói một cách công bằng thì MapReduce không phải là mô hình tính toán song song đầu tiên đƣợc đƣa ra. Mô hình phổ biến nhất trong lý thuyết khoa học máy tính có từ mấy thập kỷ trƣớc là PRAM4 (Parallel Random Access Machine). Trong mô hình này, một lƣợng lớn các vi xử lý chia sẻ một bộ nhớ lớn không giới hạn, hoạt động đồng thời trên một lƣợng dữ liệu chia sẻ để tạo ra kết quả. Các mô hình khác nhƣ LogP5 và BSP6 (Bulk Synchronous Parallel), tuy nhiên không có mô hình nào có đƣợc sự thành công nhƣ MapReduce. MapReduce là mức trừu tƣợng thành công nhất trên các tài nguyên tính toán mở rộng cho đến nay. Tuy nhiên, mức trừu tƣợng giải quyết sự phức tạp bằng cách che dấu sự chi tiết và đƣa ra các hành vi đƣợc thiết kế tốt cho ngƣời sử dụng ứng với mức trừu tƣợng đó. Chính vì thế, mức trừu tƣợng không thể hoàn hảo, nó làm cho một số công việc dễ hơn, nhƣng cũng làm một số công việc khác khó hơn hoặc có khi là không thể thực hiện đƣợc. Vấn đề này làm cho việc ứng dụng MapReduce trong một số bài toán cũng có mặt hạn chế. Điều đó có nghĩa MapReduce không phải là mô hình cuối cùng trong lớp mô hình lập trình mới cho phép xử lý tính toán trên quy mô lớn một cách hiệu quả. 4 http://en.wikipedia.org/wiki/Parallel_Random_Access_Machine 5 http://en.wikipedia.org/wiki/LogP_machine 6 http://en.wikipedia.org/wiki/Bulk_Synchronous_Parallel 19
- Xem thêm -