Theo NIST: “Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources e.g., networks, servers, storage, applicatio
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
MAPREDUCE TRONG
MICROSOFT HDINSIGHT
Nghành đào tạo: Khoa học máy tính
Môn: Điện toán lưới và đám mây
GV: PGS.TS Nguyễn Phi Khứ HV: Nguyễn Khánh Hoài Nam MSHV: CH1401013
Trang 2TP HỒ CHÍ MINH, NĂM 2015
MỤC LỤC
Danh sách hình:
Trang 3NỘI DUNG
Phần 1: Tổng quan về Cloud Computing
Lịch sử phát triển hơn 30 năm của ngành công nghệ phần mềm tuy chưa phải
là dài, nhưng đã chứng kiến những cuộc cách mạng mang tính nhảy vọt Một trong những thay đổi mang tính quyết định và có ý nghĩa nhiều nhất là sự thay đổi của kiến trúc phần mềm (software architect) Có thể kể đến việc chuyển từ cấu trúc Mainframe sang kiến trúc Client-server những năm cuối thập kỉ 80 của thế kỉ 20
Và đến những năm đầu của thập niên 2010 này, chúng ta lại chứng kiến một cuộc cách mạng nữa khi ngành công nghiệp phần mềm đang từng bước chuyển mình sang một kiến trúc mới: Cloud computing – điện toán đám mây
1)Định nghĩa cloud computing – điện toán đám mây
Hình 1: Giới thiệu về cloud computing.
Cloud-computing hiện vẫn là mẫu hình đang tiến hoán (evolting pagadism) , những định nghĩa về mô hình này vẫn chưa thống nhất và các khái niệm hiện nay
Trang 4dựa trên các tài liệu được sử dụng khá rộng rãi như wikipedia, hay định nghĩa của NIST - National Institute of Standards and Technology Trên thực tế, có thể có nhiều cách định nghĩa khác Theo NIST:
“Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.”
Tạm dịch: “Điện toán đám mây là một mô hình cho phép truy cập mạng dễ dàng, theo yêu cầu, đến một tài nguyên điện toán chia sẻ (như network, máy chủ, không gian lưu trữ, ứng dụng và dịch vụ), có thể nhanh chóng cung cấp và thu hồi với chi phí quản lý và tương tác với nhà cung cấp dịch vụ tối thiểu.”
2)Các đặc tính của điện toán đám mây
Cloud computing – điện toán đám mây liệu có đặc tính gì liên quan đến
“đám mây”? Câu trả lời là không “Cloud” hoàn toàn mang nghĩa marketing 2.1. 5 đặc tính cơ bản (Essential characteristics):
• On-demand self-service – Tự phục vụ theo nhu cầu Khách hàng có thể tự tăng
cường năng lực tính toán, ví dụ như thời gian server hay không gian lưu trữ trên network, một cách hoàn toàn tự động dựa theo nhu cầu mà không cần phải thương lượng với nhà cung cấp dịch vụ Đặc tính này thường được biết đến với tên gọi Pay-as-you-go
• Broad network access – Truy cập thông qua mạng băng thông rộng Truy cập
mạng băng rộng Khả năng tính toán được cung cấp thong qua network và được truy cập thông qua một cơ cấu chuẩn, mà có thể dung bằng nhiều nền tảng client khác nhau (như mobile phones, laptops, và PDA)
• Resource pooling – Quay vòng tài nguyên Tài nguyên điện toán của nhà cung
cấp được quay vòng để phục vụ cho nhiều khách hàng sử dụng một mô hình multi-tenant, với các tài nguyên thực và ảo hóa khác nhau được cấp phát và tái cấp phát một cách động (dynamically) tùy thuộc vào yêu cầu của khác hàng Không phụ thuộc vị trí … khách hàng về tổng quát không có quyền hay thậm chí là không có hiểu biết về vị trí chính xác của các tài nguyên được cung cấp
Trang 5nhưng có thể xác định vị trí của các tài nguyên cấp cao hơn (ví dụ như nước, bang, datacenter) Các tài nguyên bao gồm không gian lưu trữ, tính toán, bộ nhớ, băng thông mạng và các máy ảo
• Rapid elasticity - Co giãn nhanh Khả năng tính toán có thể được cung cấp một
cách nhanh chóng và co giãn, trong một số trường hơp là tự động, để có thể giãn ra hoặc co vào phụ thuộc vào nhu cầu người dùng Đối với khách hàng, tài nguyên hiện có được coi như như vô hạn và có thể mua với bất kì số lượng nào vào bất kì thời gian nào
• Measured Service Các hệ thống cloud tự động điều khiển và tối ưu hóa tài
nguyên sử dụng bằng cách trừu tượng hóa tương ứng với kiểu dịch vụ (lưu trữ, khả năng xử lý, băng thông, và số người dùng active) Tài nguyên sử dụng có thể được giám sát, điều khiển và báo cáo một cách trong suốt cho cả nhà cung cấp và khách hàng của dịch vụ đã dùng
5 đặc tính ở trên do NIST đưa ra Một số tài liệu đưa thêm đặc tính không phụ thuộc vào địa điểm – Location Independence Điều này có thể hiểu như có thể
sử dụng các dịch vụ của cloud computing từ mọi nơi Tuy nhiên, đặc tính này có thể coi như đồng nhất với đặc tính Broadband network access nên không được xét đến trong báo cáo này
2.2. 3 mẫu hình dịch vụ (3 service model)
3 mẫu hình dịch vụ cơ bản mà cloud computing đang được triển khai là Infrastucture as a Service (IssA), Platform as a Service (PaaS) và Software as a Service (SaaS)
Trang 6Hình 2: Các kiểu hình dịch vụ đối với Cloud computing
• On-Premises: Ứng dụng chạy hoàn toàn trên hệ thống của doanh nghiệp Đây
là kiểu dịch vụ phổ biến hiện nay Doanh nghiệp quản lý hoàn toàn về hạ tầng mạng, hệ thống lưu trữ, máy chủ,ảo hoá, hệ điều hành, phần mềm tầng giữa, các lớp runtime, dữ liệu và ứng dụng Trong phần còn lại của báo cáo này, các ứng dụng chạy trên hệ thống doanh nghiệp như thế này sẽ được gọi chung là các ứng dụng on-premises Các ứng dụng/dịch vụ On-premises được hiểu như các ứng dụng và dịch vụ chạy trên nền tảng cơ sở hạ tầng của doanh nghiệp, chứ không phải trên cloud
• Cung cấp dịch vụ cơ sở hạ tầng (Infrastructure as as Service): Khách hàng
chỉ quản lý từ phần mềm tầng giữa – middeware trở lên, còn lại các tầng từ hệ điều hành trở xuống do nhà cung cấp dịch vụ quản lý Các dịch vụ dạng IaaS hiện có:
Computers (Amazon EC2, Rackspace, GoGrid )
Storage (Amazon S3, MobileMe, Google Drive )
Elasticity (Rightscale…)
Bandwidth (Limelight, Amazon CloudFront…)
• Cung cấp dịch vụ cơ sở hạ tầng (Platform as a Service): Khách hàng chỉ quản
lý ứng dụng và dữ liệu của mình, các tầng phía dưới, từ tầng runtime trở xuống
do nhà cung cấp dịch vụ quản lý Các dịch vụ dạng PaaS hiện có như:
Trang 7Salesforce.com, Apprenda SaaSGrid, Google App Engine, Microsoft Azure, Appistry, Talis Platform.
• Cung cấp dịch vụ phần mềm (SaaS): Khách hàng sử dụng phần mềm của nhà
cung cấp Các dịch vụ dạng SaaS hiện có như: Google Apps, Zoho, Acrobat.com, iWork.com, Kashflow, FreeAgent, WordPress.com, MobileMe, Salesforce.com
2.3. 4 mẫu đóng gói (4 deployment models)
• Private cloud Kiến trúc đám mây được điều khiển bởi riêng một tổ chức Nó
có thể được quản lý bởi tổ chức hoặc một bên thứ ba và có thể tồn tại
• Community cloud Kiến trúc đám mây được chia sẻ giữa một số tổ chức và hỗ
trợ một cộng đồng cụ thể có cùng các mối quan tâm (ví dụ: nhiệm vụ, yêu cầu
an ninh, chính sách quản lý và … )Nó có thể được quản lý bởi các tổ chức hoặc một bên thứ 3, và có thể tồn tại on-premises hoặc off-premises
• Public cloud Kiến trúc đám mây được được công bố ra cộng đồng hoặc một
nhóm các doanh nghiệp lớn và do một tổ chức cung cấp dịch vụ cloud sở hữu
• Hybrid cloud Kiến trúc đám mây là một tổ hợp của 2 hay nhiều cloud (private,
community hoặc public), vẫn giữ những thực thể riêng biệt nhưng có cùng một công nghệ chuẩn hóa hay có chủ quyền, cho phép dữ liệu và tính di động của ứng dụng
3)Cloud –computing
Trước hết, phải nói rằng cloud-computing hoàn toàn không phải phải là một kiến trúc phần mềm mới Như Lawrence Ellison, chủ tịch tập đoàn Oracle từng phát biểu: Cloud computing chỉ là “những gì chúng ta đã làm” và “việc duy nhất cần thay đổi trong thời gian tới là quảng cáo, có thể thấy qua việc minh họa các dạng dịch vụ cloud computing ở trên, như các dịch vụ máy chủ riêng ảo, hosting, webmail,… đều đã được nhắc đến từ lâu, trước khi thuật ngữ cloud-computing xuất hiện Nhiều người còn cho rằng, cloud computing là một thuật ngữ mang tính marketing hơn là một xu hướng thật sự Đây còn là vấn đề gây tranh cãi
Trang 8Tuy nhiên, ko thể phủ nhận cloud-computing đã thật sự hiện hữu và đem lại những lợi ích thật sự cho ngành công nghiệp phần mềm và người dùng Có thể
kể đến trường hợp của The New York Times, đã xử lý thành công hàng terabytes (nghìn tỷ byte) dữ liệu với hàng trăm “compute units” của Amazon EC2 (sẽ được trình bày dưới đây) chỉ trong 36h Nếu không phải là cloud computing, có thể đã mất đến hàng tuần hoặc hàng tháng để xử lý toàn bộ dữ liệu này, với chi phí cao hơn nhiều
Trong vài năm trở lại đây, với sự tham gia của các tập đoàn phần mềm lớn như Microsoft, Google, hay Amazon, cloud computing đã có những bước tiến mạnh mẽ
Đầu tiên, đó là việc cung cấp một nền tảng lập trình hợp nhất Điều này cho phép các nhà phát triển có thể nhanh chóng xây dựng ứng dụng đám mây trên nền tảng mà công ty cung cấp, với những cấu trúc và API được thiết kế dành riêng cho cloud-computing Thứ hai, một công cụ quản lý hợp nhất, cho phép khách hàng sử dụng cloud-computing có thể tuỳ biến dịch vụ cho phù hợp với nhu cầu của mình một cách đơn giản và dễ dàng Những điều này khiến cloud-computing có thể trở thành một xu hướng nổi bật trong thời gian tới
Lợi ích của Cloud-computing : Hãy tưởng tượng một công ty với
khoảng 100 nhân viên cần sử dụng các hệ thống phần mềm văn phòng cũng như nghiệp vụ Để hệ thống này có thể là việc một cách hiệu quả, chi phí bỏ ra là không nhỏ: Chi phí mua phần cứng (máy chủ, máy tính cá nhân cho từng nhân viên, các thiết bị mạng), phần mềm (hệ điều hành, các phần mềm văn phòng và nghiệp vụ), chi phí nhân công (thuê người lắp đặt, cài đặt, quản trị, bảo trì hệ thống) Chi phí này là không nhỏ và khiến nhiều công ty gặp khó khăn trong việc triển khai tin học hóa doanh nghiệp
Ngoài ra, có thể trong hoạt động của doanh nghiệp, có những lúc tải của hệ thống vượt qua năng lực hiện có Để phục vụ điều này thì doanh nghiệp buộc phải nâng cấp hệ thống của mình, thêm máy chủ, cải tiến phần mềm Chi phí này là rất lớn Nhưng sau khi nâng cấp hệ thống, có những lúc tải lại xuống thấp, khiến cho năng lực hệ thống trở nên lãng phí
Trang 9Với Cloud Computing, những vấn đề này được giải quyết một cách căn bản:
- Không cần hệ thống máy chủ và hệ thống mạng nội bộ trong công ty, chỉ cần các máy client chi phí thấp được kết nối mạng Internet
- Giảm bớt chi phí phần mềm vì không cần các phần mềm nghiệp vụ cài riêng Có thể chỉ cần một hệ điều hành và một trình duyệt để làm việc
- Giảm bớt chi phí nhân công vì không cần quản trị hệ thống
- Giảm bớt chi phí điện năng lãng phí(Go Green)
- Linh hoạt và mềm dẻo khi có thay đổi về tải Khi cần tải nặng, hệ thống có thể tự tăng khả năng xử lý của mình lên mà không cần can thiệp, và cũng
tự động giảm năng lực xử lý của mình khi tải thấp
Hạn chế của Cloud computing: Tuy nhiên, cloud computing không phải là
giải pháp toàn diện và có thể áp dụng cho mọi trường hợp phần mềm Nói cách khác, cloud computing sẽ không hoàn toàn thay thế các giải pháp dịch vụ phần mềm hiện có:
- Trước hết, dữ liệu của doanh nghiệp, cá nhân được upload lên trên cloud Điều này đồng nghĩa với doanh nghiệp, cá nhân phải tin tưởng vào nhà cung cấp dịch vụ Ngoài ra, ở một số doanh nghiệp với dữ liệu đặc thù, như ngân hàng, có những luật quy định doanh nghiệp phải lưu trữ dữ liệu của khách hàng on-premises Trong những trường hợp như vậy, việc triển khai ứng dụng trên public cloud là điều không thể
- Tốc độ truy xuất ứng dụng Với một số dịch vụ, người dùng không thể xác định hay thiết lập vị trí của dữ liệu (trừu tượng hoá hoàn toàn ở cấp độ trung tâm dữ liệu) Nếu người dùng và trung tâm dữ liệu ở xa nhau, thì sẽ dẫn đến hạn chế trong tốc độ truy xuất và tăng độ trễ
- Để giải quyết vấn đề này, một số nhà cung cấp đưa ra giải phái CDN – Content Delivery Network, cho phép lưu trữ các dữ liệu mà người dùng thường xuyên truy cập ở một trung tâm dữ liệu gần với họ, nhằm tăng tốc
độ truy xuất và giảm độ trễ Ví dụ với Amazon S3 và dịch vụ Blob của Windows Azure Storage
- Ngoài ra, bảo mật là vấn đề rất lớn Nhà cung cấp dịch vụ cam kết bằng hợp đồng, nhưng đối với một số khách hàng bảo mật chỉ có thể đạt được
Trang 10mức độ cần thiết khi họ toàn quyền kiểm soát dữ liệu (cả về phần cứng và phần mềm – vật lý và logic) và áp dụng các chính sách phù hợp.
Trong đó, bảo mật vẫn là mối quan tâm lớn nhất, theo khảo sát của InformationWeek:
Hình 3: Mối quan tâm đối với cloud computing
4)Các nền tảng Cloud computing phổ biến:
Như đã nói ở trên, Cloud computing đã và đang trở thành một xu hướng nổi bật trong ngành công nghệ phần mềm và nhận được sự hậu thuẫn mạnh mẽ từ những công ty phần mềm hàng đầu Tuy nhiên, trong khuôn khổ của đề tài này, em chỉ đề cập đến 3 nền tảng được sử dụng phổ biến nhất (đúng hơn là có khả năng phát triển lớn nhất trong tương lai)
4.1. Amazon EC2
Website: http://aws.amazon.com/ec2/
EC2 là từ viết tắt của Elastic Cloud Computing Đây là dịch vụ cung cấp khả năng tính toán tuỳ biến trên cloud Để lưu trữ dữ liệu, Amazon cung cấp song song dịch vụ S3 (Simple Storage Service)
Trang 11Cơ sở của EC2 là các máy ảo mà Amazon gọi là AMI – Amazon Machine Images, chứa một hệ điều hành, các ứng dụng và dữ liệu Khách hàng có thể quản
lý bao nhiêu instance của mỗi AMI chạy vào mỗi thời điểm Amazon cung cấp 3 lựa chọn cho việc tạo các AMI này: Standard, High-Memory và High-CPU, với kích cỡ từ 1 nhân ảo chạy trên nền 32-bit, cho đến 8 nhân ảo chạy trên nền 64bit
Cụ thể:
Standard: dành cho các ứng dụng tổng quát
High-Memory Instances: Dành cho các ứng dụng yêu cầu nhiều bộ nhớ, như
các Web Server
High-CPU: dành cho các ứng dụng cần nhiều tài nguyên CPU hơn RAM,
thích hợp với các ứng dụng yêu cầu tính toán nặng
EC2 hỗ trợ các ngôn ngữ sau:
- Java
- PHP
- Ruby
- Các ngôn ngữ trên nền tảng Microsoft NET
4.2. Google App Engine
Website: http://code.google.com/appengine/
Google App Engine là giải pháp chạy ứng dụng trên cơ cấu hạ tầng của Google, cho phép nhà phát triển viết ứng dụng và upload lên các trung tâm dữ liệu của Google
Google App Engine hỗ trợ 2 ngôn ngữ chính:
- Java, và các ngôn ngữ giống như Java (Jruby, Groovy, Scala,…) chạy trên môi trường Java 6
- Python 2.5.2 (phiên bản 2.6 chưa được hỗ trợ, phiên bản 3 đang được cân nhắc), chạy trên nền Python Runtime Environment Ứng dụng phải được viết hoàn toàn trên nền Python, các extensions viết trên nền C không được
hỗ trợ
Trang 12Google App Engine cũng cung cấp một môi trường Sandbox (tương tự như các máy ảo) và một hệ cơ sở dữ liệu Datastore Datastore không phải là CSDL quan hệ truyền thống mà thuộc dạng “schemeless”, với nền tảng lưu trữ là các thực thể - entity và thuộc tính – property Trong báo cáo này, chúng ta sẽ thấy Datastore tương tự như Table service của Windows Azure Storage Phiên bản App Engine Business dành cho khách hàng lớn sẽ hỗ trợ BigTable, một hệ quản trị cơ
sở riêng của Google
Google App Engine cho phép sử dụng các tài khoản Google để xác thực các dịch vụ, đồng thời có thể sử dụng các công cụ Google khác trong dịch vụ của mình
4.3. Microsoft Windows Azure:
Website: http://windowsazure.com
Windows Azure là giải pháp cloud computing được đầu tư một cách nghiêm túc nhằm thương mại hóa Microsoft đã xây dựng 16 data centers trên khắp thế giới và vẫn đang tiếp tục xây dựng thêm Điều này đảm bảo cho tương lai của Windows Azure, ít nhất là trong thời gian tới
Một trong những nhược điểm của Windows Azure Platform hiện nay là tài khoản miễn phí dành cho nhà phát triển đã ngừng cung cấp Các nhà phát triển buộc phải mua các gói dịch vụ nếu như muốn tiếp tục làm việc với nền tảng này Windows Azure là một hệ điều hành quản lý cả các server và các dịch vụ Windows Azure chạy trên các hệ điều hành Windows server 2008 R2 với hỗ trợ Hyper-V Có thể coi Windows Azure là một hệ điều hành ảo chứa nhiều máy ảo chạy trên phần cứng có khả năng co giãn rất lớn nhưng đã được ảo hóa Sự ảo hóa giữa các dịch vụ nhân của Windows Azure và phần cứng được quản lý bởi Fabric Controller Fabric controller quản lý quá trình tự động hóa đầu cuối (end-to-end) của các dịch vụ Windows Azure, từ việc cung cấp phần cứng cho đến việc duy trì
sự sẵn sàng của dịch vụ
Trang 13Hình 4: Vai trò của Fabric Controller trong Windows Azure
Windows Azure bao gồm 3 dịch vụ chính: Tính toán - compute, lưu trữ - storage và quản lý - management Trong đó HDInsight là một dịch vụ tính toán chạy trên nền Hadoop hỗ trỡ thuật toán Map Reduce
Trang 14Phần 2: Giới thiệu về HDInsight
Hình 5: Các loại dữ liệu có thể xử lý trong HDInsight
HDInsight cũng sẽ bao gồm cả Apache HBase, một cơ sở dữ liệu NoSQL dạng cột chạy chèn trên hệ thống Hadoop Distributed File System (HDFS) Điều này cho phép bạn xử lý giao dịch lớn (OLTP) hoặc dữ liệu không truyền thống cho phép các trường hợp sử dụng như có các trang web tương tác hoặc ghi dữ liệu cảm biến gửi lưu trữ về Azure Blob
Trang 15Hình 6: Mô hình xử lý NoSQL
HDInsight cũng được tích hợp với nền tảng dữ liệu Hortonworks, vì vậy bạn
có thể di chuyển dữ liệu Hadoop từ một trung tâm dữ liệu trên trang tới điện toán đám mây Azure để sao lưu, phát triển/ kiểm tra, và bối cảnh bùng nổ điện toán đám mây Sử dụng Hệ thống Nền tảng Phân tích của Microsoft, bạn còn có thể truy vấn cụm Hadoop tại chỗ và trên điện toán đám mây cùng một lúc
HDInsight là một sản phẩm phân phối của Hadoop được hỗ trợ bởi điện toán đám mây Điều này có nghĩa là HDInsight có khả năng xử lý mọi lượng dữ liệu,
mở rộng quy mô từ terabyte để petabyte theo yêu cầu Bạn có thể tăng tốc bất kỳ
số lượng điểm tiếp xúc vào bất cứ lúc nào Chúng tôi chỉ tính phí cho các phần xử
lý tính toán và dung lượng mà bạn thực sự sử dụng
Hình 7: Thanh điều chỉnh linh hoạt theo yêu cầu sử dụng
HDInsight có phần mở rộng cho các ngôn ngữ lập trình mạnh mẽ bao gồm, C
#, Java, NET, và nhiều hơn nữa Bạn có thể lựa chọn sử dụng ngôn ngữ lập trình của chính mình trên Hadoop cho sự sáng tạo, thiết lập, trình báo, và giám sát các công việc Hadoop
Hình 8: Các ngôn ngữ lập trình phổ biến để thao tác trên HDInsight
Trang 16Bạn có thể ngạc nhiên như thế nào dễ dàng là để quay về một cụm Hadoop trong đám mây Hãy tự xem và cảm nhận Chỉ trong 15 cú nhấp chuột hoặc 20 phút, bạn có thể tạo ra một cụm Hadoop HDInsight trên điện toán đám mây Với HDInsight, bạn thậm chí nhân cụm Hadoop trên cùng một bộ dữ liệu.
Hình 9: Giao diện khi tạo Data storage trên Azure
Trang 17Hình 10: Giao diện khi tạo một cụm Hadooop HDInsight
2)Kiến trúc HDInsight
Microsoft đã đóng góp rất lớn cho việc phát triển Windows Azure Blob (WASB) – một lớp giao tiếp đại diện cho sự lưu trữ của Windows Azure ở dạng hệ thống tập tin HDFS của một cụm Windows Azure HDInsight Microsoft tích cực tham gia vào mãng Hadoop và đặt rất nhiều nỗ lực trong dự án về Hive Stinger và đã đạt được sự tích hợp tốt nhất về an toàn trên nền tảng Windows