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
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
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
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ụ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
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:
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
- 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>
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.
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
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ủ.
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