Tiếp theo đó, khóa luận giới thiệumột số hệ thống điển hình hiện nay; ở phần này, chúng ta sẽ thấy các hệ thống hỗ trợ đangđược sử dụng trong nhiều mạng máy tính lớn và nổi tiếng trên th
Trang 1TÓM TẮT
Nhu cầu cần mở rộng lưu trữ dữ liệu đang song hành với sự phát triển của công nghệhiện nay Để đáp ứng nhu cầu, các hệ thống hỗ trợ xử lý dữ liệu được ra đời và phát triển.Bằng phương pháp nghiên cứu và thực nghiệm, khóa luận trình bày về vấn đề mở rộnglưu trữ dữ liệu bằng các hệ thống file hỗ trợ xử lý dữ liệu lớn
Đầu tiên, khóa luận đưa ra vấn đề tại sao cần mở rộng lưu trữ dữ liệu, và lợi ích củaviệc dùng các hệ thống file để hỗ trợ việc xử lý lưu trữ Tiếp theo đó, khóa luận giới thiệumột số hệ thống điển hình hiện nay; ở phần này, chúng ta sẽ thấy các hệ thống hỗ trợ đangđược sử dụng trong nhiều mạng máy tính lớn và nổi tiếng trên thế giới Phần cuối, khóaluận nghiên cứu và đánh giá một số hệ thống điển hình như GlusterFS, Global FileSystem, Hadoop Mỗi hệ thống sẽ đưa ra các thông tin về cài đặt, cấu hình, sử dụng vàmột số thông tin liên quan tới hệ thống Phần đánh giá sẽ dựa trên kết quả thực nghiệm càiđặt và sử dụng hệ thống
i
Trang 2MỤC LỤC
TÓM TẮT i
LỜI MỞ ĐẦU 1
KÍ HIỆU VIẾT TẮT 3
CHƯƠNG 1 4
GIỚI THIỆU 4
CHƯƠNG 2 6
GIỚI THIỆU MỘT SỐ HỆ THỐNG LƯU TRỮ DỮ LIỆU LỚN HIỆN NAY 6
2.1 IBM General Parallel File System (GPFS) 6
2.2 Parallel Virtual File System (PVFS) 6
2.3 Lustre (file system) 6
2.4 Google File System 7
2.5 Hadoop 7
2.6 GlusterFS 7
2.7 Global File System (Red Hat GFS) 8
CHƯƠNG 3 9
TÌM HIỂU MỘT SỐ HỆ THỐNG ĐIỂN HÌNH 9
3.1 HỆ THỐNG HADOOP 9
3.1.1 Tổng quan 9
3.1.2 Các tính năng nổi bật 11
3.1.3 Hadoop Map/Reduce 11
3.1.4 Hadoop DFS 14
3.1.5 Cài đặt, cấu hình và sử dụng hệ thống Hadoop 14
3.1.6 Nhược điểm của Hadoop 19
3.1.7 Các ứng dụng của hệ thống Hadoop 19
3.2 HỆ THỐNG GLOBAL FILE SYSTEM 20
3.2.1 Tổng quan 20
3.2.2 Các tính năng nổi bật 21
3.2.3 Cấu trúc của GFS 22
Trang 33.2.4 Các chức năng của GFS 24
3.2.5 Cài đặt, cấu hình và sử dụng hệ thống 25
3.2.6 Nhược điểm của GFS 31
3.2.7 Các ứng dụng của hệ thống GFS 31
3.3 HỆ THỐNG GLUSTERFS 31
3.3.1 Tổng quan 31
3.3.2 Các tính năng nổi bật 31
3.3.3 Cấu trúc của GlusterFS 33
3.3.4 Cài đặt, cấu hình và sử dụng hệ thống 34
3.3.5 Nhược điểm của GlusterFS 42
3.3.6 Các ứng dụng của hệ thống GlusterFS 42
CHƯƠNG 4 43
ĐÁNH GIÁ HIỆU NĂNG CÁC HỆ THỐNG 43
4.1 Kết quả thực nghiệm 43
4.1.1 Một máy đóng vai trò làm server và client 43
4.1.2 Một server, một client 44
4.2 Đánh giá 44
KẾT LUẬN 46
PHỤ LỤC 47 TÀI LIỆU THAM KHẢO
iii
Trang 4LỜI MỞ ĐẦU
Nhu cầu về lưu trữ dữ liệu của con người trên tất cả mọi mặt: ngân hàng, tài chính,bảo hiểm, viễn thông, vận tải,giải trí, kinh doanh trực tuyến, điện lực, khoa học, quân sự,quốc phòng… ngày càng lớn, và tăng nhanh một cách không giới hạn Các phương tiện,thiết bị lưu trữ thông thường (đĩa từ, băng từ,…) dần không thể lưu trữ hết được khối dữliệu khổng lồ của con người Tất yếu con người phải nghĩ và nghiên cứu ra các phươngpháp để lưu trữ dữ liệu đáp ứng nhu cầu của mình
Nguy cơ do các sự cố như: mất trộm, hỏa hoạn, động đất, lũ lụt… sẽ làm dữ liệu củachúng ta có thể bị mất Đối với một số ngành như ngân hàng, tài chính, khoa học, an ninh,quốc phòng… thì việc mất dữ liệu gây thiệt hại lớn Lần nữa, vấn đề dữ liệu, buộc conngười phải tìm cách để có thể khôi phục được dữ liệu hay có thể đặt dữ liệu tại một nơi antoàn
Với các nhu cầu về lưu trữ dữ liệu; cùng với sự tò mò, ham mê nghiên cứu của conngười, đã có nhiều phương pháp lưu trữ dữ liệu ra đời và phát triển như: tăng thiết bị lưutrữ, cải tiến thiết bị lưu trữ, các hệ thống file có khả năng mở rộng lưu trữ lớn, mô hìnhserver-client…
Trên thế giới, vấn đề về lưu trữ dữ liệu và an toàn dữ liệu được quan tâm một cáchđặc biệt Nhưng tại Việt Nam, các vấn đề này, mới chỉ dừng ở mức nêu vấn đề chứ chưa
có một nghiên cứu, triển khai đáng kể nào
Khóa luận này, em xin trình bày nghiên cứu về một số hệ thống hỗ trợ xử lý dữ liệulớn Với hi vọng có thể ứng dụng vào một hệ thống thực sự trong tương lai
Khóa luận được trình bày theo bố cục:
Chương 1 trình bày sự cần thiết và ý nghĩa của việc mở rộng lưu trữ dữ liệu
Chương 2 giới thiệu một số hệ thống lưu trữ dữ liệu lớn hiện nay như: Lustre, GooleFile System, Global File System,…
Chương 3 tìm hiểu chi tiết về từng hệ thống Do thời hạn về thời gian, nên khóa luậnchỉ nghiên cứu 3 hệ thống điển hình là: Hadoop, Global File System, GlusterFS Trongchương này, sẽ trình bày về ý nghĩa thực tiễn của từng hệ thống, cấu trúc cũng như cáchvận hành hệ thống
Trang 5Chương 4 đưa ra kết quả thực nghiệm và đánh giá các hệ thống tìm hiểu được ởchương 3
Em xin chân thành cảm ơn thầy giáo hướng dẫn TS.Nguyễn Trí Thành đã tận tình
hướng dẫn, cho em những định hướng và ý kiến quý báu trong suốt quá trình làm khóaluận
Em xin chân thành cảm ơn tất cả các thầy cô giáo trong trường Đại học Công ĐHQG Hà Nội, đã giảng dạy, giúp đỡ em trong suốt quá trình học tập tại trường
nghệ-Hà Nội, ngày 22 tháng 5 năm 2009
Sinh viên
Đào Thị Thảo.
v
Trang 6KÍ HIỆU VIẾT TẮT
Từ viết tắt Từ gốc Nghĩa tiếng việt
ACL Access Control List Danh sách điều khiển truy cậpCLVM Cluster Logical Volume Manager Trình quản lý phân vùng logic của ClusterDLM Distributed Lock Manager Trình quản lý sự phân phối
GFS Global File System Hệ thống file Global
GlusterFS Gluster File System Hệ thống file gluster
GNBD Global Network Block Device Thiết bị chặn mạng toàn cầu
GPFS General Parallel File
RDMA Remote Direct Memory Access Truy cập bộ nhớ định hướng từ xaSAN Storage Area Network Mạng vùng lưu trữ
Trang 7CHƯƠNG 1.
GIỚI THIỆU
Các hoạt động của con người đặc biệt là các hoạt động kinh doanh của các doanhnghiệp (DN) ngày càng phát triển đi cùng sự phát triển của Thương Mại Điện Tử và cácứng dụng Multimedia đã làm cho nhu cầu lưu trữ ngày càng phát triển và cao hơn Ngoàicác phương thức sao lưu truyền thống như dùng Flashdisk, CD, DVD chỉ dành cho các dữliệu có dung lượng nhỏ phù hợp cho người sử dụng cuối và gia đình nhỏ thì đối với yêucầu lưu trữ dữ liệu có dung lượng lớn thì phải dùng đến các thiết bị phần cứng riêng biệtkhác
Bên cạnh khả năng lưu trữ, DN cũng đòi hỏi khả năng sao lưu các dữ liệu quan trọngcủa họ tốt hơn nhằm đảm bảo dữ liệu luôn được bảo về an toàn, hiệu quả Đặc biệt là đốivới các trung tâm dữ liệu thường có các ứng dụng nghiệp vụ khác nhau chạy trên nhữngnền tảng các hệ điều hành khác nhau như Windows, Linux, Unix,…luôn đòi hỏi mức độlưu trữ, sao lưu có một độ tin cậy cao nhất Lưu trữ, sao lưu trực tiếp hay thông qua hệthống mạng LAN là những phương thức chủ yếu mà các DN hay dùng Và lưu trữ như thếnào nhằm đảm bảo nguồn dữ liệu đó có thể được phục hổi nhanh chóng sau những sự cốnhư cháy nổ, động đất, khủng bố là yêu cầu mà các DN lớn luôn đòi hỏi nhằm đảm bảocho hoạt động của mình
Vì vậy, sớm hay muộn thì các DN cũng sẽ có nhu cầu cần phải mở rộng dung lượng
bộ nhớ để lưu giữ các loại dữ liệu của mình như: thư điện tử, tài liệu, cơ sở dữ liệu, đồ thị,các tệp dữ liệu ở dạng âm thanh, hình ảnh, hay các bảng tính… (những nhân tố quyếtđịnh sự thành công của phần lớn các DN) Bên cạnh đó, những xu thế và yêu cầu pháttriển mới cũng là yếu tố kích thích làm cho các DN luôn cảm thấy thiếu dung lượng nhớcần thiết cho việc lưu trữ dữ liệu của mình và có nhu cầu cấp bách cần phải mở rộng dunglượng hệ thống lưu trữ dữ liệu Ví dụ như:
- Các quy định gần đây của chính phủ (như quy định Sarbanes-Oxley) đòi hỏi các
DN phải duy trì và sao lưu rất nhiều loại dữ liệu mà rất có thể là họ sẽ xóa đi nếu nhưkhông có những quy định này
- Vì các lý do mang tính pháp lý, nhiều DN hiện nay phải tổ chức lưu trữ các tinnhắn và thư điện tử trong vòng 5 năm hoặc nhiều hơn nữa
vii
Trang 8- Khả năng xâm nhập, sự hoành hành của các loại virus máy tính và các phần mềmgián điệp (spyware) buộc các DN phải thực hiện sao lưu các dữ liệu của mình một cách
‘cảnh giác’ hơn và do đó đòi hỏi dung lượng lưu trữ dữ liệu lớn hơn nhiều
- Nhu cầu ngày càng cao của con người về việc lưu trữ các tệp đa phương tiện(Multimedia) có kích thước lớn như các tệp phim, video, và mong muốn nâng cao khảnăng truy cập thông tin của người sử dụng cũng là yếu tố đẩy mạnh nhu cầu tìm kiếm cácgiải pháp hiện đại và hoàn thiện phục vụ cho mục tiêu lưu trữ dữ liệu
Không chỉ có các DN cần thiết phải mở rộng dung lượng lưu trữ, mà còn có cáctrung tâm nghiên cứu khoa học, bộ quốc phòng, ….cũng cần mở rộng dung lượng nhớ đểlưu trữ khối dữ liệu khổng lồ của họ như NASA, FBI,
Từ những yêu cầu cần thiết của con người về mở rộng dung lượng lưu trữ, đặt ra vấn
đề cần nghiên cứu các giải pháp để mở rộng dung lượng nhớ Hiện nay, có nhiều phươngpháp để mở rộng dung lượng lưu trữ như: mở rộng thiết bị lưu trữ (các ổ đĩa lưu động, ổcứng ngoài, thiết bị lưu trữ của NetGear, IOMEGA, Buffalo…), lưu trữ trên các hệ thốngmạng trực tuyến, lưu trữ trên mạng máy tính… Các phương pháp đó mà kết hợp với các
hệ thống file lưu trữ lớn thì mang lại kết quả cao hơn rất nhiều Vì các hệ thống file lưutrữ không chỉ giúp cho việc tăng dung lượng nhớ gấp nhiều lần mà còn giúp cho việc tăngkhả năng truy xuất dữ liệu
Đã có nhiều nghiên cứu về các giải pháp mở rộng dung lượng lưu trữ, nhưng vấn đề
về các hệ thống file lưu trữ lớn, ở nước ta hiện nay, vẫn chưa được quan tâm, phổ biến Vìvậy, khóa luận này, em chọn đề tài nghiên cứu về các hệ thống lưu trữ lớn Chương 2,khóa luận giới thiệu về một số hệ thống đang được sử dụng hiện nay
Trang 9CHƯƠNG 2.
GIỚI THIỆU MỘT SỐ HỆ THỐNG LƯU TRỮ DỮ LIỆU
LỚN HIỆN NAY
2.1 IBM General Parallel File System (GPFS)
GPFS là một giải pháp quản lý file có thể mở rộng sự thực thi cao, nó cung cấp truycập nhanh, tin cậy tới một tập hợp file dữ liệu từ một máy đơn tới hàng trăm hệ thống[11] GPFS tích hợp vào trong môi trường bằng cách hợp lại lẫn lộn máy chủ và các thànhphần lưu trữ để cung cấp một cái nhìn thông thường tới file dữ liệu doanh nghiệp GPFScung cấp quản lý lưu trữ trực tuyến, có thể mở rộng truy cập và tích hợp thông tin về vòngđời các công cụ có khả năng quản lý hàng petabyte dữ liệu và hàng tỷ file Và GPFS đượcphát triển bởi IBM
2.2 Parallel Virtual File System (PVFS)
PVFS là hệ thống file song song mã nguồn mở PVFS mang các khái niệm vào/rasong song tiên tiến tới các sản phẩm hệ thống song song [12] Nó được thiết kế để mởrộng lưu trữ tới hàng petabytes và cung cấp tốc độ truy cập khoảng 100s của GB/s Ngoài
ra, PVFS còn được thiết kế để cung cấp sự thực thi cao cho các ứng dụng song song, nơithực hiện cùng lúc, lượng vào/ra lớn và sự truy cập nhiều file là phổ biến PVFS cung cấpchức năng phân phối vào/ra và metadata, và cho phép mở rộng tới hàng tera thiết bị đầutrên và hàng peta hệ thống
2.3 Lustre (file system)
Lustre là một đĩa hệ thống tập tin được chia sẻ, thường được sử dụng cho cụm máytính có quy mô lớn [13] Tên Lustre là do sự kết hợp từ của Linux và cluter Nó nhằm tớicung cấp một hệ thống file cho các cụm hàng chục hàng ngàn các máy với khả năng lưutrữ hàng petabyte mà không có sự thỏa hiệp về tốc độ và bảo mật Lustre hiện có sẵn dướiGNU GPL
Lustre được thiết kế và phát triển, bảo trì bởi Sun Microsystems Các hệ thống fileLustre được sử dụng trong các cụm máy tính khác nhau từ các cụm làm việc nhỏ tới cáccụm quy mô lớn và nhiều trang web 15 của 30 supercomputer hàng đầu trên thế giới sử
ix
Trang 10dụng hệ thống file Lustre, bao gồm cả supercomputer nhanh nhất thứ hai trên thế giớiBlue Gene/L tại Lawrence Livermore National Laboratory (LLNL) Ngoài ra còn có cácsupercomputer tại Oak Ridge National Laboratory, Pacific Northwest NationalLaboratory và Nasa cũng sử dụng hệ thống file Lustre.
Hệ thống file Lustre có thể hỗ trợ tới hàng chục hàng nghìn các hệ thống khách, lưutrữ hàng petabyte và hoạt động vào/ra lên tới hàng trăm gigabyte trên giây (BG/s) Cácnhà kinh doanh bao gồm từ các nhà cung cấp dịch vụ Internet tới các tổ chức cơ quan tàichính lớn đều triển khai hệ thống Lustre cho các trung tâm dữ liệu của họ
2.4 Google File System
Google File System là một hệ thống file phân tán được mở rộng cho các ứng dụngđòi hỏi dữ liệu được phân tán lớn [14] Nó cung cấp dung sai lỗi trong khi chạy trên cácphần cứng giá rẻ nhưng có khả năng cho tốc độ thực thi nhanh tới một lượng lớn cácclient
Nó được triển khai rộng rãi trong Google, như là nền tảng lưu trữ cho các thế hệ vàcác quá trình xử lý dữ liệu được sử dụng bởi các dịch vụ của Google, cũng như nghiêncứu và phát triển các lỗ lực mong muốn có các tập hợp dữ liệu lớn Cluster lớn nhất ngàynay của Google, cung cấp hàng trăm terabyte lưu trữ qua hàng nghìn ổ đĩa trên một nghìnmáy, và đồng thời được truy cập bởi hàng trăm khách hàng
Trái ngược với nhiều hệ thống tập tin, Goolge File System không được thực hiệntrong hạt nhân của hệ điều hành, nhưng thay vì đó nó được cung cấp như là một thư việnuserspace
Hadoop đã được kiểm chứng trên các cụm với 2000 node Hiện tại Hadoop đangđược thiết kế với mục tiêu là các cụm có thể chứa 10 000 node
2.6 GlusterFS
GlusterFS là một hệ thống file cluter mã nguồn mở có khả năng mở rộng tới hàngpeta-byte [1] Nó gộp nhiều khối lưu trữ thống qua Infiniband RDMA hoặc kết nối
Trang 11TCP/IP trong một mạng hệ thống file song song lớn Các khối lưu trữ có thể được tạo ratrong bất cứ phần cứng thương mại nào như máy chủ x86-64 với SATA-II RAID vàInfiniband HBA GlusterFS gộp nhiều đơn vị lưu trữ độc lập trong một server lưu trữ lớn
để mở rộng hàng peta-byte và cho hàng nghìn khách hàng Mỗi đơn vị lưu trữ có CPU, bộnhớ, bus I/O, lưu trữ RAID và giao diện kết nối của chính nó GlusterFS được thiết kế choviệc mở rộng tuyến tính để các cụm lưu trữ có kích thước rất lớn
2.7 Global File System (Red Hat GFS)
Red Hat GFS là hệ thống file cluster mã nguồn mở và trình quản lý phân vùng trêncác máy chủ Red Hat Enterprise Linux được gắn tới mạng lưu trữ (Storage Area Network
- SAN) [4] Nó làm cho một cluster các máy chủ Linux có thể chia sẻ dữ liệu trong mộtvùng lưu trữ chung, cung cấp hình ảnh hệ thống file nhất quán giữa các máy chủ trongcụm Red Hat GFS làm việc trên tất cả các máy chủ chuyên dụng và nền tảng lưu trữđược hỗ trợ bởi Red Hat Red Hat GFS ngày nay được hỗ trợ bởi Oracle, EMC vàNetApp
Do giới hạn về thời gian, nên khóa luận chỉ nghiên cứu một số hệ thống điển hình là:Hadoop, GlusterFS, Global File System Đây cũng là nội dung được đề cập ở chương 3
xi
Trang 12xử lý bởi framework.
Dưới đây là các mô hình cấu trúc của Hadoop
Hình 3.1 Cấu trúc Map/Reduce và HDFS của Hadoop
Trong hình 3.1, một cluster có nhiều Map và một Reduce Dữ liệu được lưu trữ trêncác khối file DFS, nhiều khối này tập hợp thành một Map Khi cần truy xuất, dữ liệuthông qua bộ Reduce lấy dữ liệu từ các Map rồi trả lại kết quả
Trang 13Hình 3.2 Cấu trúc các máy trong cluster.
Hình 3.2 thể hiện cấu trúc các máy trong một cluster Trong hình, cluster được tạothành bởi 2 cluster đơn Cluster đơn bao gồm máy lưu trữ box 1, và máy master Kết hợphai cluster đơn này lại, và thiết kế một trong số đó làm máy master, máy còn lại làmslave Dễ nhận thấy, việc thiết lập một cluster Hadoop nhiều máy dễ dàng hơn bằng cáchtạo ra các cluster đơn rồi ghép chúng lại với nhau, cấu hình sao cho có master và slavetheo mong muốn của chúng ta Máy master có thể hoạt động như một slave
Hadoop có nhiều daemon để quản lý: namenode, datanode, jobtracker, tasktracker
Hình 3.3 Cấu hình Master và Slave
xiii
Trang 14Hình trên, thể hiện cấu hình một cluster có một master hoạt động như là slave và mộtslave Máy master sẽ chạy các daemon master cho từng tầng: namenode cho tầng lưu trữHDFS, jobtracker cho tầng xử lý MapReduce Cả hai máy sẽ chạy các daemon slave:datanode cho tầng HDFS, tasktracker cho tầng xử lý MapReduce Về cơ bản, masterdaemon có trách nhiệm điều phối và quản lý các slave daemon, trong khi đó nửa dưới sẽthực hiện lưu trữ dữ liệu thực và công việc xử lý dữ liệu
3.1.2 Các tính năng nổi bật
Một số tính năng làm cho Hadoop trở lên hữu ích:
- Mở rộng: có thể cắm thêm các máy tính vào trong hệ thống và Hadoop có thể lưutrữ và xử lý hàng petabytes
- Kinh tế: Nó phát tán dữ liệu và xử lý thông qua các cụm máy tính Các cụm máytính này có thể gồm hàng nghìn các máy tính giá rẻ
- Hiệu suất: Việc phát tán dữ liệu, Hadoop có thể xử lý song song trên các máy nơichứa dữ liệu, và việc xử lý này vô cùng nhanh
- Độ tin cậy: Hadoop tự động duy trì nhiều bản sao của dữ liệu và tự động bố trí lạicác thao tác tính toán dựa trên các phần bị lỗi
3.1.3 Hadoop Map/Reduce
Hadoop map/reduce là framework cho phép dễ dàng viết các ứng dụng xử lý mộtlượng lớn dữ liệu một cách song song trên các cụm lớn (hàng ngàn node)
3.1.3.1 Lập trình theo mô hình và xử lý framework
Map/Reduce là một mô hình xử lý, nó biểu diễn lượng lớn các phép toán được phân
bổ như là một chuỗi các hành động được phân phát trên tập hợp dữ liệu trên các bộ khóakey/value Hadoop Map/Reduce framework điều khiển các máy trong cluster và thực thicác yêu cầu được định nghĩa bởi Map/Reduce job thông qua các máy trong cluster Thaotác Map/Reduce có hai giai đoạn, một là giai đoạn map và một là giai đoạn reduce Đầuvào cho các thao tác là tập hợp dữ liệu các bộ key/value
Trong giai đoạn map, framework tách dữ liệu đầu vào trong số lượng lớn các đoạn
và gán cho mỗi đoạn một nhiệm vụ map Framework cũng phân bổ các nhiệm vụ map tớicác máy trong cluster hoạt động Mỗi nhiệm vụ map sử dụng bộ key/value từ các đoạnđược gán với nó và tạo ra một bộ key/value trung gian Với từng bộ key/value (K,V) đầuvào, nhiệm vụ map gọi một hàm map được người dùng định nghĩa để chuyển đổi cặp key/value đầu vào thành bộ key/value khác (K’,V’)
Trang 15Tiếp theo giai đoạn map, framework phân loại bộ dữ liệu trung gian bằng key và tạo
ra bộ (K’,V’*) để cho tất cả các giá trị sẽ xuất hiện cùng với một khóa riêng Nó cũngphân tách bộ (K’,V’*) vào trong các đoạn có số lượng bằng với số lượng các nhiệm vụreduce
Trong giai đoạn reduce, mỗi nhiệm vụ reduce sử dụng đoạn (K’,V’*) được gắn với
nó Với mỗi cặp (K’,V’*), nó gọi một hàm reduce được người dùng định nghĩa chuyểnđổi cặp đó vào trong bộ key/value (K’’,V’’) đầu ra Một lần nữa, framework phân bổ cácnhiệm vụ reduce tới các máy trong cluster và phân phối thích hợp các đoạn của dữ liệutrung gian tới từng nhiệm vụ reduce
Một cách tổng quan, có thể biểu diễn sự phát triển của cặp đầu vào (K,V) như sau:
(input) <K, V> -> map -> <K’, V’> -> combine -> <K’, V’*> -> reduce ->
<K’’,V’’> (output)
Các nhiệm vụ trong mỗi giai đoạn được thực thi trong cách cư xử khoan dung Tức
là, nếu máy bị lỗi trong quá trình thực hiện các nhiệm vụ được gán tới chúng thì cácnhiệm vụ đó được phân bổ lại cho các máy còn lại Có nhiều nhiệm vụ map và reduce chophép các nhiệm vụ không thành công được chạy lại với thời gian chạy rất nhỏ
Chương trình wordCount.java sau đây minh họa thực hiện công việc Map/Reduce.WordCount.java là chương trình để đếm số lần xuất hiện của từ trong một tập đầuvào Giả sử đầu vào là hai file input1 và input2
Trong đó, file input1 có nội dung là: Hello World Bye World
Và file input2 có nội dung là: Hello Hadoop Goodbye Hadoop
Sau khi thực hiện chương trình WordCount với đầu vào là 2 file trên, kết quả đầu ra
là file có nội dung:
Trong ví dụ trên, map lần thứ nhất được các cặp:
xv
Trang 163.1.3.2 Cấu trúc của Map/Reduce
Hadoop Map/Reduce framework có cấu trúc dạng master/slave (chủ/khách) Có mộtmáy chủ master hay còn gọi jobtracker và một vài máy slave (tasktracker) cho mỗi máytrong cluter Jobtracker dùng để tương tác giữa người sử dụng và framework Người sửdụng đưa các công việc map/reduce tới jobtracker, và jobtracker đặt các công việc đó vàotrong hàng chờ xử lý các công việc và thực hiện công việc trên cơ sở “đến trước-phục vụtrước” Jobtracker quản lý việc gắn các nhiệm vụ map và reduce tới các tasktracker Các
Trang 17tasktracker thực hiện các nhiệm vụ theo hướng dẫn từ jobtracker và có thể điều khiển dữliệu động giữa các giai đoạn map và reduce như được minh họa ở hình 3.3.
3.1.4 Hadoop DFS
HDFS được thiết kế lưu trữ thực sự với số lượng file rất lớn qua các máy trên mộtcluster lớn Được phát minh bởi Google File System HDFS lưu trữ từng file như là mộtchuỗi các khối, tất cả các khối trong một file ngoại trừ khối cuối cùng đều có cùng kích
cỡ Các khối thuộc vào một file được tạo bản sao để phục vụ cho trường hợp phục lỗi.Kích thước khối và hệ số tạo bản sao được cấu hình cho mỗi file File trong HDFS chỉđược một chương trình ghi vào trong cùng một thời điểm
Cấu trúc của HDFS
Giống như Hadoop Map/Reduce, HDFS cũng theo cấu trúc master/slave HDFS gồm
có một máy Namenode – máy chủ server để quản lý namespace hệ thống file và quy địnhquyền truy cập tới các file bới cac client Ngoài ra, có một số các Datanode cho mỗi máytrong cluster, để quản lý lưu trữ được gắn vào các máy mà nó chạy trên đó Namenodelàm cho namespace hệ thống file hoạt động như: mở, đóng, đổi tên … của các file và thưmục có sẵn thông qua giao diện RPC Nó cũng xác định đường đi của các khối tới cácDatanode Các Datanode có trách nhiệm phục vụ các yêu cầu đọc và ghi từ hệ thống filekhách, chúng cũng thực hiện tạo, xóa, và nhân rộng các khối theo hướng dẫn từNamenode như được minh họa ở trên hình 3.3
3.1.5 Cài đặt, cấu hình và sử dụng hệ thống Hadoop
Trang 18Java 1.6.x (tốt nhất là từ Sun) phải được cài đặt.
ssh phải được cài đặt và sshd cũng phải chạy để sử dụng các tập lệnh Hadoop,
quản lý từ xa các Hadoop daemon
+ Với Window yêu cầu bổ sung thêm: Cygwin
b, Cài đặt phần mềm
Trước khi cài đặt phần mềm, hãy chắc chắn rằng các phần mềm yêu cầu đã sẵn sàng
Ví dụ trên Ubuntu Linux:
$ sudo apt-get install ssh
$ sudo apt-get install rsync
Trên Window, nếu chưa cài đặt các phần mềm yêu cầu trong khi đã cài đặt cygwin,thì bắt đầu cygwin installer và chọn các gói:
- openssh - nằm trong mục Net
c, Cấu hình
Giải nén gói Hadoop được tải về Trong gói Hadoop đã giải nén, sửa file
conf/hadoop-env.sh để xác định JAVA_HOME là thư mục gốc cài đặt Java ở trên máy
hiện tại, tiếp đến thực thi lệnh sau:
$ bin/hadoop
Lệnh này sẽ hiển thị các tài liệu hướng dẫn sử dụng cho các tập lệnh hadoop
Bây giờ đã sẵn sàng để bắt đầu Hadoop cluster ở một trong ba chế độ hỗ trợ:
- Local (Standalone) Mode: Mặc định, Hadoop được cấu hình để chạy trong chế độnon-distributed, như là một tiến trình java Nó rất hữu dụng cho việc gỡ lỗi
- Pseudo-Distributed Mode: Hadoop có thể chạy trong chế độ pseudo-distributed,nơi hadoop daemon chạy trong các tiến trình java riêng rẽ
- Fully-Distributed Mode: Giống Pseudo-Distributed
Dưới đây, khóa luận xin trình bày về cách cấu hình trong chế độ Pesudo-Distributed.Hadoop có thể chạy trên single-node trong chế độ pseudo-distributed, nơi hadoopdaemon chạy trong các tiến trình java riêng rẽ
- Cấu hình
File cấu hình conf/hadoop-site.xml
<configuration>
<property>
Trang 19mapred.job.tracker Tên máy hay IP và cổng của
JobTracker
Cặp host:port
dfs.name.dir Đường dẫn trên hệ thống file
local, nơi mà NameNode lưu trữ liên tục các namespace và file nhật kí giao dịch
dfs.data.dir Danh sách đường dẫn được ngăn
cách nhau bởi dấu phẩy trên hệ thống file của một DataNode, là nơi lưu trữ các khối dữ liệu
mapred.system.dir Đường dẫn trên HDFS nơi
Map/Reduce lưu trữ hệ thống file Ví dụ: Hadoop/mapred/system/.mapred.system.dir Danh sách đường dẫn thư mục
được phân cách bởi dấu phẩy trên
hệ thống file local, nơi ghi dữ liệu tạm thời của Map/Reduce
dfs.hosts/dfs.hosts.exclude Danh sách các DataNode được
hoạt động / không được phép hoạtđộng
dfs.replication Số bản sao của các khối
Bảng 3.2 Các tham biến trong file cấu hình conf/hadoop-site.xml của Hadoop
xix
Trang 20Sao chép các file từ trong distributes filesystem:
$ bin/hadoop fs –put conf input
3.1.5.1.2 Cài đặt trên nhiều máy
Kết hợp các máy đã được cài đặt Hadoop, và cấu hình sao cho phù hợp với yêu cầu
Có một máy được bổ nhiệm làm NameNode, một máy làm JobTracker, và các máy cònlại hoạt động như là cả hai DataNode và TaskTracker
Chú ý: Thư mục gốc của distribution HADOOP_HOME trong tất cả các máy cùngcluster phải có đường dẫn giống nhau
Cấu hình
Để cấu hình Hadoop trên máy, cần phải chỉnh sửa các thông số (tham số) trong hai
file cấu hình quan trọng, nằm trong conf/directory của distribution:
- hadoop-default.xml : Cấu hình mặc định chỉ đọc.
- hadoop-site.xml: Cấu hình cụ thể các Site.
Ngoài ra, có thể kiểm soát các Hadoop script được tìm thấy trong bin/directory của distribution, bằng cách thiết lập giá trị site cụ thể thông qua file conf/hadoop-env.sh.
Để cấu hình các cụm Hadoop, cần phải cấu hình môi trường trong đó có các Hadoopdaemon thực hiện, cũng như các cấu hình tham số cho các Hadoop daemon
Các Hadoop daemon là NameNode/DataNode và JobTracker/TaskTracker
Cấu hình môi trường của các Hadoop Daemon
Trang 21Người quản trị sử dụng file conf/hadoop-env.sh để tùy chỉnh biến môi trường quá
trình xử lý của các Hadoop daemon
Cần phải thay đổi giá trị của JAVA_HOME cho phù hợp với đường dẫn của thư mụccài đặt java trên mỗi máy
Người quản trị có thể cấu hình các daemon riêng biệt bằng cách lựa chọn các tùy
chỉnh HADOOP_*_OPTS trong file cấu hình conf/hadoop-env.sh Dưới đây là bảng danh
sách các tùy chỉnh tương ứng với từng daemon:
Bảng 3.1 Danh sách các tùy chọn tương ứng với từng daemon
Ví dụ, để cấu hình NameNode, thì thêm biểu thức sau vào trong file hadoop-env.sh: Export HADOOP_NAMENODE_OPTS="-XX:+UseParallelGC
Một số lệnh Shell thông dụng:
cat
Usage: hadoop fs -cat URI [URI …]
Dùng để xem nội dung file trên hệ thống Giải thích lệnh và cho ví dụ
copyFromLocal
Usage: hadoop fs -copyFromLocal <localsrc> URI
Dùng để tạo file vào hệ thống bằng cách sao chép nội dung file từ máy local vào filemới trong hệ thống
xxi
Trang 22Usage: hadoop fs -copyToLocal [-ignorecrc] [-crc] URI <localdst>
Dùng để đọc file trên hệ thống ghi ra local
cp
Usage: hadoop fs -cp URI [URI …] <dest>
Lệnh sao chép
mkdir
Usage: hadoop fs -mkdir <paths>
Lệnh tạo thư mục mới
touchz Usage: hadoop fs -touchz URI [URI …]
3.1.6 Nhược điểm của Hadoop
Hadoop tuy có nhiều ưu điểm nổi trội và hữu ích nhưng vẫn có một số nhược điểmnhư:
- Hadoop có giao diện của riêng nó, nên người dùng sử dụng phải thông qua giaodiện đó Đôi khi, nó trở thành phiền phức và buộc người dùng phải lệ thuộc vào nó
- Hadoop sử dụng java làm nền tảng chạy và viết chương trình
- Trên một hệ thống file, chỉ một chương trình được ghi tại một thời điểm
3.1.7 Các ứng dụng của hệ thống Hadoop
- Yahoo: Hadoop được Yahoo sử dụng cho Webmap Search, chạy Hadoop trên100.000 CPU trong 20.000 máy Cluster lớn nhất 2000 máy
Trang 23Hình 3.4 Các máy trong cluster đang chạy Hadoop tại Yahoo (nguồn: Yahoo)
- Mahout: Mahout tạo máy sscalable học tập các thư viện mà chạy trên Hadoop
- CloudBase: CloudBase là một hệ thống nhà kho dữ liệu xây dựng trên Hadoop
- Cascading: Cascading là một API để xây dựng dataflows cho Hadoop MapReduce
- Tashi: Tashi Apache incubator là một dự án cho các đám mây lớn dữ liệu cho máytính
- Disco: Disco là một MapReduce trong việc triển khai thực hiện Erlang / Python
- Search Wikia: sử dụng 125 máy Hadoop để hỗ trợ phát triển công cụ tìm kiếm xãhội mã nguồn mở
- Nutch: sử dụng Hadoop để làm linh hoạt phần mềm công cụ tìm kiếm web
3.2 HỆ THỐNG GLOBAL FILE SYSTEM
3.2.1 Tổng quan
GFS là mã nguồn mở, hệ thống tập tin Cluster, trình quản lý phân vùng tương thíchPOSIX, làm việc trên tất cả phần cứng được hỗ trợ theo Enterprise Linux bao gồm thiết bịSAN GFS cho phép nhiều máy chủ Red Hat Enterprise Linux đồng thời đọc, ghi trên một
hệ thống tập tin
Red Hat GFS được tích hợp với Red Hat Enterprise Linux và được phân phối quaRed Hat Network Điều này giúp đơn giản hóa tiến trình cài đặt, nâng cấp, quản trị phầnmềm Các ứng dụng chẳng hạn như Oracle 9i RAC, cluster, file, web, email sẽ dễ dàngđược quản lý và đạt được hiệu năng cao với tính sẵn sàng cao nhờ Red Hat GFS
xxiii
Trang 24Các máy Red Hat GFS được cấu hình và quản lý với các công cụ cấu hình và quản
lý của Red Hat Cluster Suite Red Hat GFS cung cấp dữ liệu chia sẻ giữa các máy GFStrong một Red Hat Cluster GFS cho phép các ứng dụng cài đặt và chạy không cần nhiềuhiểu biết về cơ sở hạ tầng lưu trữ ở dưới GFS hoàn toàn tuân thủ giao diện IEEE POSIX,cho phép các ứng dụng thực thi các file như là chúng đang chạy trên file hệ thống cục bộvậy GFS còn cung cấp các tính năng được yêu cầu riêng trong các môi trường doanhnghiệp như: các hạn ngạch, đa nhật kí, và hỗ trợ đa đường dẫn
Việc sử dụng hệ thống GFS sẽ mang lại các lợi ích như:
- Dữ liệu được đơn giản hoá cơ sở hạ tầng
- Cài đặt và đắp vá các ứng dụng một lần cho toàn bộ nhóm
- Đồng cho phép đọc / ghi truy cập vào dữ liệu của rất nhiều khách hàng
- Đơn giản hoá việc sao lưu và khôi phục thảm họa (chỉ có một hệ thống tập tin đểsao lưu hoặc phục hồi)
- Tối đa hóa việc sử dụng các nguồn tài nguyên lưu trữ, giảm thiểu chi phí quản lýlưu trữ
- Quy mô các cụm liền mạch bằng cách thêm các máy chủ hoặc thiết bị lưu trữ trongkhi hệ thống vẫn đang hoạt động
- Thêm vào cụm máy chủ đơn giản bằng cách gắn nó vào hệ thống tập tin thôngthường
3.2.2 Các tính năng nổi bật
Hiệu năng hoạt động: Red Hat GFS giúp các máy chủ Red Hat Enterprise Linux đạt
được hiệu năng hoạt động cao hơn đối với các ứng dụng đối với cơ sở dữ liệu, file, vàquản trị Hiệu năng hoạt động vẫn có thể đáp ứng với quy mô hàng trăm máy chủ Red HatEnterprise Linux thông qua việc sử dụng Red Hat GFS và SAN với iSCSI hoặc FibreChannel
Tính sẵn sàng cao: Red Hat GFS là sản phẩm hoàn hảo, tương thích với bất cứ máy chủ,
network, hoặc các thiết bị lưu trữ dự phòng nào để cho phép các hoạt động vẫn được duytrì liên tục Thêm vào đó, Red Hat GFS giúp nâng cao tính sẵn sàng của hệ thống bằngcách cho phép thực hiện các thao tác cấu hình lại chẳng hạn như một file system vàvolume resizing trong khi hệ thống vẫn hoạt động trực tuyến Có thể kết hợp sử dụng RedHat Cluster Suite cùng với GFS để chuyển các ứng dụng trong trường hợp máy chủ xảy ra
sự cố hoặc để bảo dưỡng định kỳ máy chủ
Trang 25Dễ sử dụng: Red Hat GFS cho phép truy cập nhanh, tốc độ cao, nhiều truy cập đồng thời
vào một file system được chia sẻ, giảm thiểu sự phức tạp đối với các tác vụ quản trị bằngcách giảm nhu cầu sao chép dữ liệu và bảo trì nhiều phiên bản khác nhau của dữ liệu đểđảm bảo việc truy cập được nhanh hơn Được tích hợp với Red Hat Enterprise Linux(AS,ES và WS) và Cluster Suite, được cung cấp thông qua Red Hat Network, và được hỗtrợ bởi đội ngũ chuyên gia hỗ trợ hàng đầu của Red Hat, Red Hat GFS là cluster filesystem hàng đầu cho Linux trên thế giới
3.2.3 Cấu trúc của GFS
Có thể triển khai GFS trong một cấu hình khác nhau cho phù hợp với nhu cầu chohiệu quả hoạt động,sự mở rộng, và kinh tế Đối với hiệu suất cao và mở rộng, có thể triểnkhai trong một nhóm GFS đã kết nối trực tiếp đến một SAN Để biết thêm chi tiết các yêucầu cần thiết cho kinh tế, có thể triển khai trong một GFS cụm, được kết nối với mộtmạng LAN với các máy chủ sử dụng Global Network Block Device (GNBD )
Dưới đây là cấu trúc hệ thống GFS được thiết kế và triển khai phù hợp với các tiêuchí về hiệu quả hoạt động, mở rộng, và kinh tế
Nếu theo tiêu chí hiệu suất và mở rộng cao, thì nên thiết kế hệ thống theo mô hìnhcác ứng dụng truy cập trực tiếp vào nơi lưu trữ sau:
Hình 3.5 Mô hình tăng hiệu suất và khả năng mở rộng của hệ thống GFS GFS với một SAN cung cấp sự thực thi file nhanh hơn cho các file chia sẻ và các hệthống file Các ứng dụng Linux chạy trực tiếp trên các máy GFS
Còn nếu muốn hiệu suất, mở rộng, giá cả vừa phải thì nên thiết lập mô hình các ứngdụng Linux đa khách hàng trên một LAN có thể chia sẻ cùng dữ liệu trên SAN
xxv
Trang 26Hình 3.6 Mô hình hệ thống GFS sao cho hiệu suất, mở rộng, giá cả vừa phảiKhối lưu trữ SAN được thể hiện trong mạng lưới khách hàng như khối các thiết bịlưu trữ của máy chủ GNBD Từ quan điểm của một ứng dụng khách, lưu trữ được truycập nếu như nó được gắn trực tiếp vào máy chủ, nơi các ứng dụng đang chạy Dữ liệuđược lưu trữ thực trên SAN Dữ liệu và các thiết bị lưu trữ có thể được chia sẻ bình đẳngbởi các mạng lưới ứng dụng khách Các chức năng chia sẻ và khóa file được xử lý bởiGFS cho từng mạng lưới khách.
Để đạt mục đích kinh tế và hiệu suất nên cấu hình theo hình 3.7 "GFS và GNBD kếtnối trực tiếp với nơi lưu trữ" cho thấy các ứng dụng Linux ở máy khách có thể tận dụnglợi thế của một Topology Ethernet hiện có để đạt được chia sẻ quyền truy cập vào tất cảcác khối thiết bị lưu trữ như thế nào Các file dữ liệu khách và các hệ thống file có thểđược chia sẻ với GFS trên từng máy khách
Trang 27Hình 3.7 Mô hình hệ thống GFS với tiêu chí kinh tế và hiệu suất
3.2.4 Các chức năng của GFS
GFS là một hệ thống file nguyên thủy có giao diện trực tiếp với lớp VFS của giaodiện file nhân hệ thống Linux GFS là một hệ thống file cụm dùng để phân bố số lượnglớn dữ liệu và đa sự kiện cho các hoạt động tối ưu trong một cluster Việc quản lý cácmáy trong GFS được quản lý thông qua Red Hat Cluster Suite Khối lượng quản lý đượcquản lý thông qua Cluster Logical Volume Manager (CLVM )
- Thêm các sự kiện cho một hệ thống file
- Điều khiển vào/ra
- Nhật kí dữ liệu
- Cập nhật cấu hình
- Hoãn hoạt động trên một hệ thống file
- Hiển thị các thông tin GFS mở rộng và các thống kê
xxvii
Trang 28- Sửa một hệ thống file.
3.2.5 Cài đặt, cấu hình và sử dụng hệ thống
3.2.5.1 Cài đặt
3.2.5.1.1 Thông tin trước khi cài đặt GFS
Trước khi cài đặt và thiết lập GFS, cần phải chú ý một số đặc điểm chính của các hệthống file GFS sau đây:
- Số lượng các hệ thống file - Xác định xem có bao nhiêu GFS để tạo ra hệ thống tậptin ban đầu
- Tên hệ thống file - Xác định một tên duy nhất cho mỗi hệ thống tập tin Mỗi tập tin
hệ thống tên là bắt buộc trong mẫu của một tham số biến
- Nhật kí - Xác định số nhật kí của các hệ thống file GFS với mỗi máy cài đặt hệthống file GFS cần phải có một nhật kí Chắc chắn rằng tài khoản đã được thêm vào nhật
- Các thiết bị lưu trữ và phân vùng - Xác định các thiết bị lưu trữ và các phân vùngđược sử dụng cho việc tạo các phân vùng vật lý (thông qua CLVM) trong các hệ thốngfile
3.2.5.1.2 Cài đặt
Việc cài đặt GFS bao gồm việc cài đặt Red Hat Cluster Suite và Red Hat GFS Cónhiều cách để cài đặt chúng như: tự động cài đặt RPM – sử dụng up2date, hay cài đặt tùychọn RPM – lựa chọn cài đặt rpm sử dụng các RPM cần thiết
Trang 29- Đăng nhập với tài khoản root
- Chạy lệnh: up2date –installall –channel Label cho Red Hat Cluster Suite
Ví dụ sau đây, là lệnh chạy cho các RPM i386:
# up2date installall channel rhel-i386-as-4-cluster
(Tùy chọn) Nếu đang cài Red Hat GFS, chạy: up2date installall channel Label cho Red Hat GFS
- Sau đây là ví dụ cho các gói RPM i386
# up2date installall channel rhel-i386-as-4-gfs-6.1
b, Cài đặt các gói với tiện ích rpm
Có thể sử dụng tiện ích rpm để cài đặt các gói RPM từ CD đã được tạo với các RHNISO Quá trình bao gồm việc sao chép các RPM từ máy cục bộ, xóa các RPM không cầnthiết cho việc cài đặt, sao chép RPM đến các máy trong cluster, và cài đặt chúng
Dưới đây là một số bước cài đặt:
- Bước 1: Tại máy nội bộ (không là thành phần trong cluster) tạo một thư mục tạmthời chứa các RPM Ví dụ:
$ mkdir /tmp/RPMS/
- Bước 2: Chèn Red Hat Cluster Suite CD vào trong ổ đĩa CD-ROM
Chú ý: Nếu một câu hỏi thông báo hiện ra, trả lời nếu muốn chạy tự động, click No
- Bước 3: Sao chép tất cả các file RPM từ CD (/media/cdrom/RedHat/RPMS/) tớithư mục mới được tạo tạm thời ở trên Ví dụ:
$ cp /media/cdrom/RedHat/RPMS/*.rpm /tmp/RPMS/
- Bước 4: Thoát CD khỏi ổ đĩa CD-ROM
- Bước 5: (Tùy chọn) Nếu đang cài đặt Red Hat GFS, chèn Red Hat GFS CD vàotrong ổ đĩa CD-ROM Nếu không cài đặt Red Hat GFS, thực hiện tới bước 8
Chú ý: Nếu một câu hỏi thông báo hiện ra, trả lời nếu muốn chạy tự động, click NO
- Bước 6: Sao chép tất cả các file RPM từ CD (/media/cdrom/RedHat/RPMS/) tớithư mục mới được tạo tạm thời ở trên Ví dụ:
$ cp /media/cdrom/RedHat/RPMS/*.rpm /tmp/RPMS/
- Bước 7: Thoát CD khỏi ổ đĩa CD-ROM
- Bước 8: Di chuyển đến thư mục chứa các file RPM đã được copy Ví dụ:
$ cd /tmp/RPMS/
xxix