SSS =
PHAM GIA HUNG
NGHIEN CUU VE HE THONG FILE PHAN TAN
HADOOP VA UNG DUNG
Chuyên ngành: Hệ thống thông tin
Mã số: 60.48.01.04
LUẬN VĂN THẠC SĨ KỸ THUẬT
HÀ NỘI - 2015
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIÊN THÔNG
Người hướng dẫn khoa học: TS HOANG XUAN DAU
Phản biện 2: che.
Luận văn sẽ được bảo vệ trước Hội đồng châm luận văn thạc sĩ tại Học viện Công
nghệ Bưu chính Viễn thông
Vào lúc: ĐIỜ ngày thang năm
Có thé tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông.
Trang 3MỞ ĐẦU
Nhờ sự phát triển mạnh mẽ của các mạng máy tính và đặc biệt là mạng Internet, việc
lưu trữ, quản lý và xử lý thông tin ngày nay không chỉ được thực hiện trong từng máy tính đơn
lẽ như trước kia Các hệ thống thông tin cần được xây dựng từ các máy tính kết nối với nhau
qua đường truyền mạng tốc độ cao Hệ thống file phân tán (Distributed File System) là hệ thống quản lý và lưu trữ các file được xây dựng trên cơ sở mạng máy tính, trong đó các file được quản lý và lưu trữ trên nhiều máy tính trên mạng Hệ thống file phân tán có nhiều ưu điểm vượt trội so với hệ thống file tập trung (Hệ thống file trên 1 máy tính), như dung lượng lưu trữ lớn, độ tin cậy cao, khả năng chịu lỗi cao, hỗ trợ tốc độ truy cập cao cho nhiều nguoi dùng đồng thời.
Trong điều kiện cơ sở hạ tầng công nghệ thông tin ở Việt Nam hiện nay, hầu hết các doanh nghiệp và tổ chức có quy mô vừa và nhỏ đều sử dụng một hoặc một số máy chủ riêng rẽ dé quản lý và lưu trữ thông tin Phương pháp nay có ưu điểm là chi phí thấp, nhưng không đảm bảo dung lượng, tính tin cậy và tốc độ truy cập cho nhiều người dùng Do vậy, việc nghiên cứu sâu về hệ thống file phân tán Haloop và ứng dụng có hiệu quả vào các doanh nghiệp và tổ chức
có quy mô vừa và nhỏ là yêu cầu thực tế cấp thiết Đây cũng là lý do tôi chọn đề tài “Nghiên
cứu về hệ thống file phân tán Hadoop và ứng dụng”.
Luận văn được cấu trúc thành 3 chương với nội dung như sau:
Chương 1: Tổng quan về hệ thống file phân tán: Trinh bày khái niệm hệ thống file và hệ thống file phân tán, các yêu cầu đối với hệ thống file phân tán, các kỹ thuật sử dụng trong hệ thống file phân tán.
Chương 2: Hệ thống file phân tán Hadoop: Trình bày về hệ thống file phân tán Hadoop Sau đó đi sâu vào phan trong tâm là HDFS Giới thiệu kiến trúc, sức mạnh, và phát triển ứng
dụng phân tán trên Hadoop.
Chương 3: Xây dựng và thử nghiệm mô hình ứng dụng hệ thống file phân tán
Hadoop: Trình bày việc xây dựng mô hình ứng dụng hệ thống file phân tán Hadoop cho doanh nghiệp vừa và nhỏ, và cài đặt thử nghiệm hệ thống file phân tán Hadoop dựa trên HDFS của
Linux và ứng dụng hệ thống file phân tán Hadoop.
Trang 4CHƯƠNG 1: TONG QUAN VE HE THONG FILE PHAN TAN
1.1 Khái niệm hệ thống file và hệ thống File phân tan 1.1.1 Khái niệm hệ thông file
Hệ thống file (File System) là một phương pháp tô chức lưu trữ các file và dữ liệu của chúng, thường được thực hiện bởi hệ điều hành Hệ thống file cho phép người sử dụng dé dang tìm kiếm và truy nhập các file.
1.1.2 Khái niệm về hệ thống file phân tán
Hệ thống file phân tán (Distributed File System — DFS) là một hệ thống file hỗ trợ chia
sẻ files và các tài nguyên trên mạng.
Trong khoa học máy tính, thuật ngữ Hệ thống file phân tán hay còn gọi là Hệ thống file
mạng (Network File System) dùng dé chi bat kỳ một hệ thống file nào hỗ trợ việc truy cập vào các file từ nhiều máy tính (host) chia sẻ dữ liệu với nhau thông qua một mạng máy tính Hệ
thống này cho phép nhiều người dùng trên nhiều máy khác nhau có thé chia sẻ các file và các
tải nguyên lưu trữ.
1.2 Lịch sử phát triển
Cùng với sự phát triển của các mạng máy tính, việc quản lý, lưu trữ và xử lý thông tin
ngày nay không chỉ được thực hiện trong từng máy tính đơn lẻ như trước Các hệ thống thông tin cần được xây dựng từ các máy tính kết nối với nhau qua mạng tốc độ cao.
1.3 Các yêu cầu đối với hệ thống file phân tán
Các yêu cầu chính đối với hệ thống file phân tán bao gồm:
- Tính trong suốt (Transparency).
- Hiệu năng (Performance).
- Khả năng chịu lỗi (Fault Tolerrence).
- Khả năng mở rộng (Scalability).
1.4 Giới thiệu một số hệ thống file phân tán
1.4.1 Hệ thống file phân tán NFS (Network File System)
1.4.1.1 Kiến trúc của NES.1.4.1.2 Truyền thông.
Trang 51.4.1.3 Đồng bộ hóa.
1.4.1.4 Lưu đệm (caching) và bản sao (replication).
1.4.1.5 Van đề chịu lỗi.
1.4.1.6 An toàn — An ninh.
1.4.2 Hệ thông File phân tán CIFS (Common Internet File System)
1.4.2.1 Khai niém vé hé théng file phan tan CIFS
The Common Internet File System (CIFS) con được biết tới với cái tên Server
Message Block (SMB), là một giao thức được sử dụng chủ yếu để chia sẻ files trên mạng
LAN Giao thức này cho phép một máy khách (client) thực hiện các thao tác với các file như là
chúng nằm trên máy tính đó Cac thao tác như đọc, ghi, tạo, xóa va đổi tên đều được hỗ trợ
-chỉ có sự khác biệt duy nhất là: các tập tin đó đều không năm trên máy tính cá nhân mà thực tế là nằm trên một máy chủ từ xa.
1.4.2.2 Ứng dụng
Giao thức CIFS chủ yếu được sử dụng trong các hệ điều hành của Microsoft Windows
For Workgroups là hệ điều hành đầu tiên của Microsoft sử dụng CIFS, và các hệ điều hành sau
đó của Microsoft đều có thể có chức năng như máy chủ CIFS và máy khách Các hệ điều hành của Microsoft sử dụng CIFS để thao tác file từ xa, duyệt (thông qua biểu tượng Network
Neighborhood), xác thực (WindowsNT và Windows 2000), vacac dịch vụ máy in từ xa Có
thê nói rằng cốt lõi của chức năng mạng của Microsoft được xây dựng trên các dịch vụ CIFS.
1.4.2.3 Sự thay đối trong tương lai
Nhiều nhà cung cấp đang tìm kiếm cách thức để có thể hoàn toàn thực hiện từng giai đoạn của NetBIOS và chạy CIFS trực tiếp trên TCP và UDP Trong CIFSI.0 đã cho rằng CIFS không phụ thuộc vào giao thức giao vận cụ thê nào và có chỉ ra cách CIFS chạy trên TCP.
1.4.3 Hệ thông file phân tán GFS (Google File System)
1.4.3.1 Giới thiệu về GFS
Hệ thống file Google (Google File System - GFS) được phát triển nhằm đáp ứng nhu cầu xử lý thông tin ngày càng tăng của Google GFS cũng hướng tới những mục tiêu chính tương tự như những hệ thống file phân tán đã có, như hiệu năng, tính mở rộng và tính sẵn
Trang 6sang Tuy nhiên, GFS được xây dựng dựa trên một sỐ giả định đầu vào xuất phát từ việc khảo
sát khối lượng dữ liệu cần xử lý của các ứng dụng và môi trường công nghệ hiện tại.
1.4.3.2 Kiến trúc của GFS
a) Giả thiết thiết kế hệ thống b) Kiến trúc hệ thống
c) Máy chủ đơn (Single Master)
d) Kích thước đoạn dir liệu
e) Metadata
1.4.3.3 Chịu lỗi và chuẩn đoán lỗi
Một trong những thử thách lớn nhất trong quá trình thiết kế hệ thống là việc xử lý những thành phan bị lỗi xảy ra thường xuyên Chất lượng và số lượng của những thành phan này làm cho vấn đề này trở nên phức tạp hơn Không thê hoàn toàn tin tưởng vào máy móc và cũng không thé hoàn toàn tin tưởng vào các 6 đĩa cứng Những lỗi thành phan có thé gây ra kết quả là hệ thống không sẵn sàng hoặc xấu hơn là gây mat dit liệu.
a) Tính sẵn sàng cao
b) Khôi phục nhanhc) Tái tạo dữ liệud) Tai tao Master
e) Tinh toan ven dir liéu
f) Các công cụ chuẩn đoán lỗi
1.5 Kết chương
Chương 1 đã đi sâu nghiên cứu kiến trúc, các đặc điểm, hoạt động và các ưu nhược
điểm của một số hệ thống file phân tán điển hình, bao gồm NFS, CIFS, GFS Hau hết các hệ thống file phân tán kể trên đều được thiết kế nhăm cung cấp hiệu năng, tính tin cậy và tính khả
dụng cao, đồng thời đảm bảo các yêu cầu an toàn bảo mật dữ liệu quản lý hệ thống file và các
khối dữ liệu file.
Trang 7CHƯƠNG 2: HE THONG FILE PHAN TAN HADOOP
2.1 Giới thiệu hệ thống File phân tán Hadoop
2.1.1 Hadoop là gì?
Apache Hadoop định nghĩa:
“Apache Hadoop là một framework dùng dé chạy những ứng dụng trên 1 cluster lớn được xây dựng trên những phần cứng thông thường Hadoop hiện thực mô hình Map/Reduce,
đây là mô hình mà ứng dụng sẽ được chia nhỏ ra thành nhiều phân đoạn khác nhau, và các phần này sẽ được chạy song song trên nhiều node khác nhau Thêm vào đó, Hadoop cung cấp 1 hệ thống file phân tán (HDFS) cho phép lưu trữ dit liệu lên trên nhiều node Cả Map/Reduce
và HDFS đều được thiết kế sao cho framework sẽ tự động quản lý được các lỗi, các hư hỏng về phần cứng của các node” [9]
Wikipedia định nghĩa:
“Hadoop là một framework nguồn mở viết băng Java cho phép phát triển các ứng dụng phan tán có cường độ dữ liệu lớn một cách miễn phi Nó cho phép các ứng dụng có thé làm việc với hàng ngàn node khác nhau và hàng petabyte dit liệu Hadoop lấy được phát triển dựa trên ý tưởng từ các công bố của Google về mô hình MapReduce và hệ thống file phân tán
Google File System (GES)” [9]
2.1.2 Lịch sử Hadoop
Hadoop được tạo ra bởi Dough Cutting, người sáng tao ra Apache Lucene — bộ thư viện
tạo chỉ mục tìm kiếm trên text được sử dụng rộng rãi.
2.1.3 Các thành phan của Hadoop
~ ⁄
N /
- Chunka ` ( Pig `
Trang 8Luận văn này chi tập trung nghiên cứu HDFS.
2.1.4 Ứng dụng của Hadoop
Ngày nay, ngoài Yahoo!, có nhiều công ty sử dụng Hadoop như là một công cụ dé lưu
trữ và phân tích dữ liệu trên các khối dữ liệu lớn như: Twitter, Facebook, A9.com — Amazon,
2.1.5 Tổng quan của một Hadoop cluster
Như đã giới thiệu ở mục 2.1.3, HDFS và MapReduce là hai thành phần chính của một
Hadoop cluster Nhìn chung, kiến trúc của Hadoop là kiến trúc master-slave, và cả hai thành
phần HDFS và MapReduce đều tuân theo kiến trúc master-slave này Kiến trúc một Hadoop
cluster như cho trên Hình 2.2.
quan lý việc mo/dong
Quan lý lưu Trữ cốc lăn lý lưu trữ cặc lăn lý lưu trữ các
blocks theo yêu cẩu của ;ekstheoyôucâucủa »cks theo yêu cẩu rủa
NamøNode vadap (ng kwmeNodovadipững ;meNode va đáp ứng
yêu cầu truy c&p cáo u cẩu truy cập các lu cẩu truy cập cácblocks từ client ocks từ client pcks từ client
Thực thi các Map task we thi các Map taskvũ Reduce task Theo Reduce task thea
yêu cầu cia JobTracker | ju cẩu của JobTracker
Slave Slave Slave
Gp Cac node chay HDFS Cac node chay MapReduce Engine
Hình 2.2 Kiến trúc tong quan một Hadoop cluster
Trang 9File System Namesps 7” IMyFolder/MyFile
Qui ước: Disk Disk Disk Disk
Cáo thông điệp truyền yêu câu
Hình 2.3 Kiến trúc HDFS
Trang 102.2.2.3 NameNode và quá trình tương tác giữa client và HDFSa) Quá trình đọc file
Sơ đồ sau miêu tả rõ quá trình client đọc một file trên HDFS.
Danh sách các block id và nơi lưu trữ
Hình 2.4 Quá trình đọc file trên HDES
b) Ghi file
Sơ đồ sau mô tả quá trình tương tác giữa client lên hệ thống HDFS.
Trang 111 Gửi yêu cầu tạo file
2.2.3 Các tính năng của NameNode
2.2.3.1 Nhận biết cau trúc topology của mang
2.2.3.2 Sắp xếp bản sao của các block lên các DataNode 2.2.3.3 Cân bang cluster
2.2.3.4 Thu nhặt rác (Gabage collettion)
2.2.4 Khả năng chịu lỗi và chan đoán lỗi của HDFS2.2.4.1 Kha năng phục hồi nhanh chóng
Trang 122.2.4.2 Nhân bản các block
2.2.4.3, Nhân ban metadata trên NameNode với SecondaryNameNode2.2.4.4 Toàn ven dt liệu trên HDFS
2.2.5 Các giao diện tương tác
2.2.5.1 Giao diện command line
Đây là giao điện đơn giản nhất dé tương tác với HDFS HDFS cung cấp các shell dé
thao tác trên folder, file như tạo, xoá, di chuyền, rename, copy Các shell này đều thao tác
trên HDFS thông qua các URI có dạng hdfs:/<namenode>/<path>
2.2.5.2 Giao diện Java
Hadoop được viết bằng Java Vì vậy, tất các thao tác tương tác với HDFS đều được
thực hiện thông qua các Java API Các shell hình thành nên giao diện command line của
HDFS cũng được viết từ các Java API Thông qua các Java API của Hadoop, ta có thé dé dàng phát triển các ứng dụng tương tác với HDFS giống như với các hệ thống file truyền thông khác.
2.2.5.3 Giao diện web
Đây là giao diện cho phép ta dễ dàng nắm bắt được tình trạng hoạt động của
HDES, biết được danh sách các node đang hoạt động, tinh trạng dia cứng trên từng node
Giao diện này còn cho phép ta browse các file trên HDFS và download các file Tuy nhiên
ta không thể tạo các thay đổi lên hệ thống (tạo, xoá, cập nhật file/thư mục ) từ giao diện này.
Dia chỉ tương tác với HDFS: http:/Knamenode>:50070/
2.2.6 Quản trị HDFS
2.2.6.1 Quyền truy nhập
2.2.6.2 Quản lý hạn ngạch (quotas)
2.3 Các ưu và nhược điểm của hệ thống file phân tán Hadoop 2.3.1 Các ưu điểm của Hadoop
2.3.2 Nhược điểm và giới hạn của Hadoop
Trang 132.4 Kết chương
Hadoop (http://hadoop.apache.org) là một framework mã nguồn mở đáng tin cậy, có kha năng mở rộng, hỗ trợ tính toán phân tán với dir liệu rất lớn ( Tera byte, Peta byte, Exa byte).
Hadoop được xây dựng dựa trên tư tưởng Map/Reduce, đây là mô hình mà ứng dung sé
được chia nhỏ thành nhiều phân đoạn khác nhau và các phần này sẽ được chạy song song trên
nhiều Node khác nhau Thêm vào đó Hadoop cung cấp một thống quản lý file phân tán gọi là
HDFS (Hadoop Distribute File System) cho phép lưu trữ dit liệu trên nhiều node khác nhau trong kiến trúc cluster HDFS đều được thiết kế sao cho hadoop có khả năng chịu lỗi dữ liệu,
phân cứng của các node.
Trang 14CHƯƠNG 3: XÂY DỰNG VA THU NGHIEM MÔ HÌNH UNG DUNG
HE THONG FILE PHAN TAN HADOOP
3.1 Xây dung mô hình ứng dụng hệ thống file phan tán cỡ nhỏ
3.1.1 Mục tiêu
Hadoop là một Linux-based framework, có nghĩa là nó chỉ hoạt động trên môi trườngLinux Do làm việc trên môi trường Linux, nên việc phải dùng công cụ dòng lệnh (command
line) cho các quá trình cài đặt và quản lý hệ thống là bắt buộc Mục tiêu là xây dựng mô hình ứng dụng hệ thống file phân tán HDFS và cài đặt thử nghiệm HDFS làm hệ thống lưu trữ tập trung cho hệ thống lưu trữ cho các công ty vừa và nhỏ.
3.1.2 Các yêu cầu của mô hình ứng dụng hệ thống file phân tán cỡ nhỏ
Mô hình ứng dụng hệ thống file phân tán cỡ nhỏ dựa trên hệ thống file phân tán Hadoop cần đạt được các yêu cầu sau:
- Cung cấp dung lượng lưu trữ đủ lớn và khả năng mở rộng tốt, đáp ứng yêu cầu lưu trữ cho doanh nghiệp cỡ vừa và nhỏ Dung lượng lưu trữ tùy theo yêu cầu của từng doanh nghiệp, có thể vào khoảng 10-100 TB Việc tăng dung lượng lưu trữ có thể thực hiện một cách tương đối đơn giản bằng cách bồ sung máy chủ lưu trữ.
- Cung cấp tính tin cậy cao thông qua cơ chế sao lưu trực tuyến (replicate) Mỗi khối đữ liệu của file được lưu thành 2-3 bản trên 2-3 máy chủ lưu trữ khác nhau Số bản sao lưu có thê được cấu hình theo yêu cầu của mỗi hệ thống.
- Giá thành xây dựng và vận hành thấp, phù hợp với quy mô hệ thong CNTT của doanh nghiệp Hệ thống có thê được triển khai dựa trên các phần cứng thông thường có sẵn trên thị
- Việc quản trị và vận hành dễ dàng, phù hợp với trình độ CNTT của doanh nghiệp - Giao diện truy nhập/sử dụng hệ thống đơn giản, tương tự hệ thống file cục bộ.
3.1.3 Mô hình cài đặt Hadoop cluster
Mô hình Hadoop cluster được cài đặt như minh họa trên Hình 3.1.
- NameNode và JobTracker sẽ nam cùng một node vat ly là may master.
- Các máy sau, mỗi máy sẽ đóng vai trò DataNode và TaskTracker: slave01, slave02.
Trang 15- Máy slave02 sẽ đồng thời đóng vai trò là SecondatyNameNode.
Hình 3.1: Mô hình Hadoop cỡ nhỏ trên Linux
Với một mẫu cài đặt này, để đơn giản hóa việc cài đặt, mỗi máy trên cluster sẽ được cài đặt (hệ điều hành, phần mềm) và cấu hình hoàn toàn giống nhau.
Trang 16Tạo user Hadoop.Cài đặt Java.
Cấu hình SSH.
a) Tạo user hadoop
Ta tiến hành tạo user hadoop và password, các lệnh sau phải được chạy dưới quyền user
root hay | user có quyén han thuc hién useradd.
[root@master duy]# useradd hadoop
[root@master duy]# passwd hadoop
Changing password for user hadoop.New password:
Retype new password:
BAD PASSWORD: it is based on a dictionary wordBAD PASSWORD: is too simple
Passwd: all authentication tokens updated successfully.[root@master duy]# su hadoop
[hadoop@master duy]$ If
b) Cai dat Java
Hadoop được viết bằng Java, vì vậy dé chạy được hadoop, tại mỗi node trên cluster đều
phải được cài đặt môi trường Java Việc cài đặt Java nằm ngoài phạm vi của luận văn, chúng ta có thé tham khảo cách cài đặt JDK trên trang web: http://timarcher.com/node/59 hoặc
http://www.roseindia.net/linux/tutorial/installingjdk5 onlinux.shtml.
Kiêm tra việc cai đặt môi trường java:[hadoop@master ~]$ java -version
java version "1.6.0 18"
Java(T) SE Runtime Environment (build 1.6.0 18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
c) Cau hinh SSH
Kiểm tra xem máy có được cài đặt SSH hay chưa:
[hadoop@master ~]$ service sshd status
openssh-daemon (pid_ 1116) is running
Nếu SSH chưa được cai đặt, ta tiến hành cài đặt gói OpenSSH theo hướng dan tai địa
chỉ sau: http://www.topology.org/linux/openssh.html.
Sau đó, tiến hành cấu hình passwordless login cho dich vụ SSH với user Hadoop: Đầu tiên phát sinh 1 cặp public/private key: