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 -