Điện toán đám mây

MỤC LỤC TÓM TẮT NỘI DUNG VÀ GIỚI THIỆU ĐỀ TÀI 3 1. Điện toán đám mây. 4 2. Các đặc điểm của điện toán đám mây. 5 3. Sự cần thiết của điện toán đám mây 8 4. Hoạt động của điện toán đám mây 9 4.1. Kiến trúc của ứng dụng điện toán đám mây 9 4.2. Kiến trúc của máy chủ 11 4.3. Map Reduce 13 4.4. Google file system 20 4.5. Hadoop 22 5. Tổng kết 23 TÀI LIỆU THAM KHẢO 24

doc25 trang | Chia sẻ: lvcdongnoi | Ngày: 30/01/2013 | Lượt xem: 7200 | Lượt tải: 34download
Bạn đang xem nội dung tài liệu Điện toán đám mây, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA: KỸ THUẬT MÁY TÍNH ---------c&d--------- TIỂU LUẬN MÔN HỌC MÔN : NHẬP MÔN CÔNG TÁC KỸ SƯ ĐỀ TÀI : ĐIỆN TOÁN ĐÁM MÂY GVHD: ThS. Nguyễn Văn Lợi SVTH: Phan Đình Duy 06520111 Trần Ngọc Đức 06520091 Lê Phước Phát Đạt Đức 06520089 Hoàng Thị Thúy Trà 06520496 Hồ Chí Minh – 2009 MỤC LỤC TÓM TẮT NỘI DUNG VÀ GIỚI THIỆU ĐỀ TÀI 3 1. Điện toán đám mây. 4 2. Các đặc điểm của điện toán đám mây. 5 3. Sự cần thiết của điện toán đám mây 8 4. Hoạt động của điện toán đám mây 9 4.1. Kiến trúc của ứng dụng điện toán đám mây 9 4.2. Kiến trúc của máy chủ 11 4.3. Map Reduce 13 4.4. Google file system 20 4.5. Hadoop 22 5. Tổng kết 23 TÀI LIỆU THAM KHẢO 24 TÓM TẮT NỘI DUNG VÀ GIỚI THIỆU ĐỀ TÀI Đề tài “Điện toán đám mây ” tìm hiểu các định nghĩa, chức năng, nguyên tắc hoạt động và các ứng dụng của điện toán đám mây trong thực tế cuộc sống. 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 đế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ầng CNTT 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ải pháp cho tình trạng này. Điện toán đám mây là một cuộc dịch chuyển cách mạng trong đó việc tính toán sẽ được chuyển từ máy tính cá nhân và thậm chí cả các máy chủ ứng dụng doanh nghiệp, cá nhân đến một đám mây máy tính. Đám mây là một hình tượng để chỉ đến tập các máy chủ ảo hóa có thể cung cấp các nguồn tài nguyên của máy tính khác nhau cho khách hàng của họ. Người sử dụng của hệ thống này chỉ cần được quan tâm tới các dịch vụ máy tính đang được yêu cầu. Cái chi tiết bên dưới hệ thống của nó như thế nào thì được ẩn khỏi người dùng. Các dữ liệu và các dịch vụ cung cấp nằm trong các trung tâm dữ liệu của đám mây có khả năng mở rộng lớn và có thể được truy cập ở bất kỳ đâu, từ bất kỳ thiết bị được kết nối trên thế giới. Điện toán đám mây là một kiểu tính toán mà ở đó các công việc CNTT được cung cấp như một dịch vụ trên internet đến nhiều khách hàng bên ngoài và khách hàng được tính tiền theo sự sử dụng dịch vụ của họ. Nhiều nhà cung cấp điện toán đám mây đã xuất hiện và có một sự tăng trưởng đáng kể trong việc sử dụng dịch vụ này. Google, Microsoft, Yahoo, IBM và Amazon đã bắt đầu cung cấp dịch vụ điện toán đám mây. Trong đó Amazon là nhà tiên phong trong lĩnh vực này. Các công ty nhỏ hơn như SmugMug, một trang web lưu trữ hình ảnh trực tuyến, có sử dụng dịch vụ điện toán đám mây để lưu trữ tất cả các dữ liệu và thực hiện một số dịch vụ của mình. Điện toán đám mây được sử dụng trong các lĩnh vực khác nhau như web hosting, 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.. 1. Điện toán đám mây Một điều đang xảy ra ngày hôm nay tại thế giới máy tính, dữ liệu và các chương trình đang được chuyển dịch từ máy tính để bàn và văn phòng công ty lên các máy chủ và được cài đặt trong "những đám mây tính toán", nói chung, đang có một chuyển dịch địa lý của việc tính toán. Điện toán đám mây chính xác là gì? Chúng ta sẽ bắt đầu bằng một định nghĩa: "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ác trung tâm dữ liệu trong đám mây và có thể được truy cập từ bất kỳ thiết bị kết nối nào qua internet ". Điện toán đám mây là một mô hình mới trong ngành công nghiệp máy tính, nơi việc tính toán và lưu trữ dữ liệu được chuyển đến một đám mây máy tính. Nó đã trở thành một trong công nghệ được chú ý của ngành công nghiệp. Khái niệm cốt lõi của điện toán đám mây, là nguồn tài nguyên điện toán to lớn mà chúng ta cần sẽ được đặt trong các đám mây và chúng ta sẽ kết nối với chúng và sử dụng chúng khi cần thiết. Đ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ức mạ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ả 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ác mạ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ắt nguồn từ biểu tượng giống đám mây được sử dụng để đại diện cho những mạng phức tạp trong sơ đồ nguyên lý(schematic). Nó đại diện cho tất cả những phức tạ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. Tính toán bắt đầu với thời đại máy tính mainframe. Đã có những mainframe lớn và tất cả mọi người kết nối với chúng thông qua thiết bị đầu cuối câm (dumb terminal). Mô hình cũ của doanh nghiệp máy tính là gây nên sự bất tiện và gò bó cho người ngồi ở các thiết bị đầu cuối câm, vì họ chỉ có thể làm những gì họ được "ủy quyền" để làm. Họ bị lệ thuộc vào quản trị viên máy tính. Những nguời quản trị viên máy tính, chứ không phải họ, sẽ cho phép họ làm việc hoặc sửa chữa những vấn đề của họ. Họ có không có cách nào để ở lại đó làm việc cho đến khi những sáng kiến mới nhất nảy ra. Các máy tính cá nhân là một cuộc cách mạng nhằm thay đổi áp đặt và bất tiện của hoạt động tính toán tập trung. Có một loại tự do trong việc sử dụng máy tính cá nhân. Nhưng điều này sau đó được thay thế bởi các kiến trúc máy chủ, với các máy chủ doanh nghiệp và những loại khác được thực hiện trong ngành công nghiệp. Điều này đã làm cho chắc chắn là tính toán được hoàn tất và nó sẽ không làm trùng lắp các nguồn lực đã có. Tất cả các máy tính đã được thực hiện tại các máy chủ. Internet đã tăng trưởng mạnh mẽ trong rất nhiều vòng của những máy chủ này. Với Điện toán đám mây chúng ta đã đến một sự giải quyết cho những vấn đề trên một cách đầy đủ hơn. Chúng ta trở lại cơ sở hạ tầng điện toán tập trung. Nhưng ở trong môi trường được cải tiến đó tại thời điểm này chúng ta có thể dễ dàng truy cập thông qua internet và nắm toàn quyền điều khiển qua truy cập mạng đó. 2. Đặc điểm của điện toán đám mây Một định nghĩa cho điện toán đám mây có thể được đưa ra như là một mô hình máy tính mới mà ở đó dữ liệu và các dịch vụ được đặt tại các trung tâm dữ liệu có thể mở rộng trong các đám mây và có thể được truy cập từ bất kỳ thiết bị nào qua internet. Đám mây điện toán là một cách để cung cấp các dịch vụ khác nhau trên các máy ảo được cấp phát trong một tập hợp các máy tính vật lý lớn nằm trong đám mây. Điện toán đám mây trở nên tập trung chỉ khi chúng ta suy nghĩ về cái mà CNTT đã luôn luôn mong muốn - một cách để tăng năng lực hoặc thêm các khả năng khác nhau vào thiết lập hiện tại mà không cần đầu tư vào cơ sở hạ tầng mới, đào tạo nhân viên mới hoặc cấp giấy phép mới phần mềm. Và đám mây điện toán đã cung cấp một giải pháp tốt hơn. Chúng ta có khả năng tính toán lớn và khả năng lưu trữ ở trong môi trường phân tán của đám mây. Điện toán đám mây phải làm thế nào để khai thác khả năng của các tài nguyên và làm cho các tài nguyên sẵn sẵn sàng như một thực thể duy nhất mà có thể được thay đổi để đáp ứng các nhu cầu hiện tại của người dùng. Cơ sở của Điện toán đám mây là tạo ra một tập các máy chủ ảo rộng lớn và khách hàng sẽ truy cập chúng. Bất thiết bị truy cập web nào cũng có thể được sử dụng để truy cập vào các nguồn tài nguyên thông qua các máy chủ ảo. Căn cứ vào tính toán nhu cầu của khách hàng, cơ sở hạ tầng được phân bổ cho khách hàng có thể được tăng lên hoặc hạ xuống. Nhìn từ quan điểm kinh doanh, điện toán đám mây là một phương pháp để giải quyết khả năng mở rộng và những mối quan tâm cho các ứng dụng quy mô lớn, trong đó bao gồm việc chi phí ít hơn. Bởi vì tài nguyên được phân bổ cho khách hàng có thể dựa trên nhu cầu khác nhau của khách hàng và có thể được thực hiện mà không phiền phức nào, các nguyên cần thiết là rất ít. Một trong những thành tựu quan trọng của điện toán đám mây có thể khái quát là xử lý dữ liệu lớn gấp 1000 lần không nhất thiết phải thực hiện với sự phức tạp hơn 1000 lần thông thường. Khi số lượng dữ liệu tăng, các đám mây dịch vụ điện toán có thể được sử dụng để quản lý việc tải một cách hiệu quả và làm cho công việc xử lý dễ dàng hơn. Trong thời đại của máy chủ doanh nghiệp và máy tính cá nhân, phần cứng là tiêu chuẩn chính cho khả năng xử lý, chúng phụ thuộc vào cấu hình phần cứng của máy chủ. Nhưng với sự ra đời của đám mây máy tính, các hàng hóa đã thay đổi với chu kỳ và byte - tức là trong dịch vụ điện toán đám mây, người dùng được tính dựa trên số lượng các chu trình được thực hiện hay là số lượng byte được dịch chuyển. Các phần cứng hoặc các máy mà các ứng dụng được chạy thì được ẩn khỏi người sử dụng. Số lượng phần cứng cần thiết cho tính toán được thực hiện bởi trình quản lý và nói một cách khái quát là khách hàng được tính chi phí dựa trên cách ứng dụng sử dụng các nguồn tài nguyên. Những Đặc Điểm Của Điện Toán Đám Mây: 2.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ện toá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ất bạ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ệc khô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ập nhậ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 sao củ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ào trong trạng thái chạy của nó. 2. 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ện bở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ác má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ổn hại. 2.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ì hai máy chủ có thể xử lý 2.000 giao dịch trong một giây. 2.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ững dị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ời rạ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ừ đó. 2.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ý. 2.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 ảo hóa đầy đủ. 2.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ác nhau 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ụng thương mại. 3. 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ạng internet vấn đề đã được giải quyết bởi sự xuất hiện của dịch vụ điện toán đám mâ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ấp dị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ền thố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 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ính toá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ới mộ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ĩa vớ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à chi phí 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ãng phí 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ũng khô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ài nguyê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ụng tà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ối mạ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 đối vớ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ây thì 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ách hà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 cho những gì họ dùng. 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ây củ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 lo lắ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. 4. Công nghệ. 4.1. Kiến trúc của ứng dụng điện toán đám mây. 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ầng phầ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ới nhau như một hệ thống phục vụ cho việc lưu trữ và xử lý dữ liệu và các ứng dụ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ụng chạ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ân tá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ững phầ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ều bả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ính toá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ần mề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ều chỉ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à 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 CPU trên một giờ hoặc số Gb dữ liệu di chuyển trong một giờ. 4.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ụng củ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ững thiết bị, những hệ thống nhỏ lại với nhau để trở thành một hệ thống lớn đáp ứng nhữ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ính toá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 đám mâ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 ứng dụ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 đám mâ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ần cứ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ư thế nào. Ứng dụng thứ nhất là Xen hypervisor cung cấp các lớp trừu tượng giữa phầ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ến trì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 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 Xen rấ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ên trong hệ thống. Enomalism có thể sử dụng để dẫn các luồng tính toán vào đám mâ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ột máy chủ từ xa. Nó mang tất cả những tính năng như: triển khai kế hoạch tính toán, cân bằng tải, tránh xung đột tài nguyên… Enomalism cũng là một ứng dụ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 đơn giả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. 4.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ệu cự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ột cá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 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ẽ quan tâ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ương trì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ối nộ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àng tră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ớn cá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ác quá 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ượng cá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ính toá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ình tí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 thi trong khoảng thời gian cho phép. Các vấn đề về việc song song hóa tính toá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 đơn giả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ừu tượ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 song hó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ấy rằ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ột giao diện đơn giản và mạnh mẽ, cho phép song song hóa và phân tán dữ liệu trong các phép toán lớn một cách tự động, giúp cho ta thu được hiệu năng cao nhấ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. Ở 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ính toá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ột tậ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ết yê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ột bà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ả. 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ừ trong mộ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 : EmitIntermediate(w,”1”); reduce(String key,Iterator values): //key: chữ cái cần đếm //values:danh sách các số đếm trong map int result = 0; với mỗi giá trị v trong values: result += ParseInt(v); Emit(AsString(result)) ; Hàm map thêm vào mỗi từ một số tương ứng với số lần xuất hiện của nó (trong ví dụ đơn giản trên là ‘1’). Hàm reduce làm nhiệm vụ cộng tất cả các số đếm của từ đó. 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 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ào thà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ởi ngườ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ừ 16-64MB,có thể điều chỉnh thông qua các tham số tùy chọn). Ở đây, hệ thống điện toán đám mây đã đưa nguyên tắc chia nhỏ vào để thực hiện quá trình tính toán củ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 gian và không hiệu quả, để tiếc kiệm thời gian thực thi chương trình, hệ thống tiến hành chia chương trình lớn thành các tiến trình nhỏ để thực hiện tính toán trên các vi xử lý (hệ thống phần cứng song song tạo nên hệ thống điện toán đám mây) để tiến hành tính toán chương trình song song để cuối cùng gộp lại một kết quả. Tiếp theo, nó sẽ tạo nhiều bản sao của chương trình trên cụm máy tính trong đám mây điện toán. Nguyên tắc sao chép cũng được đưa vào ứng dụng trong hệ thống điện toán đám mây, trên mỗi cụm máy tính trong đám mây điện toán thực hiện một tiến trình mà chương trình giao phó, tiến trình này sẽ được tạo ra nhiều bản sao để cho các máy tính trong cụm máy tính thực hiện. Một trong số các bản sao của chương trình sẽ là chương trình master. Các chương trình còn lại sẽ là worker, là chương trình sẽ thực thi các tác vụ do master giao phó. Có tất cả là M tác vụ Map và R tác vụ Reduce cần được thực thi. Chương trình master chọn các worker rãnh rỗi để gán cho tác vụ Map hoặc Reduce. Worker được gán thực thi tác vụ Map đọc nội dung của mảnh giá trị đầu vào tương ứng, nó phân tích giá trị đầu vào thành các cặp khóa/giá trị và chuyển chúng đến cho hàm Map người dùng tự định nghĩa. Các cặp giá trị key/value trung gian (kết quả của hàm Map) sẽ được lưu vào bộ nhớ đệm. Sau đó, các cặp giá trị trong vùng nhớ đệm này sẽ được ghi xuống vùng nhớ địa phương, và được phân thành R vùng. Vị trí của các cặp khóa/giá trị này (trên bộ nhớ địa phương) sẽ được chuyển về cho master. Chương trình master sau đó sẽ chuyển vị trí của chúng cho các worker được gán tác vụ Reduce. Khi một worker thực thi tác vụ Reduce nhận được các vị trí của các vùng nhớ từ master, nó dùng các lời gọi thủ tục từ xa (RPC- Remote Procedure Call) để đọc các giá trị này. Sau khi worker đọc xong tất cả các cặp giá trị trung gian này, nó sẽ sắp xếp lại chúng theo khóa bằng cách gom nhóm các cặp có cùng khóa lại với nhau. Nếu số lượng các file trung gian này quá lớn so với bộ nhớ thì chúng ta sẽ phải cần có một hàm sắp xếp ngoài Sau đó các worker thực thi tác vụ Reduce chuyển khóa và tập các dữ liệu tương ứng đến hàm Reduce do người dùng định nghĩa, kết quả output thu được là kết quả cuối cùng. Sau khi tất cả các tác vụ Map và Reduce đều hoàn tất, chương trình master gọi đến chương trình user program, trả về đoạn code tiếp theo trong chương trình. Chấp nhận lỗi Thư viện MapReduce được thiết kế để giúp tính toán trên các lượng dữ liệu vô cùng lớn của hàng trăm hàng ngàn máy, do đó chúng cần phải có cơ chế chấp nhận lỗi. Đây là sự áp dụng của nguyên tắc tự phục vụ vào hệ thống điện toán đám mây, đám mây điện toán có khả năng tự phục hồi lại hoạt động của hệ thống khi xảy ra một số lỗi nào đó trong các quá trình thực thi của từng phần nhỏ trong hệ thống tính toán. Lỗi xảy ra ở Worker Để kiểm tra lỗi ở worker,chương trình master tiến hành ping các máy worker sau mỗi một khoảng thời gian nhất định, nếu một worker nào không trả lời thì Master sẽ xem như nó đang xảy ra lỗi, các tác vụ map hay reduce đang thực thi ở worker lỗi sẽ tiến hành reset lại và gán cho worker khác. Ở đây có áp dụng nguyên tắc linh động để khắc phục lỗi hệ thống, chương trình được chia nhỏ thành các tiểu trình nên các tiểu trình giống nhau có thể linh động thực thi tại các phần cứng vi xử lý khác nhau và khi một tiểu trình bị lỗi thì tiểu trình khác có thể thay thế để thực hiện nhiệm vụ của hệ thống giao phó. Đối với tác vụ map đã hoàn tất ở worker lỗi cũng phải tiến hành reset lại do kết quả trung gian được lưu trữ ở vùng nhớ địa phương và chúng ta không thể truy cập đến chúng. Đối với tác vụ reduce thì ngược lại, ta không cần phải reset chúng vì kết quả cuối cùng của tác vụ này được lưu trong vùng nhớ toàn cục, ta có thể truy xuất chúng một cách dễ dàng. Lỗi xảy ra ở Master Nhằm có thể khôi phục master trong trường hợp xảy ra lỗi, master sẽ tiến hành ghi checkpoint sau khoảng thời gian cố định. Khi lỗi xảy ra thì một bản sao mới có thể bắt đầu từ đoạn checkpoint đã lưu. Nhưng nếu chúng ta chỉ có 1 master thì khi master bị lỗi toàn bộ quá trình tính toán MapReduce sẽ bị hủy, client khi đó phải kiểm tra trường hợp này và tự khởi động lại quá trình nếu muốn. Tác vụ backup. Đây là một áp dụng của nguyên tắc dự phòng vào việc giải quyết bài toán trong đám mây điện toán, nó giúp cho hoạt động tính toán không bị mất khi sử ra sự cố. Một trong các nguyên nhân thường xảy ra làm tăng thời gian hoàn tất tác vụ MapReduce là các “straggler”. ”Straggler” là các máy có khoảng thời gian hoàn tất một trong số các tác vụ cuối của Map hoặc Reduce dài một cách bất thường. ”Straggler” có thể là bất cứ máy nào trong số các máy trong hệ thống đám mây đang được sử dụng. Có rất nhiều nguyên nhân tạo nên “straggler”, ví dụ như một máy tính trong hệ thống có ổ đĩa cứng không tốt, khi hoạt động có thể gặp một số trục trặc làm giảm tốc độ truy xuất bình thường của ổ cứng từ 30Mb/s xuống thành 1Mb/s chẳng hạn. Hệ thống lặp lịch cho các cụm máy tính lúc này phải gán tác vụ khác cho máy là nguyên nhân làm chậm tốc độ thực thi MapReduce (dựa trên sự so sánh tốc độ CPU, truy xuất bộ nhớ, hệ thống lưu trữ của máy địa phương, băng thông của mạng). Một vấn đề mới nhất mà Google gặp phải là một lỗi trong đoạn code khởi tạo tác vụ MapReduce, nó làm cho các cache của CPU không thể hoạt động, quá trình tính toán của máy tính bị lỗi do đó mà giảm xuống khoảng 100 lần. Google đã tạo ra một phương pháp nhằm giảm bớt tác hại do các “straggler” gây ra. Khi các tác vụ MapReduce gần hoàn tất, master sẽ tạo ra các tác vụ back up cho các tác vụ đang thực thi và gán cho các workers rãnh rỗi thực hiện. Quá trình MapReduce sẽ kết thúc khi tác vụ nguyên thủy hoặc tác vụ back up hoàn tất. Đối với các tác vụ MapReduce nhỏ, phương pháp này chỉ giúp cải thiện hiệu năng một vài phần trăm, nhưng đối với các tác vụ MapReduce lớn thì chúng giúp cải thiện hiệu năng rất đáng kể. Bên trên là biểu đồ so sánh tốc độ thực thi của chương trình sắp xếp viết theo MapReduce của Google. Chương trình thực hiện sắp xếp khoảng 1 tetrabyte dữ liệu. Biểu đồ đầu tiên là tốc độ đọc các giá trị input,biểu đồ bên dưới là tốc độ thực hiện sắp xếp và cuối cùng là tốc độ xuất ra kết quả.Biểu đồ (a) thể hiện tốc độ thực thi của tác vụ MapReduce hoạt động bình thường không có các straggler, biểu đồ (b) là khi thực hiện gặp phải các straggler trong hóa trình kết thúc tác vụ mà không dùng cơ chế backup,biểu đồ (c) là khi dùng cơ chế backup trong quá trình thực thi MapReduce. Chúng ta nhận thấy tốc độ thực thi bình thường vào khoảng 1057s, khi gặp phải các straggler mà không có cơ chế backup ta sẽ phải mất 1283s, và cuối cùng khi áp dụng cơ chế backup và phải bỏ đi 200 tác vụ do các straggler này gây ra chúng ta đạt được tốc độ là 933 giây chỉ hơn 5% so với tốc độ thực thi bình thường nhưng lại tăng 44% nếu so với tốc độ thực thi khi gặp phải các straggler. 4.4. GOOGLE FILE SYSTEM (GFS) Google file system là hệ thống dữ liệu phân tán được Google phát triển dành cho các ứng dụng lớn. Nó được thiết kế nhằm đem lại sự truy xuất dữ liệu tin cậy và hiệu quả cho các dữ liệu của một cụm lớn các máy tính thành phần của đám mây điện toán. Nó cung cấp chế độ chấp nhận lỗi để có thể chạy được trên các hệ thống phần cứng có yêu cầu không cao, đem lại hiệu năng tổng hợp tốt trên số lượng lớn các máy client Các file được chia thành các khúc dữ liệu 64Mb,các dữ liệu này thường được đọc với cường độ cao hơn nhiều so với ghi và xóa. Nó được thiết kế và tối ưu hóa dành cho các cụm máy tính lớn bao gồm cả các máy tính có phần cứng nghèo nàn, do đó nó phải có khả năng chịu được cường độ lỗi lớn tại các node độc lập và khả năng mất mát dữ liệu. Ở một số các thiết kế khác cho hệ thống dữ liệu phân tán thường là tối ưu hóa thông lượng của dữ liệu. Cấu trúc của Google File System. Một cụm GFS chức một máy Master và nhiều máy Chunkserver và nó có thể được truy xuất bởi nhiều client như trong hình bên dưới.Một máy có thể vừa là client truy xuất dữ liệu từ chunkserver khác vừa có thể là một chunkserver lưu trữ dữ liệu, tuy nhiên chúng ta cần phải đảm bảo tránh được xung đột và không làm giảm tốt độ thực thi. Các file được chia thành các mảnh có kích thước xác định. Mỗi mảnh được Master gán cho một tên duy nhất không thay đổi dài 64 bit tại thời điểm khởi tạo các mảnh. Các chunkserver lưu trữ các mảnh này như là một file Linux. Để đảm bảo độ tin cậy cao, các mảnh file được lập bản sao và lưu trữ trên nhiều chunkserver khác nhau, mặc định là chúng ta sẽ lưu trữ 3 bản sao. Node Master không thường lưu trữ bất kỳ một phân khúc dữ liệu nào,nó chỉ lưu trử các siêu dữ liệu liên quan đến các phân khúc như bản ánh xạ các nhãn 64-bit đến vị trí lưu trữ vật lý và vị trí trong file gốc, vị trí của tất cả các bản sao dữ liệu, các tiến trình đang đọc hoặc ghi lên 1 phân khúc, tình trạng các phân khúc hoặc ảnh của của phân khúc để dành cho việc tạo thêm các bản sao…Các siêu dữ liệu này được update liên tục bởi các chunkserver sau khoảng thời gian cố định. Ngoài ra node Master luôn giữ kết nối và kiểm tra trạng thái của các chunkserver bằng các gửi và nhận các thông điệp phản hồi liên tục sau khoảng thời gian cố định. Chúng ta sẽ phân tích một tiến trình đọc file đơn giản theo hình bên trên. Đầu tiên dựa vào kích thước cố định được quy ước trước của 1 mảnh dữ liệu,client dùng chương trình biên dịch tên của file và các byte offset thành một danh mục các mảnh dữ liệu chứa trong 1 file. Sau đó nó gửi đến node master một yêu cầu có chứa tên file và danh mục các mảnh dữ liệu. Master phản hồi lại với con trỏ các mảnh dữ liệu và vị trí các bản sao theo yêu cầu của client. Các client lưu trữ các thông tin này trong bộ nhớ cache và sử dụng chúng như chìa khóa để cho phép truy xuất dữ liệu. Sau đó client tiến hành gửi yêu cầu truy xuất dữ liệu đến 1 trong các bản sao thường là bản sao gần nhất. Trong yêu cầu truy xuất của client phải có con trỏ mang địa chỉ của mảnh đó và phạm vi byte cần truy xuất ttrong mảnh. Các quá trình đọc tiếp theo không cần có sự kết nối đến node master nữa cho đến khi các thông tin lưu trữ trong bộ nhớ cache bị xóa. Trong thực tế thì client thường yêu cầu cho phép truy xuất đến nhiều mảnh dữ liệu lưu trữ trên nhiều nơi khác nhau cùng một lúc và node master cũng có thể gửi các thông tin cần thiết cho client một cách tức thời. Trái ngược với các hệ thống file thông thường,GFS không được khởi tạo trong nhân hệ điều hành mà chúng được truy xuất thông qua một thư viện riêng nhằm tránh hao phí quá lớn Kích thước của một mảnh Kích thước của mảnh dữ liệu là một tham số vô cùng quan trọng trong thiết kế.Google chọn kích thước là 64MB, lớn hơn một block của hệ thống dữ liệu truyền thống.Mỗi bản sao của mảnh dữ liệu được lưu trữ trên các chunkserver như là một hạt nhân Linux,nó chỉ được mở rộng ra khi cần thiết Một kích thước mảnh dữ liệu lớn cho chúng ta nhiều lợi thế. Đầu tiên nó giảm số lượng kết nối của client đến node master bởi vì việc đọc và ghi trên cùng một mảnh dữ liệu chỉ đòi hỏi một lần gửi yêu cầu đến node master để lấy vị trí của mảnh dữ liệu này. Điều này làm tăng hiệu năng của chương trình rất nhiều vì đa số các chương trình đều đọc và ghi các file có kích thước lớn một cách tuần tự. Ngay cả đối với các thao tác đọc ngẫu nhiên nhỏ thì các máy client cũng có thể dễ dàng lưu trong bộ nhớ cache thông tin của vài TetraByte mảnh dữ liệu. Thứ hai,vì kích thước các mảnh dữ liệu lớn hơn nên các client thường xuyên thực thi nhiều tác vụ khác nhau (đọc,ghi..) trên cùng một mảnh dữ liệu, điều này làm giảm hao phí về mạng bởi lúc này chỉ cần duy trì một kết nối từ client đến chunkserver thay vì phải khởi tạo nhiều kết nối khác nhau. Thứ ba nó giúp làm giảm kích thước của các siêu dữ liệu lưu trữ ở máy Master, điều này cho phép chúng ta có thể lưu trữ các siêu dữ liệu này trong bộ nhớ của Master làm tăng tốc độ phản hồi đến các máy client. 4.5. HADOOP Hadoop là một framework dùng để chạy các ứng dụng trên cụm các phần cứng không đòi hỏi cao về cấu hình. Hadoop khởi tạo một sơ đồ cho quá trình tính toán tên là MapReduce mà chúng ta đã nói ở phần trước đây. Chương trình ứng dụng được chia thành nhiều mảng nhỏ khác nhau,các mảnh này có thể được thực thi ở bất kỳ node nào trong cụm các máy tính. Thêm vào đó nó cung cấp một hệ thống file phân tán trên các node tính toán, cung cấp băng thông tổng hợp cao trên các cụm máy tính. Cả MapReduce và hệ thống file phân tán đều được thiết kế sao cho khi có lỗi xảy ra ở bất kỳ node nào thì chúng đều được quản lý bởi framework. Hadoop được viết bằng ngôn ngữ Java. Các tác vụ trong mỗi pha được thực thi trong một cơ chế chấp nhận lỗi. Nếu một hoặc nhiều node nào đó xảy ra lỗi trong quá trình tính toán thì tác vụ được gán cho các node bị lỗi đó sẽ được được phân tán ta cho các node còn lại. Đối với MapReduce thì các tác vụ Map và Reduce có độ cân bằng nạp rật tốt,điều này cho phép các tác vụ xảy ra lỗi có thể được thực thi lại với một chi phí nhỏ hơn. Framework Hadoop MapReduce có cấu trúc chủ/tớ. Nó có một server master hay còn gọi là jobTracker và nhiều slave hay còn gọi là taskTrackers. JobTracker là điểm kết nối giữa người dùng và framework. Người dùng gửi các công việc lên jobTracker, các công việc này sẽ được đưa vào một hàng đợi xử lý theo nguyên tác FIFO. Sau đó jobTracker sẽ gán các công việc này cho các taskTracker. Các taskTracker này xử lý các tác vụ và quản lý sự di chuyển của dữ liệu trong các quá trình Map và Reduce. Hadoop có ứng dụng rất rộng rãi trong các hệ thống đám mấy điện toán hiện nay vì nó cung cấp một cơ chế sử dụng tài nguyên hệ thống tối ưu, chi phí thấp. Amazon sử dụng Hadoop để phân tích hàng trăm triệu session giao dịch. Báo NewYork Times sử dụng Hadoop cho việc xử lý hình ảnh. Yahoo sử dụng Hadoop cho công cụ tìm kiếm của mình và hỗ trợ cho hệ thống khảo sát quảng cáo… 5. Tổng kết. Điện toán đám mây là một khái niệm trừu tượng vô cùng rộng lớn, với rất nhiều mặt và nhiều khía cạnh khác nhau, mặc dù nhóm đã tham khảo và tìm hiểu từ rất nhiều tài liệu nghiên cứu của Google, cũng như của nhiều trường đại học danh tiếng khác trên thế giới, nhưng do những hạn chế về thời gian và môn học nên nhóm không thể phân tích toàn diện hơn về mô hình điện toán đám mây. Tuy nhiên bài báo cáo trên cũng đã cho chúng ta cái nhìn tổng quan và một số hiểu biết nhất định về công cụ điện toán rất mạnh này. Tài liệu tham khảo

Các file đính kèm theo tài liệu này:

  • docĐiện toán đám mây.doc
Luận văn liên quan