Chúng ta có thể thấy công nghệ được áp dụng mọi nơi trong cuộc sống, từ giải trí, liên lạc đến xử lý những bài toán lớn của giới khoa học như dự báo thời tiết, mô phỏng thí nghiệm hạt nh
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐH CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN TÍNH TOÁN LƯỚI Chủ đề
Trang 2Lời cảm ơn
Em xin gửi lời cảm ơn chân thành đến thầy Nguyễn Phi Khứ Thầy đã tận tình giảng dạy và chỉ dẫn em trong suốt quá trình học tập, qua đó em đã học được rất nhiều kiến thức hữu ích của môn học tính toán lưới
Trang 3Mục lục
Trang 4Lời giới thiệu
Ngày nay, Big Data đang ngày càng trở nên một xu hướng trên toàn thế giới Đây là
cơ hội cũng như thách thức cho các nhà khoa học máy tính hiện nay Báo cáo này sẽ trình bày về sự bùng nổ thông tin, Big Data và tính toán lưới - giải pháp cho Big Data
Trang 5I Big Data
1 Sự bùng nổ dữ liệu và Big Data
Trong cuộc sống hiện đại ngày nay, công nghệ thông tin đang đóng một vai trò hết sức quan trọng Chúng ta có thể thấy công nghệ được áp dụng mọi nơi trong cuộc sống, từ giải trí, liên lạc đến xử lý những bài toán lớn của giới khoa học như dự báo thời tiết,
mô phỏng thí nghiệm hạt nhân, dự đoán kinh tế… Cùng với sự xâm nhập của công nghệ vào cuộc sống con người, lượng dữ liệu được con người tạo ra hay thu thập cũng bùng nổ một cách chóng mặt
Đầu tiên phải kể đến lượng dữ liệu phát sinh bởi hoạt động của con người hàng ngày
Ở lĩnh vực kinh tế, Amazon bán 306 hàng hóa mỗi giây (năm 2012) Trong khi đó với eBay, hơn 1 tỉ lượt truy cập và 44 tỉ giao tác SQL được thực thi mỗi ngày Đồng thời, hãng này còn quản lý 248 triệu người dùng cùng hơn 1 tỉ ảnh
Hình 1: Lượng dữ liệu được hỗ trợ bởi những doanh nghiệp Oracle ngày nay
Trang 6Ở lĩnh vực giải trí, Facebook quản lý hơn 750 triệu thành viên (tính đến 2011), 2.5 tỉ mẩu nội dung được chia sẽ, 2.7 tỉ lượt like, 300 triệu lượt upload ảnh mỗi ngày Với Youtube, một website hàng đầu trong lĩnh vực chia sẽ video, trong mỗi phút có 100 giờ video được upload lên, 6 tỉ giờ video được xem mỗi tháng.
Hình 2: Thống kê tỉ lệ các loại dữ liệu
Bên cạnh lượng dữ liệu khổng lồ được phát sinh bởi hoạt động con người hàng ngày,
số lượng nguồn dữ liệu ngày càng đa dạng cũng góp phần trong quá trình bùng nổ thông tin hiện nay Dữ liệu từ một lượng rất lớn các sensor thời tiết ghi lại thông tin về thời tiết: độ ẩm, nhiệt độ… Dữ liệu video từ hàng chục đến hàng trăm ngàn camera quan sát trong những thành phố, dữ liệu GPS được ghi lại từ các phương tiện người dùng, dữ liệu ảnh vệ tinh chụp bề mặt trái đất… Tất cả đã và đang tạo nên một bức tranh bùng nổ dữ liệu trong thời đại ngày nay
Sự bùng nổ dữ liệu dẫn đến những phương thức lưu trử cũng như xử lý mới Khái
niệm Big Data ra đời từ những đòi hỏi đó.
Trang 7Định nghĩa: Big Data đề cập tới những bộ dữ liệu có kích thước vượt quá khả năng
của những phần mềm, công cụ lưu trữ, xử lý phổ biến hiện nay Kích cỡ mục tiêu của big data thay đổi liên tục theo thời gian Ví dụ, vào năm 2012, kích cỡ vào khoảng từ vài chục terabyte đến vài petabyte cho một bộ dữ liệu Kích cỡ mục tiêu thay đổi liên tục vì sự phát triển không ngừng của những hệ quản trị cơ sở dữ liệu truyền thống
Có 4 đặc tính chính của big data:
• Dung lượng: Các doanh nghiệp lớn hiện nay có một lượng lớn dữ liệu được sinh ra, thu thập hàng ngày, lên đến hàng terabyte, thậm chí hàng petabyte Ví
dụ như việc phân tích 350 số ghi điện hàng năm để phân tích nhu cầu tiêu thụ điện hoặc phân tích 12 terabyte Tweet được tạo ra mỗi ngày để phân tích đánh giá về sản phẩm của người dùng
• Vận tốc: Có những ứng dụng sử dụng big data cần tốc độ xử lý trong thời gian thực như phân tích tình hình chứng khoán dựa trên một lượng lớn dữ liệu chứng khoán thu thập được trong thời gian vừa qua
• Sự đa dạng: Big Data không ám chỉ một loại dữ liệu cụ thể nào Nó có thể là dữ liệu có cấu trúc, không có cấu trúc, dữ liệu văn bản, dữ liệu thu thập từ các cảm biến, dữ liệu đa phương tiện như audio, video,… Các thông tin, tri thức có thể được khám phá khi phân tích những loại dữ liệu này cùng với nhau
• Tính xác thực: Vì Big Data có số lượng rất lớn và được thu thập từ rất nhiều nguồn khác nhau, do đó độ tin cậy của Big Data là một vấn đề rất quan trọng Những dữ liệu sai có thể dẫn đến những quyết định sai lầm, gây hậu quả lớn
2 Giá trị của Big Data
Trang 8Big Data có thể được xem như là tương lai của ngành điện toán Lượng dữ liệu khổng
lồ của Big Data cho phép chúng ta phân tích và có được những thông tin, tri thức quý giá từ bên trong nó
Với Big Data, chúng ta có thể có được những câu trả lời cho những câu hỏi mà trước đây không thể giải quyết được: Các tổ chức tài chính có thể tìm ra cách phát hiện gian lận tốt hơn, các công ty bảo hiểm có thể biết được khách hàng tiềm năng của mình, những nhà đầu tư chứng khoán có thể dự đoán xu thế cổ phiếu trong tương lai, việc dự báo thời tiết sẽ chính xác hơn, những nghi phạm khủng bố được phát hiện nhanh chóng hơn,…
3 Những thách thức
Big Data mang lại nhiều giá trị nhưng cũng có những thách thức cần phải giải quyết Khó khăn đầu tiên là Big Data được thu thập từ nhiều nguồn, với những định dạng không cấu trúc như văn bản hoặc video Muốn tận dụng được những thông tin từ những loại dữ liệu như trên, phải có những kỹ thuật tiên tiến trong các lĩnh vực như
xử lý ngôn ngữ tự nhiên, thị giác máy tính,…
Thách thức tiếp theo là làm sao lọc ra được những dữ liệu quan trọng nhất trong một lượng lớn dữ liệu để chuyển cho người những người cần thiết trong thời gian thực.Khó khăn cuối cùng và cũng là khó khăn chủ yếu khi làm việc với Big Data là: Vì lượng dữ liệu cực lớn của nó, làm sao để thu thập, lưu trữ, và xử lý một cách hiệu quả với chi phí tài chính và thời gian chấp nhận được
4 Các bước xử lý chính cho Big Data
Theo Oracle, các giải pháp cho Big Data gồm 4 loại chính
• Thu thập Big Data
• Tổ chức Big Data
• Phân tích
Trang 9• Ra quyết định
Hình 3: Các bước xử lý cho Big Data
Đối với Thu thập Big Data: Bao gồm các giải pháp thu thập, lưu trữ Big Data Như đã
đề cập ở trên, Big Data vượt quá những năng lực xử lý truyền thống Do đó, cần những công nghệ mới cho việc lưu trữ những bộ dữ liệu Big Data Hiện nay, một số giải pháp đã được đưa ra như NoSQL của Oracle, Amazon S3 của Amazon, Google BigTable Sau khi thu thập, dữ liệu Big Data cần được tổ chức, xử lý Hiện nay MapReduce mà cụ thể là Hadoop là một trong những giải pháp tốt nhấu cho việc tổi chức xử lý Big Data trên hệ thống tính toán lưới Chi tiết hơn về Hadoop MapReduce
sẽ được đề cập ở phần sau của báo cáo này Ở bước tiếp theo, các giải pháp cho việc phân tích Big Data hiện nay đã được các công ty lớn nghiên cứu như Oracle Data Warehousing, IBM Info Sphere Warehouse Cuối cùng là những ứng dụng ra quyết định phù hợp với từng mục đích sử dụng
II Grid Computing cho Big Data
1 Giới thiệu về grid computing
Trang 10Để quản lý, lưu trữ những loại dữ liệu như Big Data và thực hiện những phân tích, tính toán trên chúng, cần có những máy tính có năng lực tính toán cực cao cũng như tài nguyên khổng lồ Vì lý do đó, những siêu máy tính gồm hàng trăm ngàn bộ vi xử
lý đã được xây dựng từ những năm 1960
Hình 4: Siêu máy tính Blue Gene/P tại phòng thí nghiệm Argonne National Lab
với hơn 250.000 bộ vi xử lý được nhóm lại thành 72 rack/cabinet
bởi một mạng quang học tốc độ cao
Tuy nhiên, để xây dựng những hệ thống siêu máy tính như vậy đòi hỏi lượng kinh phí rất lớn, nguồn điện năng lớn và ổn định để duy trì hoạt động, hệ thống làm mát,…
Trang 11Hình 5: Một số thông tin về chi phí xây dựng siêu máy tính [4]
Do đó, tính toán lưới đã được phát triển để phục vụ những bài toán lớn với chi phí chấp nhận được
Một hệ tính toán lưới là một hệ thống gồm nhiều máy tính được kết nối, gom cụm với nhau Tính toán lưới là sử dụng các tài nguyên từ nhiều máy tính để đạt được một mục tiêu nào đó, thường là những bài toán có độ phức tạp tính toán cao trên những dữ liệu cực lớn Một hệ tính toán lưới có thể được xem như là một hệ phân tán (distributed system) Điểm khác biệt giữa tính toán lưới với các hệ tính toán hiệu năng cao truyền thống (ví dụ như tính toán phân cụm – cluster computing) là nó được gắn kết không chặt chẽ và đồng nhất bằng, và thường phân tán địa lý trên diện rộng Mặc dù một hệ thống lưới có thể chuyên biệt cho một ứng dụng cụ thể, thông thường một hệ thống
Trang 12lưới được dùng cho nhiều mục đích khác nhau Những hệ thống lưới thường được xây dựng với những thư viện middleware đa chức năng
Tính toán lưới là một dạng của tính toán phân tán, nhờ đó, một siêu máy tính ảo hình thành bởi nhiều máy tính liên kết với nhau để thực thi một bài toán lớn Đối với một
số ứng dụng cụ thể, tính toán lưới và tính toán phân tán có thể được xem như là một dạng của tính toán song song dựa trên những máy tính hoàn chỉnh kết nối với nhau thông qua mạng máy tính Điều này khác với một siêu máy tính truyền thống, khi những vi xử lý kết nối với nhau qua một bus máy tính nội bộ tốc độ cao
Hình 6: Minh họa một hệ thống tính toán lưới
Một trong những chiến lược chính của tính toán lưới là sử dụng middleware để chia chương trình thành nhiều phần cho nhiều máy tính xử lý Tính toán lưới hoạt động theo kiểu tính toán phân tán, bao gồm tập hợp của những cụm máy tính quy mô lớn
Trang 132 Những ưu điểm của tính toán lưới
a Tận dụng tài nguyên tính toán rảnh rỗi.
Một trong những nguyên lý cơ bản của tính toán lưới là thực hiện một chương trình trên nhiều máy khác nhau Khi một máy bận, không thể thực thi một task nào đó, task
đó có thể được chuyển sang một máy khác trên hệ thống Có hai điều kiện cho ngữ cảnh này Thứ nhất, ứng dụng phải được thi hành từ xa Thứ hai, máy tính ở xa phải thỏa mãn điều kiện về phần cứng, phần mềm và những yêu cầu tài nguyên từ phía ứng dụng
Trong hầu hết các tổ chức, có một lượng lớn những tài nguyên tính toán rãnh rỗi Hầu hết những máy tính để bàn phải hoạt động chỉ 5% tổng thời gian trong một ngày Tính toán lưới cung cấp một framework để tận dụng những tài nguyên rảnh rỗi này để tăng một cách đáng kể hiệu suất sử dụng tài nguyên
Bên cạnh tài nguyên xử lý, tính toán lưới còn có thể tận dụng tài nguyên lưu trữ Cụ thể, những không gian lưu trữ không được dùng đến có thể được gộp thành một không gian lưu trữ ảo lớn hơn nhiều
b Khả năng CPU song song
Đây có thể được xem là điểm mạnh nhất của tính toán lưới Một chương trình có thể viết bằng những giải thuật được chia thành nhiều phần nhỏ hơn gọi là subjob Mỗi subjob được thi hành trên một máy khác nhau trên hệ thống lưới Các subjob càng không có nhu cầu liên lạc với nhau, các ứng dụng càng có khả năng mở rộng
Một trở ngại của khả năng song song hóa là khả năng phân chia của giải thuật Nếu giải thuật chỉ có thể phân chia thành một số lượng giới hạn các subjob, khả năng mở rộng sẽ bị ảnh hưởng Ví dụ, hệ thống lưới có 100 máy liên kết với nhau Giải thuật chỉ cho phép chia thành 10 subjob Khi đó, chỉ có tối đa 10 máy có thể chạy cùng một lúc 90 máy khác không phải làm gì cả Khi đó, hệ thống lưới sẽ không hoạt động tối
Trang 14Trở ngại thứ 2 là nếu các phần phụ thuộc với nhau Khi đó sẽ dẫn đến tình trạng các subjob phải chờ lẫn nhau làm kéo dài thời gian xử lý Ngoài ra, nếu các subjob phụ thuộc nhau, sẽ tốn thêm thời gian liên lạc giữa các máy trong hệ thống lưới
c Tài nguyên ảo và tổ chức cho việc hợp tác ảo
Một khả năng khác của tính toán lưới là cung cấp một môi trường cho sự hợp tác giữa các người dùng Tính toán lưới có thể cung cấp những chuẩn quan trọng cho phép những hệ thống không đồng nhất làm việc với nhau để hình thành một hệ thống máy tính ảo lớn cung cấp những tài nguyên khác nhau
Hình 7: Tính toán lưới ảo hóa những tài nguyên phân tán và không đồng nhất
d Sử dụng những tài nguyên khác
Trang 15Ngoài CPU và khả năng lưu trữ, tính toán lưới còn cho phép sử dụng thêm những tài nguyên khác Ví dụ, người dùng cần tăng băng thông internet để chạy engine search cho data mining Khi đó công việc có thể được chia cho các máy có kết nối tới internet độc lập với nhau.
Một ví dụ khác là một vài máy tính được cài đặt phần mềm có bản quyền giá cao mà người dùng yêu cầu Khi đó, các job có thể được gửi tới các máy tinh đó để được xử lý
Các tài nguyên như máy in cũng thường được tận dụng trong các hệ thống lưới Thông thường máy in chỉ được kết nối tới 1 máy trong lưới và các máy khác có thể gửi yêu cầu in tới máy đó
e Cân bằng tài nguyên
Một hệ thống lưới liên kết một lượng lớn những tài nguyên của nhiều máy độc lập thành một hệ thống lớn Đối với những ứng dụng chạy trên hệ thống lưới, nó có thể cân bằng tài nguyên bằng cách lập lịch các job trên các máy ít được sử dụng
Trang 16Hình 8: Các job được đưa tới để xử lý trên các phần đang đảm nhận ít việc hơn để
cân bằng tải
Khi các job cần liên lạc với nhau hoặc với những tài nguyên lưu trữ, hệ thống lưới có thể lập lịch để tối ưu hóa băng thông liên lạc và tối ưu hóa khoảng cách cho việc liên lạc
Trang 17Tuy nhiên, với tính toán lưới, chi phí sẽ rẻ hơn rất nhiều Một hệ thống lưới có chi phí xây dựng khá rẻ và phân tán địa lý trên diện rộng Do đó, nếu có một nguồn điện, CPU, hệ lưu trữ hay bất kỳ một bộ phận nào tại một vị trí bị hỏng, các phần các của hệ thống sẽ gần như không bị ảnh hưởng Phần mềm quản lý hệ thống lưới có thể tự động tái cấp phát các job tới những máy khác trên lưới khi phát hiện một phần nào đó bị hỏng hóc
Hình 9: Cấu hình hệ thống đảm bảo độ tin cậy
g Quản lý
Việc ảo hóa các tài nguyên và tích hợp các hệ thống không đồng bộ thành hệ thống lưới sẽ giúp tạo ra những cơ hội để quản lý hạ tầng IT phân tán tốt hơn Tính toán lưới cho phép quản lý độ ưu tiên của những dự án khác nhau Trước đây, mỗi dự án phải tự quản lý tài nguyên IT và những chi phí liên quan Thông thường, những tài nguyên
Trang 18lưới có thể làm cho quá trình quản lý độ ưu tiên sử dụng tài nguyên đơn giản hơn cho người dùng
Hình 10: Người quản trị có thể điều chỉnh các chính sách để có thể cấp phát
tài nguyên tốt hơn
3 MapReduce
a Giới thiệu MapReduce
Vậy làm thế nào để tận dụng tính toán lưới cho việc xử lý Big Data? Như đã đề cập ở phần I, có rất nhiều vấn đề được đặt ra: giải pháp thu thập dữ liệu, lưu trữ dữ liệu, xử
lý dữ liệu, phân tích dữ liệu … Trong phần này chúng ta chỉ bàn đến một trong những vấn đề cốt lõi là xử lý dữ liệu cho Big Data trên hệ thống lưới Một giải pháp cho vấn
đề này là MapReduce, một mô hình lập trình được sử dụng rất phổ biến hiện nay
MapReduce là một framework để xử lý những bài toán có thể song song hóa trên một lượng dữ liệu khổng lồ, sử dụng một số lượng lớn các máy tính (node) được kết nối
Trang 19với nhau như là một cluster (nếu các node nằm trên cùng một mạng cục bộ và sử dụng phần cứng tương tự nhau) hoặc như là một hệ thống lưới (nếu các node nằm trên một
hệ thống phân bố trên diện rộng và có phần cứng không đồng nhất) Việc xử lý tính toán có thể diễn ra trên các dữ liệu được lưu trữ không cấu trúc hoặc có cấu trúc (ví dụ như cơ sở dữ liệu) MapReduce có thể tận dụng vị trí của dữ liệu, xử lý các dữ liệu nằm gần để hạn chế việc truyền dữ liệu trên mạng MapReduce gồm có 2 phần chính:
• Bước Map: Tại bước này, master node nhận input, chia nó thành những bài
toán nhỏ hơn, và phân phối nó ra những node con Mỗi node con có thể lặp lại bước này, nghĩa là chia bài toán nó nhận được thành những bài toán nhỏ hơn và phân phối ra các node con khác (điều này tạo nên một cấu trúc cây nhiều tầng) Hoặc mỗi node con có thể trực tiếp xử lý bài toán Khi các node con hoàn thành xử lý bài toán, nó truyền kết quả về master node trực tiếp của nó
• Bước Reduce: Master node sẽ tập hợp các kết quả từ các node con trực tiếp
của nó và kết hợp chúng lại để tạo nên output cho bài toán mà nó nhận được
Nhìn vào chức năng của các bước Map và Reduce ta có thể thấy nó cho phép xử lý các bước này một cách phân tán Mỗi phép Map độc lập với nhau, do đó tất cả các map có thể được thực thi một cách song song, mặc dù trong thực tế nó bị giới hạn bởi
số lượng các nguồn dữ liệu độc lập và số lượng CPU gần mỗi nguồn
Sử dụng MapReduce đặc biệt hiệu quả khi phải đối phó với dữ liệu cực lớn Do đó, nó được xem là một giải pháp rất tốt cho Big Data Một ví dụ là MapReduce có thể sắp xếp hàng petabyte dữ liệu chỉ trong vòng vài giờ Việc song song hóa cũng giúp khôi phục nếu xảy ra failure một phần trên các server hoặc bộ lưu trữ trong thời gian xử lý: Nếu một mapper hoặc reducer hỏng, công việc có thể được lập lịch lại với giả định input data vẫn còn
Một quá trình MapReduce là một quá trình tính toán phân tán gồm 5 bước:
• Chuẩn bị Map input: Hệ thống MapReduce chỉ định các bộ xử lý Map, gán đầu vào key value K1 cho mỗi bộ xử lý sẽ làm việc trên nó, và cung cấp cho bộ xử