Khái niệm Điện toán đám mây Điện toán đám mây là: "Một mô hình máy tính mới, nơi đó dữ liệu và các dịch vụ cư trú tại cáctrung tâm dữ liệu trong đám mây và có thể được truy cập từ bất k
Trang 1
I H C QU C GIA TH NH PH H CH MINH ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ỐC GIA THÀNH PHỐ HỒ CHÍ MINH ÀNH PHỐ HỒ CHÍ MINH ỐC GIA THÀNH PHỐ HỒ CHÍ MINH Ồ CHÍ MINH Í MINH
TR ƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN NG ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH I H C CÔNG NGH THÔNG TIN ỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH Ệ THÔNG TIN
Đ
MÂY VÀ GIẢI QUYẾT VẤN ĐỀ PHÂN
TÁN, TÍNH TOÁN SONG SONG
I Khái niệm Điện toán đám mây 3
Trang 2
II Đặc điểm của điện toán đám mây 3
1 Tự Sửa Chữa 4
2 Nhiều người sử dụng 4
3 Khả năng mở rộng tuyến tính 4
4 Hướng dịch vụ 4
5 Điều khiển SLA 5
6 Khả năng ảo hoá 5
7 Linh hoạt 5
III Sự cần thiết của điện toán đám mây 5
IV Công nghệ 6
1 Kiến trúc của ứng dụng điện toán đám mây 7
2 Kiến trúc máy chủ 9
3 Map reduce 11
4 Google file system 19
5 Hadoop 21
PHẦN 2: ỨNG DỤNG PHÂN TÁN VÀ XỬ LÝ SONG SONG VỚI WCF SERVICE 21
1 Mô tả chương trình 21
2 Các hàm xử lý chính: 24
3 Thực thi chương trình 26
PHẦN 3: HƯỚNG PHÁT TRIẾN 28
TÀI LIỆU THAM KHẢO 29
LỜI NÓI ĐẦU Máy vi tính ngày nay đã trở thành một phần tất yếu của cuộc sống Chúng ta cần máy tính ở khắp mọi nơi, có thể là cho công việc, nghiên cứu hoặc trong bất kỳ lĩnh vực nào Khi việc sử dụng máy tính trong cuộc sống hàng ngày của chúng ta tăng lên, các nguồn tài nguyên máy tính mà chúng ta cũng cần tăng lên Đối với các công ty lớn như Google và Microsoft, khai thác các nguồn tài nguyên như vậy khi họ cần không phải là một vấn đề lớn Nhưng khi nói HVTH: Nguyễn Chí Toàn_MSSV: CH1301065 Trang 2/30
Trang 3đến doanh nghiệp nhỏ hơn, các nguồn tài nguyên lớn như vậy trở thành một yếu
tố rất lớn tác động đến kinh doanh Với những vấn đề lớn về cơ sở hạ tầngCNTT như máy hỏng, treo ổ cứng, lỗi phần mềm, v.v Đó thật sự là những vấn
đề rất đau đầu cho các doanh nghiệp Điện toán đám mây cung cấp một giảipháp cho tình trạng này
Điện toán đám mây được sử dụng trong các lĩnh vực khác nhau như webhosting, lập trình song song, dựng hình đồ hoạ, mô hình tài chính(IBM Clouds),các phương pháp duyệt và tìm kiếm trên web(web spider), phân tích
gen(Amazon Clouds), v.v
Qua môn học “Điện toán lưới và đám mây” Thầy PGS-TS NGUYỄN PHIKHỨ đã giúp em hình thành những cái nhìn rất mới điện toán đám mây cũngnhư việc áp dụng vào trong thực tiễn
Trong phạm vi của bài thu hoạch nhỏ này, chúng em sẽ trình bày khái quát
về Điện toán đám mây và giải quyết vấn đề, phân tán và tính toán song song
Em xin chân thành cảm ơn Thầy PGS TS Nguyễn Phi Khứ Những tiếtgiảng quý báu của Thầy đã cung cấp cho em những kiến thức nền tảng về Điệntoán lưới và đám mây bước khởi đầu giúp em nghiên cứu trong nhiều lĩnh vực
Học Viên Cao Học Khóa 8
NGUYỄN CHÍ TOÀN
* * *
PHẦN 1: TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY
I Khái niệm Điện toán đám mây
Điện toán đám mây là:
"Một mô hình máy tính mới, nơi đó dữ liệu và các dịch vụ cư trú tại cáctrung tâm dữ liệu trong đám mây và có thể được truy cập từ bất kỳ thiết bị kếtnối nào qua internet "
Điện toán có thể được mô tả là bất kỳ hoạt động nào của việc sử dụng vàphát triển phần cứng hay phần mềm máy tính, nghĩa là tất cả mọi thứ từ sứcmạnh tính toán đến khả năng lưu trữ Đám mây điện toán quan hệ cùng tất cả
Trang 4
các thực thể của nó để làm cho chúng như một thực thể tích hợp duy nhất bằng
sự quản lý tinh vi
Đám mây(cloud) là một thuật ngữ được sử dụng như là một ẩn dụ cho cácmạng diện rộng (như Internet) hoặc bất cứ môi trường mạng lớn như vậy Nó bắtnguồn từ biểu tượng giống đám mây được sử dụng để đại diện cho những mạngphức tạp trong sơ đồ nguyên lý(schematic) Nó đại diện cho tất cả những phứctạp của mạng có thể bao gồm mọi thứ từ cáp, router, máy chủ, trung tâm dữ liệu
và tất cả các thiết bị khác như vậy
II Đặc điểm của điện toán đám mây
1 Tự Sửa Chữa
Bất kỳ ứng dụng hoặc dịch vụ nào đang chạy trong một môi trường điệntoán đám mây có một tính chất tự sửa chữa Trong trường hợp ứng dụng thấtbại, luôn luôn có một dự phòng tức thời của ứng dụng sẵn sàng để cho công việckhông bị gián đoạn Có nhiều bản sao của cùng một ứng dụng - mỗi bản cậpnhật chính nó thường xuyên vì vậy ở những lần thất bại, có ít nhất một bản saocủa ứng dụng có thể lấy lên hoạt động mà thậm chí không cần thay đổi nhỏ nàotrong trạng thái chạy của nó
2 Nhiều người sử dụng:
Với điện toán đám mây, bất kỳ ứng dụng nào cũng hỗ trợ đa người dùng
-đó là khái niệm dùng để chỉ nhiều người sử dụng đám mây trong cùng thời gian
Hệ thống cho phép một số khách hàng chia sẻ cơ sở hạ tầng được phân bổ cho
họ mà không ai trong họ nhận biết về sự chia sẻ này Điều này được thực hiệnbởi việc ảo hóa các máy chủ trong một dải các máy tính và sau đó cấp phát cácmáy chủ đến nhiều người sử dụng Điều này được thực hiện theo cách mà trong
đó sự riêng tư của người sử dụng và bảo mật của dữ liệu của họ không bị tổnhại
3 Khả năng mở rộng tuyến tính
Dịch vụ điện toán đám mây có khả năng mở rộng tuyến tính Hệ thống cókhả năng phân chia các luồng công việc thành phần nhỏ và phục vụ nó qua cơ sở
hạ tầng Một ý tưởng chính xác của khả năng mở rộng tuyến tính có thể được lấy
từ thực tế là nếu một máy chủ có thể xử lý 1000 giao dịch trong một giây, thì haimáy chủ có thể xử lý 2.000 giao dịch trong một giây
Trang 5
4 Hướng dịch vụ
Hệ thống Điện toán đám mây là tất cả các dịch vụ theo định hướng – nhữngdịch vụ như vậy được tạo ra từ những dịch vụ rời rạc khác Rất nhiều dịch vụ rờirạc như vậy là sự kết hợp của nhiều dịch vụ độc lập khác với nhau để tạo dịch vụnày Điều này cho phép việc tái sử dụng các dịch vụ khác nhau sẵn có và đangđược tạo ra Bằng việc sử dụng các dịch vụ đã được tạo ra trước đó, những dịch
vụ khác có thể được tạo ra từ đó
5 Điều khiển SLA(Service level agreement)
Thông thường các doanh nghiệp có thỏa thuận về số lượng dịch vụ Khảnăng mở rộng và các vấn đề có sẵn có thể làm cho các thỏa thuận này bị phá vỡ.Tuy nhiên, các dịch vụ điện toán đám mây là hướng SLA, như việc khi hệ thống
có kinh nghiệm đạt đỉnh của tải, nó sẽ tự động điều chỉnh chính nó để tuân thủcác thỏa thuận ở cấp độ dịch vụ Các dịch vụ sẽ tạo ra thêm những thực thể củaứng dụng trên nhiều server để cho việc tải có thể dễ dàng quản lý
6 Khả năng ảo hóa
Các ứng dụng trong điện toán đám mây hoàn toàn tách rời khỏi phần cứng nằm bên dưới Môi trường điện toán đám mây là một môi trường ảohóa đầy đủ
7 Linh hoạt
Một tính năng khác của các dịch vụ điện toán đám mây là chúng linh hoạt.Chúng có thể được dùng để phục vụ rất nhiều loại công việc có khối lượng khácnhau từ tải nhỏ của một ứng dụng nhỏ cho đến tải rất nặng của một ứng dụngthương mại
III Sự cần thiết của điện toán đám mây
Một câu hỏi được đặt ra là làm cách nào để có thể tăng năng lực tính toán
và lưu trữ dữ liệu lên hàng nghìn lần so với chỉ dùng phần cứng tại chỗ? Câu hỏi
đã từng làm đau đầu các nhà phát triển hệ thống, và với sự ra đời của mạnginternet vấn đề đã được giải quyết bởi sự xuất hiện của dịch vụ điện toán đámmây Điện toán đám mây là một dịch vụ tính toán và lưu trữ do nhà cung cấpdịch vụ cung cấp cho khách hàng, vì vậy năng lực tính toán và lưu trữ dữ liệu cókhả năng tăng lên hàng nghìn lần so với việc chỉ dùng hệ thống tính toán truyềnthống của khách hàng, và điều này phụ thuộc vào năng lực của nhà cung cấp
Trang 6
dịch vụ chứ không phụ thuộc vào hệ thống tại chỗ của khách hàng, mà thường làcác máy của các nhà cung cấp dịch vụ thường là những máy có năng lực tínhtoán rất lớn để có thể cung cấp cho nhiều người.
So với các hệ thống máy tính truyền thống thì điện toán đám mây có nhiều
ưu điểm vượt trội hơn Ưu điểm đầu tiên là về tài nguyên hệ thống, giả sử vớimột công ty khi trang bị hệ thống tính toán truyền thống cần phải xây dựng một
hệ thống mạnh đủ để phục vụ công việc cho một công ty Điều đó đồng nghĩavới việc chi phí lắp đặt hệ thống ban đầu tốn kém, và đối với hệ thống của công
ty cần phải có người quản trị hệ thống tốn thêm tài nguyên và nhân lực, và chiphí cho năng lượng tiêu thụ của hệ thống cũng rất cao Thêm vào đó là sự lãngphí tài nguyên khi mà hệ thống không được sử dụng hết công suất của nó Điều
đó cho thấy rằng đầu tư vào một hệ thống máy tính theo kiểu truyền thống thì cóthể là tốn kém và lãng phí Và nếu công ty sử dụng điện toán đám mây thì khi đókhông phải tốn một người quản trị, năng lượng tiêu thụ cho hệ thống cũngkhông còn là vấn đề, đặc biệt là tài nguyên không sử dụng sẽ không bị lãng phí
vì khi đó công ty chỉ trả tiền cho phần tài nguyên mà họ sử dụng, phần tàinguyên còn lại sẽ được người cung cấp dịch vụ cung cấp cho một công ty khác.Một ưu điểm nữa của điện toán đám mây là khả năng truy cập và sử dụngtài nguyên ở mọi lúc mọi nơi khi mà ta có một máy tính bình thường được nốimạng internet, khi đó ta có thể thực hiện một phép tính khổng lồ hoặc có thể sửdụng một khối lượng dữ liệu lớn chỉ với một máy tính đơn giản
Vấn đề về bản quyền phần mềm cũng là một vấn đề hết sức nan giải đốivới các công ty khi mà các phần mềm đó có giá quá cao Với điện toán đám mâythì chỉ cần nhà cung cấp dịch vụ bỏ tiền ra mua bản quyền thì tất cả các kháchhàng của họ đều có thể sử dụng nó như một phần mềm có bản quyền thật sự màkhông phải bỏ ra một số tiền lớn để mua bản quyền mà họ chi phải trả tiền chonhững gì họ dùng
Trang 7
Bên cạnh đó điện toán đám mây cũng có những nhược điểm cố định của
nó Với điện toán đám mây người dùng không thực sự an tâm về dữ liệu của họ
vì khi đó tài nguyên thật sự không còn là của riêng họ mà nằm trong đám mâycủa nhà cung cấp dịch vụ Theo đó thì sự bảo mật dữ liệu cũng là vấn đề làm lolắng cho người dùng Và khi có sự cố về mạng internet thì người dùng không thểlàm việc với dữ liệu của chính họ được nữa
IV Công nghệ
1 Kiến trúc của ứng dụng điện toán đám mây
Trang 8
Bây giờ chúng ta sẽ đi vào tìm hiểu cấu trúc cơ bản của điện toán đám mây,chúng ta biết rằng điện toán đám mây là một tổ hợp tính toán dựa trên các thiết
bị hạ tầng phần cứng trong một đám mây của nhà cung cấp dịch vụ Hạ tầngphần cứng bao gồm các sản phẩm máy chủ chứa dữ liệu nhỏ được kết nối lại vớinhau như một hệ thống phục vụ cho việc lưu trữ và xử lý dữ liệu và các ứngdụng tính toán trên các tài nguyên khác Điện toán đám mây gọi một ứng dụngchạy trên máy chủ ảo như là nó đang chạy tại chỗ trên hạ tầng phần cứng phântán trong đám mây Những máy chủ ảo được tạo ra theo những cách mà ở đónhững thỏa thuận dịch vụ (SLA) khác nhau và sự tin cậy đều được đảm bảo Cóthể có nhiều thực thể khác nhau của cùng một máy chủ ảo truy cập vào nhữngphần sẵn sàng của cơ sở hạ tầng phần cứng Điều này đảm bảo rằng có nhiềubản sao của các ứng dụng, để khi xảy ra lỗi chúng sẵn sàng khắc phục Máy chủ
ảo phân tán quá trình xử lý vào cơ sở hạ tầng phần cứng và sau khi quá trình tínhtoán được hoàn thành chúng sẽ trả về kết quả Quá trình này cần có một phầnmềm hoặc hệ điều hành xử lý công việc quản lý hệ thống phân tán, giống như kỹthuật tính toán lưới, giúp quản lý các yêu cầu khác nhau đến máy chủ ảo Cơ chếnày sẽ đảm bảo việc tạo ra nhiều bản sao và cả việc bảo vệ sự thống nhất dữ liệuđược lưu trên cơ sở hạ tầng Đồng thời hệ điều hành đó cũng có thể tự điềuchỉnh như là khi gặp quá tải các tiến trình, phân chia xử lý để hoàn thành đápứng yêu cầu Hệ thống quản lý công việc như vậy được che dấu với người dùng,hay nói các khác là ẩn với người dùng Sự độc lập với người dùng thể hiện ở chỗ
nó xử lý và trả về kết quả đạt được, chứ không cần phải quan trọng nó ở đâu và
Trang 9
nó thực hiện điều đó bằng cách nào Người dùng trả tiền trên lưu lượng sử dụng
hệ thống, như đã nói dịch vụ được tính bằng chu kỳ của CPU hoặc byte Thực tế
số tiền mà khách hàng phải trả thường được tính dựa vào lưu lượng dùng CPUtrên một giờ hoặc số Gb dữ liệu di chuyển trong một giờ
2 Kiến trúc máy chủ
Điện toán đám mây được tạo thành bằng cách sử dụng tài nguyên vật lý lớn từ
nhiều máy chủ trong đám mây của nhà cung cấp dịch vụ Đây là một ứng dụngcủa nguyên tắc kết hợp vào trong bài toán cần một hệ thống tính toán lớn màthiết bị hoặc cơ sở vật chất không cho phép nên chúng ta cần phải ghép nhữngthiết bị, những hệ thống nhỏ lại với nhau để trở thành một hệ thống lớn đáp ứngnhững nhu cầu lớn hơn cho người sử dụng trong những hệ thống yêu cầu tínhtoán và lưu trữ lớn Như đã nói bên trên, dịch vụ và ứng dụng của điện toán đámmây dựa trên máy chủ ảo được thiết kế từ tài nguyên góp lại này Có hai ứngdụng (hoặc hệ điều hành) sẽ giúp quản lý các thể hiện trên máy trong đám mây,cũng như quản lý tất cả các tài nguyên của các thể hiện máy chủ ảo
Đây là một ứng dụng nguyên lý tách khỏi vào trong hệ thống điện toán đámmây nhằm tách biệt phần cứng phức tạp của hệ thống vói giao diện bên ngoài.Nhằm tạo ra một giao diện người dùng đơn giản, dễ sử dụng hơn so với phầncứng phức tạp bên dưới và cũng là để tách biệt giao diện người dùng với hệthống phần cứng, khi đó người dùng chỉ cần quan tâm đến những ứng dụng màhọc cần chứ không cần quan tâm đến phần cứng bên dưới được thực hiện như
Trang 10
thế nào Ứng dụng thứ nhất là Xen hypervisor cung cấp các lớp trừu tượng giữaphần cứng và hệ điều hành ảo, nhờ vậy sự phân tán của các tài nguyên và tiếntrình được quản lý giống như là đang thực hiện trên một máy Ứng dụng thứ hai
cũng được sử dụng rộng rãi là hệ thống quản lý máy chủ ảo Enomalism, nó được
sử dụng để quản lý hạ tầng phần cứng nền tảng
Khi Xen sử dụng cho các lớp ảo của các cơ sở hạ tầng máy chủ, một lớp phần mềm là Xen hypervisor đã được cài đặt giữa máy chủ và hệ điều hành Nó cung cấp một lớp trừu tượng cho phép mỗi server vật lý có thể được chạy như làmột hoặc nhiều máy chủ ảo, tách riêng hệ điều hành và các ứng dụng của nó khỏi lớp phần cứng vật lý bên dưới Xen hypervisor là một công nghệ mã nguồn
mở, được cộng tác phát triển bởi Xen và các kỹ sư của hơn 20 công ty nổi tiếng
về trung tâm dữ liệu có tính chất đổi mới bao gồm : AMD, Cisco, Dell, HP, IBM, Intel, Mellanox, Network Appliance, Novell, Red Hat, SGI, Sun, Unisys, Veritas, Voltaire, and Citrix Xen được đăng ký bởi GNU General Public
License (GPL2) và được sử dụng không được thay đổi về mã nguồn và định dạng đối tượng Xen Hypervisor cũng đặc biệt ngắn - ít hơn 50.000 dòng mã Vìvậy chi phí dịch mã code rất thấp và hiệu suất gần giống như trên máy nguyên
Trang 11
thủy Xen tái sử dụng các trình điều khiển thiết bị hiện có (đối với cả hai loại là
mở và đóng mã nguồn) từ Linux, làm cho thiết bị quản lý dễ dàng Hơn nữa Xenrất mạnh mẽ để điều khiển lỗi và bảo vệ cả người dùng và hypervisor khỏi các vấn đề với các lỗi từ các driver độc hại
Hệ thống quản lý máy chủ ảo Enomalism là một nền tảng hạ tầng cơ sởmáy chủ ảo hoàn chỉnh Enomalism quản lý ảnh hưởng giữa các tài nguyêntrong hệ thống Enomalism có thể sử dụng để dẫn các luồng tính toán vào đámmây giống như là luồng từ khách hàng được đi vào thực hiện tính toán trên mộtmáy chủ từ xa Nó mang tất cả những tính năng như: triển khai kế hoạch tínhtoán, cân bằng tải, tránh xung đột tài nguyên… Enomalism cũng là một ứngdụng mã nguồn mở, nó có một giao diện người dùng dựa trên nền web rất đơngiản và dễ sử dụng Nó có kiến trúc từng phần dễ dàng cho phép tạo và thêm vào
hệ thống các bổ sung và các tiện ích cần thiết cho việc sử dụng Nó hỗ triển khai
tổ chức phân tán và tạo các ứng dụng dựa trên tổng quang chung Nó hỗ trợquản lý các trường ảo khác nhau gồm KVM/Qemu, Amazon EC2 and Xen,OpenVZ, Linux Containers, VirtualBox Nó có chế độ phân quyền người dùng
và đặt quyền truy cập
3 Map reduce
Map Reduce là một mô hình lập trình, được Google phát triển vào năm
2003, để hỗ trợ cho quá trình tính toán song song trên số lượng tập các dữ liệucực lớn (vài tỷ byte) lưu trữ ở các cụm máy tính thành phần trong đám mây điện
toán Trong mô hình này, người dùng định nghĩa một hàm map để tính toán một
cặp khóa/giá trị đầu vào và tạo nên một tập các cặp khóa/giá trị tạm thời, sau đó
hàm reduce sẽ gom nhóm tất cả những giá trị tạm thời nào có chung khóa lại với
nhau cho ra kết quả mong muốn Rất nhiều các tác vụ trong đời sống thực có thểđược thực thi bằng mô hình này,chúng ta sẽ xem xét cụ thể hơn ở phần sau.Chương trình được viết theo kiểu chức năng này được song song hóa mộtcách tự động và được thực thi trên một cụm lớn các “máy tính hàng hóa” (các
Trang 12
máy tính thành phần cấu tạo nên đám mây điện toán) Hệ thống khi chạy sẽ quantâm chi tiết phân vùng của dữ liệu đầu vào, lập lịch quá trình thực thi chươngtrình thông qua một tập các máy tính thành phần, xử lý lỗi và quản lý các kết nốinội giữa các máy tính thành phần Điều này cho phép các lập trình viên ngay cảchưa có bất kỳ kinh nghiệm nào trong các hệ thống song song và phân tán đều
có thể dễ dàng tối ưu hóa các tài nguyên của một hệ thống phân tán lớn
Trong vòng vài năm trước đây, các kỹ sư của Google phải khởi tạo hàngtrăm các quá trình tính toán dành cho các mục đích đặc biệt trên số lượng lớncác dữ liệu thô như các dữ liệu móc nối, nhật ký các trang web yêu cầu…Cácquá trình tính toán này dùng cho nhiều mục đích khác nhau như tóm tắt số lượngcác trang đã được móc nối bởi từng host, tính tần số truy xuất của 1 trang web,tìm ra tập các câu truy vấn được dùng nhiều nhất trong ngày…Hầu hết các tínhtoán này đều không phức tạp,nhưng dữ liệu đầu vào thường rất lớn và quá trìnhtính toán cần phải được phân tán cho hàng trăm ngàn máy nhằm có thể thực thitrong khoảng thời gian cho phép Các vấn đề về việc song song hóa tínhtoán,phân tán dữ liệu và quản lý lỗi đã làm cho các quá trình tính toán vốn đơngiản này trở nên vô cùng phức tạp
Để giải quyết vấn đề, các kỹ sư của Google đã thiết kế một mô hình trừutượng cho phép chúng ta diễn tả quá trình tính toán này một cách đơn giản nhưvốn dĩ của nó, đồng thời che dấu đi các chi tiết phức tạp trong việc song songhóa, chấp nhận lỗi, cân bằng nạp, phân tán dữ liệu trong một thư viện riêng Sự
trừu tượng hóa này được lấy ý tưởng từ 2 thành phần cơ bản là map và reduce
trong Lisp và nhiều loại ngôn ngữ lập trình hàm khác Chúng ta có thể nhận thấyrằng trong hầu hết các quá trình tính toán của chúng ta đều bao gồm một thao
tác map, ánh xạ các đầu vào với các giá trị của “bản ghi” để thực hiện việc tính
toán các giá trị đó thành 1 tập các cặp khóa/giá trị tạm thời, sau đó ta lại tạo
thêm một thao tác reduce, thu gọn các giá trị mà có cùng key lại với nhau và cho
ra kết quả.Việc sử dụng mô hình hàm chức năng map và reduce cho phép chúng
ta có thể thực thi song song các tính toán lớn dễ dàng và có thể sử dụng quátrình thực thi lại như một cơ chế chấp nhận lỗi
Các thế mạnh chính của phương pháp này là cung cấp cho chúng ta mộtgiao diện đơn giản và mạnh mẽ, cho phép song song hóa và phân tán dữ liệutrong các phép toán lớn một cách tự động, giúp cho ta thu được hiệu năng caonhất trong số lượng lớn các cụm máy tính thành phần của đám mây điện toán Ở
Trang 13
phần sau chúng ta sẽ lần lượt xem xét mô hình lập trình cơ bản của MapReduce
và một vài ví dụ đơn giản
Mô hình lập trình
Quá trình tính toán nhận một cặp giá trị đầu vào gồm khóa/giá trị, và tínhtoán cho ra một tập các cặp khóa/giá trị đầu ra Người dùng sử dụng thư viện
MapReduce để diễn tả quá trình này thông qua hai hàm là Map và Reduce.
Map là hàm được định nghĩa bởi người dùng, nhận một cặp giá trị đầu vào
và tạo ra các cặp giá trị trung gian.Thư viện MapReduce nhóm tất cả các giá trị
trung gian có liên quan tới key I lại với nhau và chuyển nó cho hàm Reduce.
Hàm Reduce cũng được viết bởi người dùng, chấp nhận key I và các tập giá
trị trung gian của key I này Sau đó tiến hành hợp nhất các giá trị này thành mộttập các giá trị nhỏ hơn nếu có thể Một lần nữa nguyên tắc kết hợp lại được sửdụng trong hệ thống điện toán đám mây nhằm phục vụ cho thuật toán giải quyếtyêu cầu bài toán, sau khi chia nhỏ các chương trình lớn thành các phần nhỏ đểthực hiện tính toán một cách song song nhằm làm giảm thời gian thực hiện mộtbài toán thì hệ thống tiến hành kết hợp các kết quả tính toán từ các tiến trình nhỏsong song lại với nhau để đưa ra một kết quả tính toán thống nhất của chương
trình tính toán mà người dùng yêu cầu Thông thường chỉ có một giá trị output
được đưa ra từ hàm Reduce hoặc không có giá trị nào cả.
Trang 14
Ví dụ:
Giả sử chúng ta có một bài toán là đếm số lần xuất hiện của một từ trongmột bộ tài liệu lớn, người dùng cần phải viết một đoạn code tương tự với mã giảsau đây:
map(String key,String value):
//key: tên của tài liệu
//value:nội dung tài liệu đó
Với mỗi chữ cái w trong value :
Sau đó, người dùng cần phải thực hiện thêm các thủ tục khai báo đặc tả đối
tượng mapreduce với tên của các file input, output và các biến tùy chỉnh Người dùng sau đó gọi hàm MapReduce, chuyển cho nó đối tượng đã đặc tả ở trên, lúc
Trang 15
này các đoạn code của người dùng được liên kết lại thông qua thư viện
MapReduce
Tổng quan quá trình thực thi
Quá trình gọi thực thi hàm Map được phân tán trong nhiều các máy thành
viên của đám mây điện toán bằng cách tự động phân vùng các giá trị đầu vàothành một bộ gồm M phần Các phần này có thể được tính toán song song bởi
các máy khác nhau Tương tự hàm Reduce cũng được phân tán bằng cách phân
vùng các khóa giá trị trung gian thành R mảnh bằng các hàm phân vùng (ví dụnhư hash(key) mod R) Số lượng R và hàm phân vùng có thể được chỉ rõ bởingười dùng
Hình bên dưới cho chúng ta cái nhìn tổng quát nhất về luồng thực thi một thao tác MapReduce
Khi người dùng gọi hàm MapReduce thì các tác vụ sau đây sẽ được diễn ra
một cách tuần tự:
Thư viện MapReduce trong chương trình người dùng đầu tiên sẽ chia nhỏ
các file đầu vào thành M mảnh (thông thường kích thước mỗi mảnh từ 64MB,có thể điều chỉnh thông qua các tham số tùy chọn) Ở đây, hệ thống điệntoán đám mây đã đưa nguyên tắc chia nhỏ vào để thực hiện quá trình tính toáncủa mình Với một chương trình lớn mà tính toán một lần sẽ tốn rất nhiều thời