Tải bản đầy đủ (.doc) (58 trang)

tìm hiểu và đánh giá một số hệ thống hỗ trợ lưu trữ lớn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (734.92 KB, 58 trang )

TÓ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ộng
lư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ủa
việ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ệu
mộ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óa
luận nghiên cứu và đánh giá một số hệ thống điển hình như GlusterFS, Global File
System, 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
MỤC LỤC
TÓM TẮT i
MỤC LỤC ii
LỜI MỞ ĐẦU iii
KÍ HIỆU VIẾT TẮT v
CHƯƠNG 1 vi
GIỚI THIỆU vi
CHƯƠNG 2 viii
GIỚI THIỆU MỘT SỐ HỆ THỐNG LƯU TRỮ DỮ LIỆU LỚN HIỆN NAY viii
CHƯƠNG 3. xi
TÌM HIỂU MỘT SỐ HỆ THỐNG ĐIỂN HÌNH xi
CHƯƠNG 4 xlv
ĐÁNH GIÁ HIỆU NĂNG CÁC HỆ THỐNG xlv
KẾT LUẬN xlviii
PHỤ LỤC xlix
TÀI LIỆU THAM KHẢO lviii
ii


LỜ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ương
phá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ủa
chú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 con
ngườ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 an
toà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 con
ngườ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ưu
trữ, 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ình
server-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ệu
lớ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, Goole
File 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ận
chỉ nghiên cứu 3 hệ thống điển hình là: Hadoop, Global File System, GlusterFS. Trong
chươ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ách
vận hành hệ thống.
iii

Chươ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óa
luậ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 nghệ-
Đ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.
Hà Nội, ngày 22 tháng 5 năm 2009
Sinh viên
Đào Thị Thảo.
iv
KÍ 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ập
CLVM
Cluster Logical Volume
Manager
Trình quản lý phân vùng logic của
Cluster
DLM
Distributed Lock
Manager
Trình quản lý sự phân phối
DN Doanh Nghiệp Doanh Nghiệp
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
System
Hệ thống file xử lý song song của
IBM
GULM
Grand Unified Lock
Manager
Trình quản lý khóa Grand Unified
HDF
Hadoop Distributed File
System
Hệ thống file được phân tán Hadoop
PVFS
Parallel Virtual File
System
Hệ thống file ảo song song
RDMA
Remote Direct Memory
Access
Truy cập bộ nhớ định hướng từ xa
SAN Storage Area Network Mạng vùng lưu trữ
v
CHƯƠ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 doanh
nghiệ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ài
cá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êu

cầ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ệt
khá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ọng
củ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à đối
vớ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ững
nề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ảo
cho 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át
triể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 dung
lượ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 tin
nhắn và thư điện tử trong vòng 5 năm hoặc nhiều hơn nữa.
vi
- 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ềm
giá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ác

giả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ác
trung 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ương
phá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ống
mạ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ưu
trữ 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ăng
khả 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.
vii
CHƯƠ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 truy
cậ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ành
phầ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. GPFS
cung 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 được
phá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/ra

song 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ơi
thự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ấp
chứ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ị đầu
trê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áy
tí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ới
cung 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ưu
trữ 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ưới
GNU GPL.
Lustre được thiết kế và phát triển, bảo trì bởi Sun Microsystems. Các hệ thống file
Lustre đượ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ác
cụm quy mô lớn và nhiều trang web. 15 của 30 supercomputer hàng đầu trên thế giới sử
viii
dụng hệ thống file Lustre, bao gồm cả supercomputer nhanh nhất thứ hai trên thế giới
Blue Gene/L tại Lawrence Livermore National Laboratory (LLNL). Ngoài ra còn có các
supercomputer tại Oak Ridge National Laboratory, Pacific Northwest National
Laboratory 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ưu
trữ 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ác
nhà 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ài
chí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ác
phầ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ác
client.
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ên
cứ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ày
nay 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ìn
má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ện
trong 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ện
userspace.
2.5. Hadoop
Hadoop là một nền tảng phần mềm mã nguồn mở, nó cho phép viết và chạy các
chương trình xử lý số lượng lớn dữ liệu một cách dễ dàng. Hadoop được xây dựng như cở
sở hạ tầng cho dự án của Nutch [2][3]. Nutch crawl web và xây dựng công cụ tìm kiếm
chỉ mục cho các trang được crawl. Cả Hadoop và Nutch đều là thành phần của dự án
Lucene và Apache.
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àng
peta-byte [1]. Nó gộp nhiều khối lưu trữ thống qua Infiniband RDMA hoặc kết nối
ix
TCP/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 ra
trong 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ế cho
việ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ên
cá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ột
vù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ủ trong

cụ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.
x
CHƯƠNG 3.
TÌM HIỂU MỘT SỐ HỆ THỐNG ĐIỂN HÌNH
3.1. HỆ THỐNG HADOOP
3.1.1. Tổng quan
Hadoop là một framework cho các ứng dụng chạy trên các cluster lớn có phần cứng
thông thường. Một cách trong suốt, Hadoop cung cấp cho các ứng dụng cả về sự tin cậy
và dữ liệu động. Hadoop cài đặt mô hình được đặt tên là Map/Reduce cho phép dữ liệu
được chia thành nhiều phần nhỏ cho việc xử lý, các phần này có thể được ghi và đọc lại
trên các máy trong cluster. Ngoài ra, nó còn cung cấp một hệ thống tập tin được phân
phối (HDFS), hệ thống tập tin này lưu trữ dữ liệu trên các máy, cung cấp băng thông rất
cao trên cluster. Cả Map/Reduce và HDFS được thiết kế sao cho các máy bị lỗi được tự
động xử 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ên
cá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ệu
thông qua bộ Reduce lấy dữ liệu từ các Map rồi trả lại kết quả.
xi
Hì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ạo
thà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ợp
hai 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àm
slave. 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ách
tạ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à slave

theo 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
xii
Hì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ột slave. 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, master
daemon 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ưu
trữ 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áy
tí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ơi
chứ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ại
cá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ột
lượ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óa
key/value. Hadoop Map/Reduce framework điều khiển các máy trong cluster và thực thi
các yêu cầu được định nghĩa bởi Map/Reduce job thông qua các máy trong cluster. Thao
tác Map/Reduce có hai giai đoạn, một là giai đoạn map và một là giai đoạn reduce. Đầu
và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ới
cá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) đầu
và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’).
xiii
Tiế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ũng
phâ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ác
nhiệ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ệu
trung 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ác
nhiệ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 cho
phé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 đầu
và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:

Bye 1
Goodbye 1
Hadoop 2
Hello 2
World 2
Quá trình thực hiện công việc Map/Reduce của WordCount được thực hiện như sau:
Giai đoạn map, chương trình thực hiện trên từng file bằng cách tách từng từ tố trong
một dòng (các từ được ngăn cách bởi khoảng trắng) đưa vào từng cặp key/value
( <word>, 1).
Trong ví dụ trên, map lần thứ nhất được các cặp:
xiv
< Hello, 1>
< World, 1>
< Bye, 1>
< World, 1>
Map lần thứ 2 được các cặp:
< Hello, 1>
< Hadoop, 1>
< Goodbye, 1>
< Hadoop, 1>
Sau đó từng map sẽ được tổng hợp kết quả và được sắp xếp theo trường khóa để
được đầu ra của giai đoạn map.
Đầu ra map thứ nhất:
< Bye, 1>
< Hello, 1>
< World, 2>
Đầu ra map thứ hai:
< Goodbye, 1>
< Hadoop, 2>
< Hello, 1>

Sang giai đoạn reduce, trong giai đoạn này thực hiện kết hợp các giá trị có được
trong các map tương ứng với từng key để đưa ra kết quả cuối cùng cho công việc
map/reduce:
< Bye, 1>
< Goodbye, 1>
< Hadoop, 2>
< Hello, 2>
< World, 2>
3.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ột
máy chủ master hay còn gọi jobtracker và một vài máy slave (tasktracker) cho mỗi máy
trong 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ào
trong 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
xv
tasktracker 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ột
cluster lớn. Được phát minh bởi Google File System. HDFS lưu trữ từng file như là một
chuỗ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 định
quyề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áy
trong cluster, để quản lý lưu trữ được gắn vào các máy mà nó chạy trên đó. Namenode

là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ác
Datanode. Các Datanode có trách nhiệm phục vụ các yêu cầu đọc và ghi từ hệ thống file
khá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
3.1.5.1. Cài đặt và cấu hình
Như đã trình bày ở trên, việc cài đặt trên một máy trước sẽ giúp việc cài đặt một hệ
thống cluster lớn một cách dễ dàng.
3.1.5.1.1. Cài đặt trên một máy
a, Chuẩn bị cần thiết
- Nền hỗ trợ:
+ GNU/Linux được hỗ trợ như là một nền tảng để phát triển và tạo sản phẩm.
Hadoop được kiểm nghiệm trên các cụm GNU/Linux với 2000 node.
+ Win32 được hỗ trợ như một nền tảng phát triển, tuy nhiên nó hoạt động
không tốt bằng nền tảng Linux.
- Phần mềm yêu cầu:
+ Phần mềm yêu cầu cho Linux và Window bao gồm:
xvi
Java 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 hadoop
daemon 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>
xvii
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>dfs.replication</name>

<value>1</value>
</property>
</configuration>
Chi tiết các tham số trong file cấu hình được mô tả trong bảng sau:
Các tham số Giá trị Chú ý
fs.default.name URI của NameNode Hdfs://hostname/
mapred.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.
xviii
- Thực hiện
Lệnh định dạng một distributed-filesystem mới:
$ bin/hadoop namenode -format
Bật các hadoop daemon:
$ bin/start-all.sh
Nhật kí Hadoop daemon được ghi tới thư mục ${HADOOP_LOG_DIR} (mặc định
tới ${HADOOP_HOME}/logs)
Địa chỉ web chỉ đến NameNode và JobTracker được mặc định như sau:
- NameNode: http://localhost:50070/
- JobTracker: http://localhost:50030/
Sao 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òn
lạ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ùng
cluster 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 Hadoop
daemon 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
xix
Ngườ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ục
cà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:
Daemon Các tùy chọn
NameNode HADOOP_NAMENODE_OPTS
DataNode HADOOP_DATANODE_OPTS
SecondaryNameNode HADOOP_SECONDARYNAMENODE_OPTS
JobTracker HADOOP_JOBTRACKER_OPTS
TaskTracker HADOOP_TASKTRACKER_OPTS
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
${HADOOP_NAMENODE_OPTS}"
3.1.5.2. Sử dụng hệ thống
Có thể sử dụng các lệnh shell để thao tác truy xuất với hệ thống. File system (FS)
Shell được gọi bởi bin/hadoop fs <args>. Tất cả lệnh FS Shell lấy các đường dẫn URI như
là các đối số. Định dạng URI: scheme://autority/path. Với HDFS scheme là hdfs, với hệ
thống file cục bộ thì scheme là file. Một file hoặc thư mục HDFS như /parent/child thì
URI của nó là hdfs://namenodehost/parent/child. Các lệnh phổ biến nhất trong FS Shell
quen thuộc giống như các lệnh trong Unix. Thông tin lỗi được gửi tới stderr và đầu ra
được gửi tới stdout.
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 file
mới trong hệ thống.
xx
copyToLocal
Usage: 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 …]
Tạo file.
mv
Usage: hadoop fs -mv URI [URI …] <dest>
Lệnh di chuyển file.
rm
Usage: hadoop fs -rm URI [URI …]
Lệnh xóa file.
rmr
Usage: hadoop fs -rmr URI [URI …]
Lệnh xóa đệ quy.
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ểm
như:
- Hadoop có giao diện của riêng nó, nên người dùng sử dụng phải thông qua giao

diệ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ên
100.000 CPU trong 20.000 máy. Cluster lớn nhất 2000 máy.
xxi
Hì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áy
tí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ích
POSIX, 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 qua
Red 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ần
mề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.
xxii
Cá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 GFS

trong 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ều
hiể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 doanh
nghiệ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ữ trong
khi 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ông
thườ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 Hat
Enterprise Linux thông qua việc sử dụng Red Hat GFS và SAN với iSCSI hoặc Fibre
Channel.
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 duy
trì 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ằng
cá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 Red
Hat 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ủ.

xxiii
Dễ 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ằng
cá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 file
system 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 cho
hiệ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ển
khai 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êu
cầ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ột
mạ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êu
chí 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ình
cá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 ứng
dụng Linux đa khách hàng trên một LAN có thể chia sẻ cùng dữ liệu trên SAN.
xxiv
Hình 3.6. Mô hình hệ thống GFS sao cho hiệu suất, mở rộng, giá cả vừa phải
Khố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 truy
cậ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 đẳng
bở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ởi

GFS 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ết
nố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ụng
lợ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.
xxv

×