Tải bản đầy đủ (.docx) (25 trang)

ĐIỆN TOÁN ĐÁM MÂY CÁC ỨNG DỤNG VÀ CÁC HÌNH THỨC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (304.75 KB, 25 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆ THÔNG TIN
CHUYÊN ĐỀ
TÍNH TOÁN LƯỚI
BÀI THU HOẠCH
ĐIỆN TOÁN ĐÁM MÂY:
CÁC ỨNG DỤNG VÀ CÁC HÌNH THỨC
HƯỚNG DẪN
PGS. TS. NGUYỄN PHI KHỨ
HỌC VIÊN THỰC HIỆN
LÊ CUNG TƯỞNG (CH1101152)
Tp. Hồ Chí Minh, 2013
LỜI MỞ ĐẦU
Công nghệ Cloud Computing ra đời đánh dấu một bước phát triển mới trong lĩnh vực
tính toán hiệu năng cao. Nó cho phép tận dụng năng lực xử lý, lưu trữ cùng các tài
nguyên nhàn rỗi khác để cung cấp một môi trường tính toán có năng lực xử lý lớn, khả
năng lưu trữ dồi dào để giải quyết các bài toán phức tạp - khó có thể giải quyết được với
các công nghệ hiện hành hoặc giải quyết được nhưng với chi phí rất cao. Cloud
Computing giúp tận dụng tối đa tài nguyên, tăng cường hợp tác, giảm chi phí đầu tư
trong khi vẫn cung cấp năng lực tính toán như mong muốn. Trong những năm vừa qua,
nhiều tổ chức, tập đoàn công nghệ thông tin lớn đã chọn công nghệ Cloud Computing
làm chiến lược phát triển của mình, đã đầu tư nghiên cứu nhằm sớm đưa công nghệ
Cloud Computing vào thực tế. Công nghệ này đang ngày càng thu hút được sự quan tâm
chú ý từ khắp nơi trên thế giới. Có thể nói công nghệ Grid Computing là một xu hướng
phát triển mới trong ngành công nghệ thông tin.
Do hạn chế về thời gian, bài thu hoạch chỉ dừng lại ở việc tổng hợp Chương 4:
“Cloud Computing: Applications and Paradigms” trong cuốn Cloud Computing: Theory
and Practice [1] để nêu lên các ứng dụng và các mô hình của Điện toán Đám mây.
2
Mục lục
3


Chương 4. Cloud Computing: Applications and Paradigms
4.1. Những thách thức cho điện toán đám mây
Sự phát triển của các ứng dụng hiệu quả trên nền điện toán đám mây kế thừa những
thách thức do sự mất cân bằng tự nhiên giữa các máy tính, nhập/xuất, và bang thông giao
tiếp giữa các hệ thống; những thách thức này được khuếch đại rất nhiều do quy mô của
hệ thống, tính chất rải rác của nó, và bởi thực tế là hầu hết mọi ứng dụng đều nặng về dữ
liệu. Mặc dù các cơ sở hạ tầng của điện toán đám mây cố gắng để tự động phân phối và
cân bằng tải, nhưng nhà phát triển ứng dụng vẫn có trách nhiệm đặt dữ liệu vào nơi gần
vị trí xử lý và xác định những lưu trữ tối ưu cho dữ liệu.
Một điều thuận lợi chính của điện toán đám mây, đó là việc chia sẻ cơ sở hạ tầng,
cũng có thể có một tác động tiêu cực. Hiệu suất tách biệt gần như không thể đạt được
trong hệ thống thực, đặc biệt là khi hệ thống được nạp rất nhiều. Hiệu suất của các máy
ảo biến động dựa trên tải trọng, các dịch vụ cơ sở, và môi trường bao gồm những người
dùng khác. Sự bảo mật tách biệt cũng là thách thức trên những hệ thống có nhiều người
dùng chung.
Độ tin cậy cũng là một mối quan tâm lớn; sự thất bại của một node thì được dự đoán
bất kỳ khi nào một số lượng lớn các node hợp tác cho việc tính toán. Lựa chọn một khía
cạnh tối ưu (về mặt hiệu suất tách biệt, độ tin cậy, và bảo mật) từ những khía cạnh đó
được cung cấp bởi cơ sở hạ tầng của điện toán đám mây là một yếu tố quan trọng cần
được xem xét. Tất nhiên, việc cân nhắc chi phí cũng đóng một vai trò trong việc lựa chọn
loại để tối ưu.
Nhiều ứng dụng bao gồm nhiều giai đoạn; lần lượt, mỗi giai đoạn có thể bao gồm
nhiều cá thể chạy song song trên hệ thống đám mây và giao tiếp lẫu nhau. Do đó, sự hiệu
quả, thống nhất, và khả năng mở rộng giao tiếp là những mối quan tâm lớn cho một nhà
phát triển ứng dụng. Trong thực tế, do các mạng chia sẻ và các cấu trúc liên kết chưa rõ,
4
các cơ sở hạ tầng của điện toán đám mây có đỗ trễ và sự biến động băng thông sẽ ảnh
hưởng đến hiệu suất của ứng dụng.
Lưu trữ dữ liệu đóng một vai trò quan trọng trong hiệu suất của bất kỳ ứng dụng thiên
về dữ liệu nào; việc tổ chức lưu trữ, vị trí lưu trữ, cũng như, băng thông lưu trữ phải được

phân tích cẩn thận để để tối ưu hóa hiệu suất của ứng dụng. Điện toán đám mây hỗ trợ
nhiều tùy chọn lưu trữ để thiết lập một hệ thống tập tin tương tự như hệ thống tập tin
Hadoop; trong số đó là off-instance cloud storage (e.g. S3), mountable off-instance block
storage (e.g., EBS), như là, lưu trữ liên tục cho các vòng đời của các trường hợp.
Nhiều ứng dụng thiên về dữ liệu sử dụng siêu dữ liệu của các bảng ghi dữ liệu riêng
lẻ; ví dụ, siêu dữ liệu cho một tệp tin âm thanh MPEG có thể bao gồm tên của bài hát, ca
sĩ, thông tin thâu âm và nhiều thứ khác. Siêu dữ liệu có thể lưu trữ để dễ dàng quản lý,
lưu trữ nên mở rộng được và đáng tin cậy.
Một yếu tố quan trong cho việc phát triển ứng dụng là việc ghi nhận trạng thái. Sự cân
nhắc về hiệu suất giới hạn số lượng dữ liệu của việc ghi nhận trạng thái, trong khi khả
năng xác định nguồn gốc của các kết quả không mong đợi và các lỗi thì được giúp đỡ bởi
việc ghi nhận trạng thái thường xuyên. Việc ghi nhận trạng thái thường được thực hiện
bằng cách sử dụng lưu trữ trường hợp được bảo tồn chỉ trong một vòng đời trường hợp
do đó; các biện pháp để bảo tồn các nhật ký cho một cuộc phân tích phải được thực hiện.
Một thách thức khác đang chờ được giải quyết liên quan đến bản quyền phần mềm.
4.2. Các ứng dụng đám mây hiện có và những cơ hội cho những ứng dụng mới
Những ứng dụng điện toán đám mây có thể chia thành nhiều loại: (i) processing
pipelines; (ii) các hệ thống batch processing; và (iii) ứng dụng web [2].
Processing pipelines là những ứng dụng chuyên dữ liệu và thỉnh thoảng chuyên tính
toán và đại diện cho một bộ phận khá lớn ứng dụng đang chạy trên điện toán đám mây
hiện nay. Một số loại của ứng dụng xử lý dữ liệu:
5
• Lập chỉ mục; những ứng này hỗ trợ lập chỉ mục của bộ dữ liệu lớn được tạo từ các
công cụ thu thập dữ liệu web.
• Khai phá dữ liệu; những ứng dụng này hỗ trợ việc tìm kiếm trong một không gian
rất lớn các dòng dữ liệu để xác định những tập thú vị.
• Xử lý ảnh; một số công tu cho phép người dùng lưu trữ những hình ảnh của họ
trên đám mây như flicker (flickr.com) và Google ( />Những ứng dụng xử lý ảnh này hỗ trợ việc chuyển đổi hình ảnh như phóng to một
hình hoặc tạo các hình thu nhỏ; chúng cũng có thể được sử dụng để nén hoặc mã
hóa hình ảnh.

• Chuyển mã Video; những ứng dụng này chuyển mã từ một định dạnh video này
sang một định dạnh khác ví dụ như chuyển từ AVI sang MPEG.
• Xử lý tài liệu; những ứng dụng này chuyển đổi một tập hợp lớn các tài liệu từ một
định dạng này sang định dạng khác ví dụ từ Word sang PDF hoặc nén các tài liệu;
chúng có thể sử dụng OCR (Optical Character Recognition) để tạo ra những hình
ảnh số cho các tài liệu.
Các hệ thống xử lý hàng loạt cũng bao gồm một dải rộng của các ứng dụng thiên về
dữ liệu trong điện toán đám mây doanh nghiệp. Các ứng dụng như vậy thường có thời
hạn và thất bại trong việc đáp ứng các thời hạn có thể xảy ra những hậu quả nghiêm trọng
về kinh tế; an ninh cũng là một khía cạnh quan trọng của nhiều ứng dụng của xử lý hàng
loạt. Một danh sách không đầy đủ của các ứng dụng xử lý hàng loạt là:
• Thế hệ của các báo cáo hoạt động hàng ngày, hàng tuần, hàng tháng, và hàng năm
của các tổ chức trong các hoạt động bán lẻ, sản xuất, và các thành phần kinh tế
khác.
• Xử lý, tổng hợp, và tóm lược của các giao dịch hàng ngày cho các cơ quan kinh tế,
các công ty bảo hiểm, và các tổ chức chăm sóc sức khỏe.
• Quản lý hàng tồn kho cho các tập đoàn lớn.
• Thanh toán và xử lý hồ sơ trả lương.
• Quản lý phát triển phần mềm ví dụ như những cập nhật hàng đêm của các kho
phần mềm.
• Tự động kiểm tra và xác minh phần mềm và phần cứng hệ thống.
Cuối cùng, nhưng lại quan trọng hơn, là các ứng dụng điện toán đám mây trong lĩnh
vực truy cập web. Một số chuyên mục của trang web dự đoán hoặc tạm thời hiển thị. Ví
dụ một trang web cho một hội nghị hay một sự kiện khác. Ngoài ra còn có các trang web
hoạt động trong một mùa cụ thể (ví dụ như kỳ nghỉ hè) hoặc hỗ trợ một loại hoạt động cụ
thể nào đó như báo cáo thuế thu nhập xảy ra vào 15 tháng 4 hàng năm. Các trang web
6
giới hạn thời gian khác được sử dụng cho các hoạt động quảng cáo hoặc những trang web
chỉ hoạt động ban ngày.
Có rất nhiều ý nghĩa về mặt kinh tế khi lưu trữ dữ liệu trên đám mây gần các ứng

dụng; chi phí cho mỗi GB thì thấp và việc xử lý có hiệu quả hơn nhiều khi dữ liệu được
lưu trữ gần các máy chủ tính toán. Điều này dẫn đến việc chúng ta tin rằng một số lớp
mới của các ứng dụng tính toán trên đám mây có thể nổi lên trong những năm tới. Ví dụ
các chương trình xử lý hàng loạt về hệ hỗ trợ ra quyết định và những hướng khác của
những việc phân tích kinh doanh. Một lớp khác của những ứng dụng đám mây mới có thể
xử lý song song với các xử lý hàng loạt dựa trên ngôn ngữ lập trình trừu tượng như
MapReduce. Các ứng dụng tương tác với di động xử lý khối lượng lớn dữ liệu từ các loại
cảm biến khác nhau; các dịch vụ kết hợp các nguồn dữ liệu lại với nhau như mashups thì
là các ứng viên rõ ràng cho điện toán đám mây.
Khoa học và kỹ thuật có thể sẽ thu được rất nhiều lợi ích từ điện toán đám mây như
nhiều ứng dụng trong khu vực này thì thiên về tính toán và thiên về dữ liệu. Tương tự,
một dám mây dành riêng cho giáo dục sẽ cực kỳ hữu ích. Phần mềm toán học như
MATLAB và Mathematica có thể chạy trên đám mây.
4.3. Các kiểu kiến trúc cho ứng dụng đám mây
Điện toán đám mây thì dựa trên mô hình client-server. Phần lớn các ứng dụng đám
mây tận dụng lợi thế giữa sự trao đổi yêu cầu – phản hồi giữa các máy khác và các máy
chủ phi trạng thái. Một máy chủ phi trạng thái không yêu cầu máy khách lần đầu tiên
thiết lập một kết nối đến máy chủ, thay vào đó nó xem một yêu cầu của máy khách như
một giao dịch độc lập và trả lời lại nó.
Những lợi ích của những máy chủ phi trạng thái là rõ ràng. Phục hồi từ một máy chủ
bị lỗi đòi hỏi một chi phí đáng kể cho máy chủ mà vẫn duy trì trạng thái của tất cả các kết
nối của nó, trong khi trong trường hợp của một máy chủ phi trạng thái một máy khách là
không bị ảnh hưởng trong khi một máy chủ xảy ra sự cố và sau đó trở lại làm việc giữa
hai yêu cầu liên tiếp. Một máy chủ phi trạng thái thì đơn giản hơn, mạnh mẽ hơn, và có
7
khả năng mở rộng; một máy khách không phải quan tâm đến tình trạng của máy chủ; nếu
máy khách nhận được phản hồi một yêu cầu, điều này có nghĩa là máy chủ đang hoạt
động, nếu không nó nên gởi lại yêu cầu sau đó. Một dịch vụ dựa trên kết nối phải dự trữ
không gian để duy trì trạng thái của mỗi kết nối với máy khách; do đó, một hệ thống như
vậy thì không có khả năng mở rộng, một số lượng máy khách của máy chủ có thể tương

tác với máy chủ bất kỳ lúc nào; do đó nó sẽ giới hạn không gian lưu trữ hiện có của máy
chủ.
Ví dụ, một máy chủ thì có trạng thái; nó trả lời một yêu cầu theo giao thức HTTP mà
không duy trì lịch sử kết nối của máy khác. Máy khách, một trình duyệt, thì cũng có trạng
thái từ lúc nó gởi yêu cầu và chờ phản hồi từ phía máy chủ. Giao thức HTTP sử dụng bởi
một trình duyệt, để trao đổi với một máy chủ Web là một ứng dụng giao thức request-
response. HTTP sử dụng the Transport Control Protocol (TCP), một giao thức vận
chuyển kết nối đáng tin cậy; việc sử dụng các giao thức đảm bảo tin cậy cho việc vận
chuyển một đối tượng lớn, tuy nhiên nó là nguyên nhân bị tấn công từ chối dịch vụ khi
khách hàng xấu cố gắng giả một kết nối TCP và buộc các máy chủ phải cung cấp tài
nguyên kết nối.
Một khía cạnh quan trọng của việc phát triển của các ứng dụng có kết nối mạng là làm
thế nào để các xử lý/luốn đang chạy trên hệ thống với những kiến trúc khác nhau và có
thể biên dịch từ các ngôn ngữ lập trình khác nhau có thể trao đổi thông tin có cấu trúc với
một ứng dụng khác. Đầu tiên, các biểu diễn của hai cấu trúc tại hai website cí thể khác
nhau, một hệ thống có thể sử dụng Big-Endian và một hệ thống khác sử dụng biểu diễn
Little-Endian, tính chất của các biểu diễn có thể khác nhau; thứ hai, một kênh giao tiếp
truyền một chuỗi các bit/byte do đó, cấu trúc dữ liệu phải được công bố tại website gởi
dữ liệu và xây dựng lại tại website tiếp nhận.
Phải cân nhắc một số khác để quyết định kiểu kiến trúc của một ứng dụng. Cụm từ
neutrality đề cập đến khả năng giao thức truyền nhận dữ liệu khác nhau như TCP hoặc
UDP, và, nhìn chung để chạy ở đầu của ngăn xếp các giao thức khác nhau. Ví dụ, chúng
tôi sẽ thấy rằng SOAP có thể sử dụng TCP nhưng cũng có thể là TCP, SMTP, hoặc JMS
8
như các phương tiện truyền tải. “Extensibility” đề cập tới khả năng các chức năng bổ
sung chẳng hạn như bảo mật. “Independence” đề cập tới khả năng tương thích với các
kiểu lập trình khác nhau.
Rất nhiều ứng dụng máy khác và máy chủ đang chạy trên đám mây trao đổi với nhau
bằng RPCs, nhưng những kiểu trao đổi khác vẫn có thể sử dụng. Những ứng dụng dựa
trên RPC sử dụng các mẫu để chuyển đổi các tham số liên quan đến một lời gọi RPC;

một mẫu biểu diễn hai chức năng (i) sắp xếp thứ tự các cấu trúc dữ liệu và (ii) tuần tự
hóa. Một khái niệm chung hơn là Object Request Broker (ORB), các thành phần trung
gian điều khiển thông tin liên lạc của các ứng dụng mạng. ORB tại website gởi chuyển
những cấu trúc dữ liệu sử dụng nội bộ bằng quá trình gởi một chuỗi byte và truyền chuỗi
byte này qua mạng; ORB tại website nhận ánh xạ chuỗi byte này thành một cấu trúc dữ
liệu sử dụng nội bộ bằng quá trình nhận.
Common Object Request Broker Architecture (CORBA) được phát triển trong những
năm đầu 1990 để cho phép các ứng dụng có sử dụng mạng phát triển trong những ngôn
ngữ lập trình khác nhau và chạy trên những hệ thống có kiến trúc và các phần mềm hệ
thống khác nhau có thể làm việc với một ứng dụng khác. Tại trung tâm của hệ thống là
Interface Definition Language (IDL) được sử dụng để chỉ rõ những phần chung của một
đối tượng; biểu diễn IDL thì sau đó được ánh xạ với một tập hợp ngôn ngữ lập trình bao
gồm: C, C++, Java, Smalltalk, Ruby, Lisp, and Python. Những ứng dụng có kết nối mạng
chuyển qua CORBA bằng cách xem xét và chuyển dữ liệu bằng giá trị.
Simple Object Access Protocol (SOAP) là một giao thức ứng dụng được phát triển
vào năm 1998 cho các ứng dụng web; những định dạng tin nhắn của nó thì dựa trên
Extensible Markup Language (XML). SOAP sử dụng giao thức vận chuyển TCP và mới
nhất là UDP; nó cũng có thể xếp chồng lên nhau trên các giao thức của các tầng ứng
dụng khác như HTTP, SMTP, hoặc JMS. Các chế độ xử lý của SOAP thì dựa trên một
một mạng lưới bao gồm ứng dụng gởi, ứng dụng nhận, ứng dụng trung gian, ứng dụng
khởi tạo tin nhắn, ứng dụng nhận cuối cùng, và đường dẫn của tin nhắn. SOAP là một
tầng cơ bản của dịch vụ web.
9
Web Services Description Language (WSDL) (xem thì
được giới thiệu vào năm 2001 như một ngữ pháp dựa trên XML để mô tả sự trao đổi giữa
điểm cuối của một ứng dụng sử dụng mạng. Định nghĩa trừu tượng của các yếu tố liên
quan bao gồm: dịch vụ, tập hợp các điểm cuối của sự trao đổi; loại, chứa các định nghĩa
kiểu dữ liệu; toán tử, mô tả các hành động được hỗ trợ bởi một dịch vụ; loại port, các
toán tử hỗ trợ bởi các điểm cuối; các ràng buộc, giao thức và định dạng dữ liệu được hỗ
trợ bởi một loại port cụ thể; và port, một điểm cuối như một sự kết hợp giữa ràng buộc và

một địa chỉ mạng. Những sự trừu tượng hóa thì được ánh xạ sang các định dạng cụ thể
khác và các giao thức mạng để định nghĩa các ứng dụng cuối và dịch vụ.
Representational State Transfer (REST) là một loại cấu trúc phần mềm cho các hệ
thống phân tán siêu truyền thông. REST hỗ trợ các máy khác trao đổi với những máy chủ
không trạng thái, nó độc lập nền tảng, độc lập ngôn ngữ, hỗ trợ lưu trữ dữ liệu tại bộ nhớ
đệm và có thể được dụng trong bộ dạng của các tường lửa.
REST hầu như luôn sử dụng HTTP để hỗ trợ cho toàn bộ bốn toán tử CRUD
(Create/Read/Update/Delete); nó sử dụng GET, PUT, và DELETE để đọc, ghi, xóa dữ
liệu. REST dễ dàng hơn để sử dụng thay thế cho RPC, CORBA, hoặc Web Services như
SOAP hoặc WSDL. Ví dụ, để lấy địa chỉ của một cá thể từ cơ sở dữ liệu một hệ thống
REST gởi một URL xác định địa chỉ của cở sở dữ liệu, tên của cá thể, và thuộc tính cụ
thể trong hồ sơ, các ứng dụng máy khách muốn lấy, trong trường hợp này là địa chỉ.
Phiên bản SOAP tương ứng của một yêu cầu như vậy bao gồm mười dòng hoặc nhiều
hơn của XML. Máy chủ REST trả lời với địa chỉ của cá thể đó. Điều này chứng tỏ khẳng
định rằng REST là một giao thức nhanh. Theo như khả năng sử dụng liên quan, REST dễ
dàng để xây dựng từ đầu và debug, nhưng SOAP thì được hỗ trợ bởi các công cụ sử dụng
tự phát sinh ra tài liệu, ví dụ như WSDL để tạo ra mã nguồn để kết nối.
4.4. Workflow – sự phối hợp của nhiều hoạt động
Rất nhiều ứng dụng điện toán đám mây đòi hỏi hoàn thành các nhiệm vụ phụ thuộc
lẫn nhau; sự mô tả của một hoạt động phức tạp liên quan đến như một tập hợp các nhiệm
10
vụ được biết đến như là một workflow. Trong phần này, tác giả thảo luận về các mô hình
workflow, vòng đời của một workflow, mô tả các đặc tính mong muốn của một
workflow, các mẫu workflow, khả năng tiếp cận đến trang thái mục tiêu của một
workflow, các workflow động, và kết thúc với việc chạy song song giữa các hệ thống
giao dịch truyền thống và các workflow điện toán đám mây [3].
Các mô hình workflow được trừu tượng hóa cho thấy hầu hết các thuộc quan trọng
của các thực thể tham gia vào một hệ thống quản lý workflow. “Task” là khái niệm trung
tâm trong một mô hình workflow; một task là một đơn vị công việc được thực hiện trên
đám mây và nó được đặc trưng bởi một số thuộc tính, như

• Tên – một chuỗi duy nhất định danh task.
• Mô tả - mô tả task.
• Các hành động – một hành động là một điều chỉnh của một môi trường gây ra bởi
việc thực hiện của task.
• Các điều kiện tiên quyết – các biểu thức boolean phải là true trước khi thực hiện
các hành động của task có thể xảy ra.
• Các đều kiện sau – các biểu thức boolean phải là true sau khi các hành động của
task thực hiện.
• Các thuộc tính – cung cấp các chỉ dẫn của loại và số lượng của các nguồn tài
nguyên cần thiết cho việc thực thi task, các tác nhân chịu trách nhiệm về các task,
các yêu cầu bảo mật, cho dù task có phục hồi hay không, và những tính chất khác
của task.
• Các ngoại lệ - cung cấp thông tin về làm thế nào để xử lý các sự kiện bất thường.
Các trường hợp ngoại lệ được hỗ trợ bởi một task bao gồm các cặp <event,
action>. Các trường hợp ngoại lệ bao gồm task trong danh sách ngoại lệ được gọi
là các trường hợp ngoại lệ dự kiến, trái ngược với trường hợp ngoại lệ bất ngờ.
Các sự kiện không có trong danh sách ngoại lệ được kích hoạt quy hoạch lại. Quy
hoạch lại có nghĩa là chuyển dịch cơ cấu của một quá trình, xác định lại mối quan
hệ giữa các task khác nhau.
Một nhiệm vụ tổng hợp là một cấu trúc mô tả một tập hợp của các task và thứ tự thực
hiện của việc thực thi. Một nhiệm vụ sơ khai là một nhiệm vụ không thể phân tách thành
những task đơn giản hơn. Một task tổng hợp kế thừa một số đặc tính từ các workflow; nó
bao gồm các task, có một ký hiệu bắt đầu, và có thể là một vài biểu tượng kết thúc. Đồng
11
thời, một nhiệm vụ tổng hợp kế thừa từ một vài thuộc tính của các task; nó có tên, điều
kiện tiên quyết, và các điều kiện thực thi.
Một task định tuyến là một task có mục đích đặt biện kết nối hai nhiệm vụ trong một
mô tả workflow. Task vừa hoàn thành được gọi là nhiệm vụ tiền nhiệm, một trong số
những task tiếp theo được bắt đầu thực hiện thì được gọp là task kế tiếp. Một task định
tuyến có thể kích hoạt thực hiện tuần tự, đồng thời, hoặc lặp đi lặp lại. Một số loại của

các task định tuyến hiện có:
• Một task định tuyến ngã ba gây ra thực hiện một số task kế tiếp. Một số ngữ nghĩa
cho việc xây dựng này có thể xảy ra:
o Tất cả các nhiệm vụ kế được kích hoạt;
o Mỗi task kế tiếp được liên kết với một điều kiện; các điều kiện cho tất cả
các task được đánh giá và chỉ có một task với điều kiện thỏa được kích
hoạt;
o Mỗi task kế tiếp được liên kết với một điều kiện; các điều kiện cho tất cả
các task được đánh giá nhưng, các điều kiện phải loại từ lẫn nhau và chỉ có
một điều kiện có thể đúng, do đó, chỉ có task được kích hoạt;
o Không xác định, k vượt quá n > k người tiếp theo được chọn một cách ngẫu
nhiên để được kích hoạt.
• Một task định tuyến tham gia chờ đợi cho để hoàn thành các task tuyền nhiệm của
nó. Có một số ngữ nghĩa cho nhiệm vụ định tuyến tham gia:
o Sự kế thừa được kích hoạt sau tất cả những task tiền nhiệm kết thúc;
o Sự kế thừa thì được kích hoạt sau k trong khoản n > k tiền nhiệm cuối; và
o lặp đi lặp lại – các nhiệm vụ giữa ngã ba và việc tham gia được thực hiện
nhiều lần lặp đi lặp lại.
Một mô quá quá trình, còn được gọi là một sơ đồ workflow, là một cấu trúc mô tả các
task hoặc các hoạt động để thực hiện và trình tự thực hiện; một mô tả quá trình chứa một
biểu tượng bắt đầu và một biểu tượng kết thúc. Một mô tả quá trình có thể được cung cấp
trong một ngôn ngữ định nghĩa workflow (WFDL), hỗ trợ xây dựng cho việc lựa chọn,
thực hiện đồng thời, ngã ba cổ điển, tham gia việc xây dựng, và thực hiện lặp đi lặp lại.
Rõ ràng, một môt tả workflow giống như một sơ đồ, một khái niệm đã quen thuộc với
dân lập trình.
12
Các giai đoạn trong một vòng đời của một workflow là sự khởi tạo, định nghĩa, xác
minh, và ban hành. Có một sự tương đồng nổi bật giữa một vòng đời của một workflow
và của một chương trình máy tính truyền thống, cụ thể là, sự khởi tạo, biên dịch, và sự
thực thi (xem Hình 1). Các đặc điểm về kĩ thuật của workflow bằng phương tiện của

ngôn ngữ mô tả workflow tương tự như viết một chương trình. Lên kế hoạch thì tương
đương với thế hệ chương trình tự động. Xác nhận workflow tương đương với xác minh
cú pháp của một chương trình, và sự ban hành workflow phản ánh việc thực của một
chương trình được biên dịch.
Figure 1. A parallel between workflows and programs. (a) The life cycle of a workflow. (b) The life cycle of a
computer program. The workflow definition is analogous to writing a program. Planning is analogous to automatic
program generation. Verification corresponds to syntactic verification of a program. Workflow enactment mirrors
the execution of a program. A static workflow corresponds to a static program and a dynamic workflow to a
dynamic program.
Một trường hợp là một thể hiện của một mô tả quá trình. Ký hiệu bắt đầu và kết thúc
trong mô tả workflow cho phép tạo ra và chấm dứt một trường hợp. Một mô hình ban
hành mô tả các bước thực hiện để xử lý một trường hợp. Khi tất cả các task yêu cầu bởi
13
một workflow được thực thi bởi một máy tính, việc ban hành có thể được hiện thực bởi
một chương trình gọi là một động cơ ban hành.
Trạng thái của một trường hợp tại thời điểm t được xác định là nhiệm vụ đã hoàn
thành tại thời điểm đó. Các sự kiện gây ra quá trình chuyển đổi giữa các trạng thái. Xác
định các trạng thái của một trường hợp bao gồm các hoạt đồng đồng thời được coi là khó
khăn hơn việc xác định các trạng thái của một quá trình hoàn toàn liên tục. Thật vậy, khi
một số hoạn động có thể tiến hành đồng thời, trạng thái phải phản ánh được tiến độ thực
hiện trên từng hoạt động độc lập.
Một mô tả khác của một workflow có thể được cung cấp bởi một hệ thống chuyển đổi
mô tả các con đường có thể từ trạng thái hiện tại đến trạng thái đích. Thỉnh thoảng, thay
vì cug cấp một mô tả xử lý, chúng ta có thể chỉ xác định trạng thái đích và chờ hệ thống
tạo ra một mô tả workflow có thể dẫn đến trạng thái đó thông qua một tập hợp cá hành
động. Trong trường hợp này, một mô tả workflow mới thì được tạo ra một cách tự động,
biết đến như một tập hợp các task và các điện kiện trước và sau cho mỗi task trong đó.
Trong trí tuệ nhân tạo, hoạt đồng này được biết đến như là việc lập kế hoạch.
Không gian trạng thái của một quá trình bào gồm một trạng thái ban đầu và một trạng
thái đích; một hệ thống chuyển đổi xác định tất cả các con đường có thể từ tráng thai ban

đầu đến trạng thái đích. Một trường hợp tương ứng với một con đường cụ thể trong hệ
thống chuyển đổi. Một trạng thái của một trường hợp theo dõi tiến độ thực hiện được
thực hiện trong suốt quá trình thi hành của trường hợp đó.
Trong số các tích chất quan trọng mong muốn của một mô tả quá trình là sự an toàn
và liveness của quá trình. An toàn ở đây có nghĩa là không có gì không xấu xảy ra và
liveness có nghĩa là một vài điều tốt sẽ cuối cùng sẽ đến, nếu một trường hợp của quá
trình này được ban hành. Không phải tất cả các quá trình đều an toàn và sống. Ví dụ, một
mô tả quá trình trong Hình 2(a) vi phạm các yêu cầu về liveness. Miễn là công việc C
được chọn sau khi hoàn thành công việc B, quá trình này sẽ chấm dứt. Tuy nhiên, nếu D
14
được chọn, sau đó F sẽ không bao giờ được khởi tạo bởi vì nó đòi hỏi phải hoàn thành cả
C và E. Quá trình này sẽ không bao giờ chấm dứt vì G đòi hỏi phải hoàn thành cả D và F.
Một ngôn ngữ mô tả quá trình nên rõ ràng và cho phép xác minh mô tả quá trình trước
khi ban hành một trường hợp nào đó. Điều này hoàn toàn có thể là một mô tả quá trình có
thể được ban hành một cách chính xác trong một vài trường hợp, nhưng có thể lại không
đúng trong những trường hợp khác. Các sự ban hành thất bại như vậy có thể tốn kém và
cần ngăn ngừa bằng cách xác minh kỹ lưỡng tại thời điểm xác định quy trình. Để trách
các lỗi có thể xảy ra, chúng ta cần xác minh mô tả quá trình và kiểm tra các tính chất
mong muốn như sự an toàn và liveness. Một vài phương pháp mô tả quá trình thì phù hợp
hơn cho việc xác minh này hơn các mô hình khác.
Figure 2: (a) A process description which violates the liveness requirement; if task C is chosen after completion
of B, the process will terminate after executing task G; if D is chosen, then F will never be instantiated because it
requires the completion of both C and E. The process will never terminate because G requires completion of both D
and F . (b) Tasks A and B need exclusive access to two resources r and q and a deadlock may occur if the following
sequence of events occur: at time t1 task A acquires r, at time t2 task B acquires q and continues to run; then, at time
t3, task B attempts to acquire r and it blocks because r is under the control of A; task A continues to run and at time
t4 attempts to acquire q and it blocks because q is under the control of B.
Một chú ý quan trọng: mặc dù mô tả ban đầu của một quá trình có thể tồn tại, việc ban
hành thực tế của một trường hợp có thể bị ảnh hưởng bởi sự bế tắc do sự phân bổ tài
nguyên. Để minh họa cho tình trạng này, hãy xem xét hai task, A và B, chạy đồng thời;

15
mỗi task cần độc quyền trong việc truy cập tài nguyên r và q trong một khoảng thời gian.
Hai kịch bản có thể xảy ra: (1) A hoặc B giành được cả hai tài nguyên và sau đó giải
phóng chúng, và cho phép task còn lại thực hiện tương tự; (2) chúng ta phải đối mặt với
tình trạng không mong muốn như Hình 1(b) khi tại thời điểm t
1
task A chiếm r và tiếp tục
thực hiện; sau đó tại thời điểm t
2
task B chiếm q và tiếp tục thực hiện. Sau đó, tại thời
điểm t
3
task B cố gắng để chiếm được r và điều này là không thể vì r đã bị chiếm bởi A.
Task A tiếp tục chạy và tại thời điểm t
4
cố gắng chiếm q và cũng không thể vì q đã bị
chiếm bởi B.
Tình trạng deadlock được mô tả trong Hình 2(b) có thể tránh được bằng cách yêu cầu
mỗi task để có được toàn bộ tài nguyên cùng một lúc; cái giá phải trả đó là việc sử dụng
tài nguyên không hợp lý; thực tế, thời gian rảnh của mỗi tài nguyên tăng theo chương
trình này.
Figure 3: Basic workflow patterns. (a) Sequence; (b) AND split; (c) Synchronization; (d) XOR split; (e) XOR
merge; (f) OR split; (g) Multiple Merge; (h) Discriminator; (i) N out of M join; (j) Deferred Choice.
16
Mô hình workflow đề cập đến các mối quan hệ thời gian giữa các task của một quá
trình. Ngôn ngữ mô tả workflow và các cơ chế để kiểm soát việc ban hành của một
trường hợp phải có các quy định đễ hỗ trợ các mối quan hệ về thời gian. Các mô hình
workflow được phân tích trong [4] và [5]. Những mô hình này được chia thành một vài
loại: cơ bản, phân nhánh cao cấp và đồng bộ hóa, có cấu trúc, dựa trên trạng thái, sự hủy
bỏ, và các mô hình liên quan đến nhiều trường hợp. Mô hình cơ bản workflow được thể

hiện trong Hình 3 là:
• Mô hình trình tự xảy ra khi một vài task cần được lên kế hoạch là một task sẽ đực
thực hiện sau khi task trước đó thực hiện xong, Hình 3(a).
• Mẫu tách AND yêu cầu một vài task thực hiện đồng thời. Cả B và C thì được kích
hoạt sau khi A kết thúc, Hình 3(b). Trong trường hợp cổng chia AND rõ ràng đồ
thị hoạt động có một node định tuyến và toàn bộ hoạt động được kết nối đến node
định tuyết thì được kích hoạt ngay sau khi luồng kiểm soát đi tới node định tuyến.
Trong trường hợp cổng chia AND không rõ ràng, các hoạt động được kết nối trực
tiếp và các điều kiện có thể được liên kết với các nhánh liên kết với một hoạt động
với các hoạt động tiếp theo. Chỉ khi các điều kiện liên quan với một nhánh thì các
task được kích hoạt.
• Mô hình đồng bộ đòi hỏi một số hoạt động đồng thời để chấm dứt trước khi một
hoạt động có thể bắt đầu; trong ví dụ trên, task C có thể chỉ bắt đầu sau khi cả task
A và B chấm dứt, Hình 3(c).
• Cổng chia XOR đòi hỏi một quyết định; Sau khi hoàn thành task A, hoặc B hoặc C
có thể được kích hoạt, Hình 3(d).
• Cổng hợp XOR; một vài lựa chọn khác nhau được sát nhập thành một, trong ví dụ
task C được kích hoạt khi A hoặc B chấm dứt, Hình 3(e).
• Mẫu cổng chia OR là một cổng xây dựng để chọn nhiều lựa chọn thay thế của một
tập hợp đầu ra. Trong ví dụ, sau khi hoàn thành task A, chương trình có thể kích
hoạt B hặc C, hoặc cả hai, Hình 3(f).
• Các hợp nhất nhiều cấu trúc cho phép nhiều kích hoạt của một task và yêu cầu
động bộ hóa sau khi thực hiện các nhiệm vụ đồng thời. Khi A kết thúc, task B và
C thực hiện đồng thời, Hình 3(g). Khi task đầu tiên trong số chúng, cho là B, kết
thúc, sau đó task D được kích hoạt; sau đó, khi C kết thúc, D được kích hoạt lần
nữa.
• Mô hình phân biệt chờ một số nhánh đến để hoàn thành trước khi kích hoạt các
hoạt động tiếp theo, Hình 3(h); sau đó nó chờ các nhách tiếp theo để kết thúc mà
không cần dùng đến bất kỳ hành động nào cho đến khi tất cả chúng kết thúc. Tiếp
theo, nó thiết lập lại chính nó.

17
• Cổng hợp N vượt M cung cấp một đồng bộ hàng rào. Giả sử rằng M > N task đang
chạy đồng thời, N task trong số chúng phải đạt đến ngưỡng trước khi task tiếp theo
được kích hoạt; trong ví dụ, bất kỳ hai trong số ba task A, B, và C phải kết thúc
trước khi E được kích hoạt, Hình 3(i).
• Các mô hình lựa chọn trì hoãn thì tương tự như cổng chia XOR nhưng lần này sự
lựa chọn thì không được thực hiện một cách rõ ràng và môi trường thời gian chạy
quyết định nhánh sẽ thực thi, Hình 3(j).
Tiếp theo tác giả thảo luận khả năng tiếp cận được trạng thái đích và các yếu tố sau:
• Một hệ thống ∑, một trạng thái khởi đầu của hệ thống và một trạng thái đích .
• Một nhóm xử lý, ={p
1
, p
2
, …, p
n
}; mỗi xử lý p
i
trong nhóm xử lý được đặc trưng
bởi một tập hợp các điều kiện tiên quyết, pre(p
i
), điều kiện sau, post(p
i
) và các
thuộc tính, atr(p
i
).
• Một workflow được mô tả bởi một đồ thị hành động trực tiếp A hoặc bởi một thủ
tục có khả năng khởi tạo A được cho trước bởi bộ ba <,, >. Các node của A là các
xử lý trong và các cạnh định nghĩa quan hệ quyền ưu tiên giữa các xử lý. p

i
→ p
j
có nghĩa là pre(p
j
) post(p
i
).
• Một tập hợp các ràng buộc, .
Vấn đề hợp tác trong một hệ thống ∑ tại trạng thái là để đạt được trạng thái , như là
một kết quả của điều kiện sau của một vài xử lý chủ đề P
final
để ràng buộc . Ở đây khởi
tạo các điều kiện tiên quyết của một số P
initial
. Nói dễ hiểu hơn, điều này có nghĩa là một
chuỗi của các xử lý tồn tại như là các điều kiện sau của một xử lý là các điều kiện tiên
quyết của một xử lý tiếp theo trong chuỗi.
Nhìn chung, các điều kiện tiên quyết của một quá trình hoặc là các điều kiện and/or
các sự kiện mà kích hoạt việc thực hiện quá trình đó hoặc các dữ liệu mà quá trình này
mong đợi như là một dữ liệu đầu vào; các điều kiện sau là kết quả sản xuất bởi quá trình
này. Các thuộc tính của một quá trình mô tả các yêu cầu đặc biệt hoặc các thuộc tính của
quá trình đó.
Một số workflow là tĩnh, biểu đồ hoạt động không thay đổi trong suốt quá trình ban
hành một trường hợp. Các workflow động cho phép đồ thị hoạt động được sửa đổi trong
suốt quá trình ban hành một trường hợp. Một số câu hỏi khó hơn gặp phải trong việc
quản lý workflow động như: (i) làm thế nào để tích hợp workflow và quản lý tài nguyên;
18
và tối ưu hóa sự đảm bảo hoặc lại gần việc tối ưu hóa chi phí các chức năng cho các
trường hợp cụ thể; (ii) làm thế nào để đảm bảo tính thống nhất sau khi có một sự thay đổi

trong workflow; (iii) làm thế nào để tạo ra một workflow động. Các workflow tĩnh có thể
được mô tả trong WFDL (ngôn ngữ định nghĩa workflow), nhưng các workflow động cần
một cách tiếp cận linh hoạt hơn.
Tác giả phân biệt hai mô hình cơ bản cho các cơ chế ban hành workflow: (1) Các mô
hình phối hợp mạnh mẽ là quá trình mà một nhóm quá trình P thực hiện dưới sự giám sát
của một quá trình điều phối hoặc qui trình. Một quá trình điều phối hoạt động như một
động cơ ban hành và đảm bảo một quá trình chuyển đổi liền mạch từ một quá trình khác
trong đồ thị hoạt động. (2) Mô hình phối hợp yếu là mô hình mà không có quá trình giám
sát.
Trong trường hợp đầu tiên, tác giả có thể triển khai một sơ đồ phối hợp phân cấp với
nhiều cấp độ của các điều phối. Một giám sát ở cấp thứ i trong một sơ đồ phân cách với i
+ 1 cấp phối hợp với một tập hợp các quá trình trong một nhóm quá trình. Một giám sát ở
cấp thứ i − 1 phối hợp với một số giám sát ở cấp độ i và ở gốc cung cấp các phối hợp
toàn bộ sơ đồ. Một sơ đồ phân cấp phối hợp như vậy có thể được sử dụng để giảm chi phí
thông tin liên lạc; một điều phối và các quá trình mà giám sát có thể đặt cùng vị trí.
Các tính năng quan trọng nhất của mô hình phối hợp này là khả năng hỗ trợ các
workflow động. Các điều phối hoặc các điều phối toàn cục có thể đáp ứng yêu cầu sửa
đổi của workflow bằng cách (i) ngăn chặn tất cả các tiến trình của việc điều khiển trong
một trạng thái thống nhất, (ii) khảo sát tính khả thi của những thay đổi được yêu cầu, và
(iii) thực hiện thay đổi khả thi. Các mô hình phối hợp yếu thì dựa trên thông tin liên lạc
ngang hàng giữa các quá trình trong một nhóm quá trình bằng phương tiện của một dịch
vụ xã hội như một tuple space. Khi một quá trình p
i
∈ P kết thúc, nó gởi một mã thông
báo bao gồm một tập họp các điều kiện sau của nó có thể xảy ra, post(p
i
), trong một tuple
space. Quá trình tiêu thụ p
j
được dự kiến sẽ truy cập tại một số điểm trong thời gian tuple

space, kiểm tra các mã thông tin còn lại bằng tổ tiên của chúng trong đồ thị hoạt động và,
nếu các điều kiện tiên quyết của chúng pre(p
j
) được thỏa, thì bắt đầu thực hiện. Cách tiếp
19
cận này đòi hỏi các quá trình riêng lẻ hoặc là có một bảng sao của mô hình hoạt động
hoặc một số lịch trình ghé thăm tuple space. Một phương pháp khác sử dụng một không
gian hoạt động, một tuple space được tăng cường với khả năng tạo ra một đánh thức một
sự kiện của một dấu hiệu thông báo.
Có những điểm tương đồng và một số khác biệt giữa các workflow của hệ thống giao
dịch được định hướng truyền thống và các workflow của đám mây; những điểm tương
đồng chủ yếu là ở cấp độ mô hình, trong khi sự khác biệt ảnh hưởng đến các cơ chế được
sử dụng để thực hiện các hệ thống quản lý workflow. Những sự khác biệt nhỏ khác giữa
chúng là:
• Các điểm nhấn trong một mô hình giao dịch được đặt trên phương diện qui ước
của một giao dịch; trong một workflow việc ban hành một trường hợp đôi khi dựa
trên một mô hình “best-effort” mà các tác nhân tham gia sẽ làm hết sức mình để
đạt được trạng thái mục tiêu nhưng không có gì đảm bảo thành công.
• Một khía cạnh quan trọng khác của mô hình giao dịch trong các ứng dụng cơ sở
dữ liệu thì duy trì một trạng thái nhất quán của cơ sở dữ liệu; một đám mây là một
hệ thống mở, do đó, trạng thái của nó rất khó khăn để xác định.
• Các giao dịch cơ sở dữ liệu thường ngắn; các nhiệm vụ của một workflow trên
đám mây có thể dài hơn.
• Một giao dịch cơ sở dữ liệu bao gồm một tập hợp của các hành động rõ ràng
không có khả năng thay đổi trong quá trình thực hiện giao dịch. Tuy nhiên, mô tả
quá trình của một workflow điện toán đám mây có thể thay đổi trong suốt quá
trình sống của một trường hợp.
• Các nhiệm vụ cụ thể của một workflow điện toán đám mây có thể không thể hiện
các đặt tính truyền thống của các giao dịch cơ sở dữ liệu. Ví dụ, hãy xem xét tính
bền vững; tại bất kỳ thời gian nào, trước khi đạt đến trạng thái mục tiêu, một

workflow có thể quay trở lại một số trạng thái trước đây đã gặp phải và tiếp tục từ
đó trên một con đường khác. Nhiệm vụ của một workflow có thể phục hồi hoặc
không thể phục hồi. Thỉnh thoảng, chi phí nộp phạt cho quá trình đảo chiều của
một hành động thì có lợi hơn so với tiếp tục trong thời gian dài vì tiếp tục đi trên
con đường sai lầm.
• Phân bổ nguồn tài nguyên là một khía cạnh quan trọng của việc ban hành
workflow trên một đám mây mà không có một người trao đổi tức thì cho các giao
dịch cơ sở dữ liệu.
Mô hình phối hợp tương đối đơn giản thảo luận được thảo luận trong phần tiếp theo
thường được sử dụng trong điện toán đám mây.
20
4.5. Mô hình lập trình MapReduce
Một ưu điểm chính của điện toán đám mây là độ co giãn, khả năng sử dụng nhiều
máy chủ cần thiết để tối ưu đáp ứng các chi phí và các hạn chế về thời gian của ứng dụng.
Trong trường hợp của các hệ thống xử lý giao dịch thường là một hệ thống front-end
phân phối các giao dịch đến đến một số hệ thống back-end và cố gắng để cân bằng tải
giữa chúng. Khi khối lượng công việc tăng, các hệ thống back-end mới được thêm vào
hàng chờ xử lý.
Với các ứng dụng hàng loạt thiên về cơ sở dữ liệu phân vùng khối lượng công việc
không phải lúc nào cũng tầm thường. Chỉ trong một số trường hợp dữ liệu có thể phân
chia thành các khối có kích thước tùy ý và được xử lý song song bởi các máy chủ trong
đám mây. Tác giả phân biệt hai loại của việc phân chia khối lượng công việc:
• Mô đun phân chia,các phân vùng khối lượng công việc được định rõ bằng apriori
• Tự ý phân chia, khối lượng công việc có thể được phân chia một số tùy ý của các
khối lượng công việc nhỏ hơn hoặc bằng hoặc có kích thước gần tương đương.
Nhiều ứng dụng thực tế trong vật lý, sinh học, và các lĩnh vực khác của khoa học tính
toán và kỹ thuật tuân theo mô hình cân bằng tải tự ý phân chia.
MapReduce thì dựa trên một ý tưởng đơn giản để xử lý song song các ứng dụng thiên
về dữ liệu hỗ trợ cân bằng tải tự ý phân chia. Đầu tiên, chia dữ liệu thành các khối, phân
công mỗi khối để thể hiện/xử lý và chạy các trường hợp này một cách song song. Một khi

tất cả các trường hợp đã hoàn thành các tính toán được giao, chúng sẽ bắt đầu giai đoạn
thứ hai, hợp nhất các kết quả một phần được sinh ra từ các trường hợp cụ thể. Mô hình
Same Program Multiple Data (SPMD) được sử dụng từ những ngày đầu của tính toán
song song, thì dựa trên ý tưởng tương tự, nhưng giả định rằng một thể hiện chính chia dữ
liệu và tập hợp các kết quả từng phần.
MapReduce là một mô hình lập trình lấy cảm hứng từ việc ánh xạ và các nguyên tắc
biến đổi giảm của ngôn ngữ lập trình Lisp. Nó được hình thành để xử lý và tạo ra dữ liệu
lớn trên các cụm máy tính [6]. Là kết quả của việc tính toán, một tập hợp các cặp giá trị
đầu vào <key,value> được chuyển đổi thành các cặp của giá trị đầu ra <key,value>.
21
Nhiều ứng dụng có thể dễ dàng thực hiện bằng cách sử dụng mô hình này. Ví dụ,
người ta có thể xử lý các log các yêu cầu của một trang web và đếm tầng suất truy cập
URL; Chức năng Map cho ra cặp <URL,1> và chức năng Reduce sinh ra cặp
<URL,totalcount>. Một ví dụ nhỏ được phân phối sắp xếp khi chức năng map trích xuất
key từ mỗi record và sinh ra một cặp <key, record> và chức năng Reduce sinh ra các cặp
không thay đổi. Ví dụ sau đây [6] cho thấy hai chức năng do người dùng định nghĩa cho
một ứng dụng. Nó đếm số tầng số xuất hiện của mỗi từ trong một tập hợp các tài liệu.
Figure 5: The MapReduce philosophy. (1) An application starts a master instance and M worker instances for
the Map phase and later R worker instances for the Reduce phase. (2) The master partitions the input data in M
segments. (3) Each map instance reads its input data segment and processers the data. (4) The results of the
processing are stored on the local disks of the servers where the map instances run. (5) When all map instances have
finished processing their data the R reduce instances read the results of the first phase and merges the partial results.
22
(6) The final results are written by the reduce instances to a shared storage server. (7) The master instance monitors
the reduce instances and when all of them report task completion the application is terminated.
map(String key, String value):
// key: document name; value: document contents
for each word w in value:
EmitIntermediate(w, "1");
reduce(String key, Iterator values):

// key: a word; values: a list of counts
int result = 0;
for each v in values:
result += ParseInt(v);
Emit(AsString(result));
Gọi M và R là số task của Map và Reduce, tương ứng, và N là số hệ thống sử dụng bởi
MapReduce. Khi một chương trình người dùng gọi hàm MapReduce, trình tự của các
hành động sau đây được diễn ra:
• Thư viện run-time chia file dữ liệu đầu vào thành M phần của từ 16 đến 64 MB,
xác định số N hệ thống để chạy và bắt đầu nhiều bản sao của chương trình, một
trong số chúng được chọn làm Master và các máy khác là công nhân. Master giao
cho mỗi hệ thống rãnh hoặc một map hoặc một reduce task. Master tạo O(M + R)
lịch trình quyết định và giữ O(M × R) các vectors trạng thái công nhân trong bộ
nhớ. Những cân nhắc về giới hạn kích thước của M và R; cùng một lúc, cân nhắc
hiệu quả yêu cầu rằng M, R >> N .
• Một công nhân được giao một Map task đọc dữ liệu đầu vào tương ứng, phân tích
cặp <key,value> và cho qua mỗi cặp một người dùng xác định chức năng Map.
Cặp trung gian <key,value> được sinh ra bởi chức năng Map được đưa vào vùng
đệm trong bộ nhớ trước khi được ghi vào ổ cứng, được phân chia thành R vùng
bởi chức năng phân vùng.
• Những địa điểm của các cặp đệm trên ổ đĩa cứng thì được cho qua Master, người
chịu trách nhiệm chuyển tiếp các địa điểm cho các công nhân reduce. Một reduce
worker sử dụng lời gọi thủ tục remote để đọc dữ liệu đệm từ ổ cứng của map
workers; sau khi đọc tất cả dữ liệu trung gian, nó sắp xếp tăng theo key. Mỗi key
trung gian duy nhất, key và các bộ tương ứng của giá trị trung gian được cho qua
một chức năng Reduce do người dùng định nghĩa. Kết quả của chức năng Reduce
thì được nối vào tập tin kết quả cuối cùng.
• Khi tất cả task Map và Reduce hoàn tất, Master đánh thức chương trình của người
dùng.
23

The system is fault tolerant; đối với mỗi nhiệm vụ Map và Reduce, master lưu trạng
thái (idle, in-progress, hoặc completed) và định danh của máy thực hiện. Master nhắc nhở
các máy thực hiện theo định kỳ và đánh dấu các máy thất bại nếu chúng không phản hồi;
một nhiệm vụ trong tiến trình trên trên một máy tính bị thất bại được thiết lập lại trạng
thái nhàn rỗi và trở thành đủ điều kiện để tham gia lại. Master viết các điểm kiểm tra định
kỳ của các cấu trúc dữ liệu mà nó điều khiển và, nếu nhiệm vụ này thất bại, nó có thể
khởi động lại từ điểm kiểm tra trước đó.
24
TÀI LIỆU THAM KHẢO
[1] Dan C. Marinescu (2013). Cloud Computing: Theory and Practice. Newnes, 2013.
[2] J. Varia. “Cloud architectures.” />[3] D. C. Marinescu. Internet-based Workflow Management. Wiley, 2002.
[4] W. M. P. van der Aalst and A. H. ter Hofstede and B. Kiepuszewski and A.P. Barros. “Workflow patterns.”
Technical Report, Eindhoven University of Technology, 2000.
[5] M. Zapf and A. Heinzl. “Evaluation of process design patterns: an experimental study.” In W. M. P. van der
Aalst, J. Desel, and A. Oberweis, editors, Business Process Management, Lecture Notes on Computer
Science, Vol. 1806, pp. 83–98, Springer– Verlag, Heidelberg, 2000.
[6] J. Dean and S. Ghernawat. “MapReduce: Simplified Data Processing on Large Clusters.” Proc. 6th Symp. on
Operating Systems Design and Implementation, OSDI04., 2004
25

×