Tải bản đầy đủ (.docx) (23 trang)

Xây dựng HDFS (Hadoop Distributed File System) trong hệ quản lý file phân tán cung cấp truy cập thông lượng cao.

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 (778.34 KB, 23 trang )

TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THỰC PHẨM
THÀNH PHỐ HỒ CHÍ MINH

ĐỒ ÁN KẾT THÚC MƠN HỌC
XỬ LÝ TÍNH TỐN SONG SONG

Đề tài : Xây dựng HDFS (Hadoop Distributed File System) trong hệ
quản lý file phân tán cung cấp truy cập thông lượng cao.

Giáo viên hướng dẫn:
Sinh viên thực hiện:


Mục Lục

2


I.

Hadoop là gì?

Hadoop là một Apache framework mã nguồn mở cho phép phát triển các ứng dụng
phân tán (distributed processing) để lưu trữ và quản lý các tập dữ liệu lớn.
Hadoop hiện thực mơ hình MapReduce, mơ hình mà ứng dụng sẽ được chia nhỏ ra
thành nhiều phân đoạn khác nhau được chạy song song trên nhiều node khác nhau.
Hadoop được viết bằng Java tuy nhiên vẫn hỗ trợ C++, Python, Perl bằng cơ chế
streaming.
Mục đích : Mong muốn của các danh nghiệp là tận dụng việc lượng dữ liệu khổng
lồ để đưa ra quyết định kinh danh, Hadoop giúp các công ty xử lý khối lượng cỡ
terabyte và thậm chí là petabytes dữ liệu phức tạp tương đối hiệu quả với chi phí


thấp.
Các doanh nghiệp đang nỗ lực tìm kiếm thông tin quý giá từ khối lượng lớn dữliệu
phi cấu trúc được tạo ra bởi các web log, công cụ clickstream, các sản phẩm truyền
thơng xã hội.
Chính yếu tố đó dẫn làm tăng sự quan tâm đến cơng nghệ mã nguồn mởHadoop.
Hadoop, một dự án phần mềm quản lý dữ liệu Apache với nhân trong khung phần
mềm MapReduce của Google, được thiết kế để hỗ trợ các ứng dụng sử dụng được
số lượng lớn dữ liệu cấu trúc và phi cấu trúc.
Không giống như các hệ quản trị cơ sở dữ liệu truyền thống, Hadoop được thiết kế
để làm việc với nhiều loại dữ liệu và dữ liệu nguồn.
Công nghệ HDFS của Hadoop cho phép khối lượng lớn công việc được chia thành
các khối dữ liệu nhỏ hơn được nhân rộng và phân phối trên các phần cứng của một
cluster để xử lý nhanh hơn.
Công nghệnày đã được sử dụng rộng rãi bởi một số trang web lớn nhất thế giới,
chẳng hạn như Facebook, eBay, Amazon, Baidu, và Yahoo.
3


Các nhà quan sát nhấn mạnh rằng Yahoo là một trong những nhà đóng góp lớn nhất
đối với Hadoop.
II.
Kiến trúc Hadoop.
Một cụm Hadoop nhỏ gồm 1 master node và nhiều worker/slave node. Toàn bộ
cụm chứa 2 lớp, một lớp MapReduce Layer và lớp kia là HDFS Layer.
Mỗi lớp có các thành phần liên quan riêng. Master node gồm JobTracker,
TaskTracker, NameNode, và DataNode. Slave/worker node gồm DataNode, và
TaskTracker. Cũng có thể slave/worker node chỉ là dữ liệu hoặc node để tính toán.

Hadoop framework gồm 4 module:


1. Distriduted file system (HDFS):
4


Đây là hệ thống file phân tán cung cấp truy cập thông lượng cao cho ứng
dụng khai thác dữ liệu. Hadoop Distributed File System (HDFS) là hệ thống
tập tin ảo.
Khi chúng ta di chuyển 1 tập tin trên HDFS, nó tự động chia thành nhiều
mảnh nhỏ. Các đoạn nhỏ của tập tin sẽ được nhân rộng và lưu trữ trên nhiều
máy chủ khác để tăng sức chịu lỗi và tính sẵn sàng cao.
HDFS sử dụng kiến trúc master/slave, trong đó master gồm một NameNode
để quản lý hệ thống file metadata và một hay nhiều slave DataNodes để lưu
trữ dữ liệu thực tại.
Một tập tin với định dạng HDFS được chia thành nhiều khối và những khối
này được lưu trữ trong một tập các DataNodes. NameNode định nghĩa ánh
xạ từ các khối đến các DataNode. Các DataNode điều hành các tác vụ đọc và
ghi dữ liệu lên hệ thống file.
Chúng cũng quản lý việc tạo, huỷ, và nhân rộng các khối thông qua các chỉ
thị từ NameNode.
2. Hadoop MapReduce:
Đây là hệ thống dựa trên YARN dùng để xử lý song song các tập dữ liệu lớn.
Là cách chia một vấn đề dữ liệu lớn hơn thành các đoạn nhỏ hơn và phân tán
nó trên nhiều máy chủ.
Mỗi máy chủ có 1 tập tài nguyên riêng và máy chủ xử lý dữ liệu trên cục bộ.
Khi máy chủ xử lý xong dữ liệu, chúng sẽ gởi trở về máy chủ chính.
MapReduce gồm một single master (máy chủ) JobTracker và các slave (máy
trạm) TaskTracker trên mỗi cluster-node.
Master có nhiệm vụ quản lý tài nguyên, theo dõi quá trình tiêu thụ tài
nguyên và lập lịch quản lý các tác vụ trên các máy trạm, theo dõi chúng và
thực thi lại các tác vụ bị lỗi.

Những máy slave TaskTracker thực thi các tác vụ được master chỉ định và
cung cấp thông tin trạng thái tác vụ (task-status) để master theo dõi.

5


JobTracker là một điểm yếu của Hadoop Mapreduce. Nếu JobTracker bị lỗi
thì mọi cơng việc liên quan sẽ bị ngắt quãng.
3. Hadoop Common:
Đây là các thư viện và tiện ích cần thiết của Java để các module khác sử dụng.
Những thư viện này cung cấp hệ thống file và lớp OS trừu tượng, đồng thời
chứa các mã lệnh Java để khởi động Hadoop.
4. Hadoop YARN:
Quản lý tài nguyên của các hệ thống lưu trữ dữ liệu và chạy phân tích.
III.

MapReduce

Map-reduce [13] là mơ hình dùng để xử lý dữ liệu. Trong quá trình xử lý dữ
liệu, MapReduce sẽ chia ra 2 giai đoạn: giai đoạn Map và giai đoạn Reduce. Cả
hai giai đoạn này đều có đầu vào và đầu ra ở dạng key, value. Người lập trình
cần viết 2 hàm chức năng để có thể xử lý dữ liệu đó là hàm chức năng Map và
hàm chức năng Reduce.

Mơ hình Map-Reduce

Về mặt định nghĩa thuật tốn, ta có thể mô tả Map-Reduce như sau:
Input: dữ liệu dưới dạng Key → Value
6



Lập trình viên viết 2 thủ tục:
Map(k, v) → <k’,v’>*
Reduce(k', <v’>*) →<k’,v’>*
Map biến mỗi key k thu được bằng thành cặp <k’,v’>Reduce nhận đầu vào là khoá
k' và danh sách cách giá trị v' và trả về kết quả là cặp <k’,v’> .

Cơ chế Map-Reduce

Ví dụ với hình mơ tả ở trên thì Map trả về danh sách: , cịn Reduce nhận kết quả
trên và trả về .

IV. Hệ

thống tệp phân tán Hadoop.

1. Các vấn đề Hadoop có thể giải quyết


Hadoop có khả năng làm việc cùng với một khối lượng dữ liệu vơ cùng
lớn.



Hầu hết. các nguồn dữ liệu đều có khả năng được xử lý trong một mơi
trường dạng phân tán, đồng bộ cũng như được lưu trữ tại nhiều phần cứng
khác nhau.

7





Hadoop sở hữu khả năng băng thông được mọi lưu trữ giữa các phần
cứng vật lý của kho dữ liệu có giới hạn cho phép. Chính vì vậy, nó cần
được quản lý cũng như nâng cấp sao cho kịp thời nhất.

2. Hướng giải quyết của Hadoop

V.



Thực hiện nhiệm vụ quản lý các file phân tán: HDFS (Hadoop Distributed
File System) được giao nhiệm vụ chia nhỏ các kho dữ liệu thành nhiều
phần khác nhau và những dữ liệu này đều sẽ được quản lý sao cho có hệ
thống nhất.



Mơ hình MapReduce: Đây là một trong những mơ hình quen thuộc của
Hadoop. Nó được phân cơng thực hiện chia nhỏ các task thành nhiều
phần khác nhau để có thể dễ dàng xử lý hơn. Những task này đều sẽ được
xử lý song song dựa trên các Node CPU khác nhau và sẽ được đồng bộ
với máy chủ quản lý Master Node.

Hadoop hoạt động như thế nào?
1. Giai đoạn 1

Một user hay một ứng dụng có thể submit một job lên Hadoop (hadoop job client)

với yêu cầu xử lý cùng các thông tin cơ bản:
1.

Nơi lưu (location) dữ liệu input, output trên hệ thống dữ liệu phân tán.

2.

Các java class ở định dạng jar chứa các dòng lệnh thực thi các hàm map
và reduce.

Các thiết lập cụ thể liên quan đến job thông qua các thông số truyền vào.
2. Giai đoạn 2
3.

Hadoop job client submit job (file jar, file thực thi) và các thiết lập cho JobTracker.
Sau đó, master sẽ phân phối tác vụ đến các máy slave để theo dõi và quản lý tiến
trình các máy này, đồng thời cung cấp thơng tin về tình trạng và chẩn đốn liên
quan đến job-client.
3. Giai đoạn 3

8


TaskTrackers trên các node khác nhau thực thi tác vụ MapReduce và trả về kết quả
output được lưu trong hệ thống file.
Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền – Daemon, hoặc các
chương trình thường trú, trên các máy chủ khác nhau trên mạng của bạn.
Những trình nền có vai trị cụ thể, một số chỉ tồn tại trên một máy chủ, một số có
thể tồn tại trên nhiều máy chủ


VI.

Ưu điểm của Hadoop?

Các điểm thuận lợi khi dùng Hadoop:


Hadoop có khả năng thêm nhiều node mới và thay đổi được các cấu hình
của chúng một cách dễ dàng.



Các doanh nghiệp khơng cần phải đầu tư quá nhiều vào phần cứng quá
mạnh và đặc biệt khi chạy Hadoop. Nhờ vậy, bạn có thể tiết kiệm được tối
đa các chi phí đầu tư ban đầu.



Hadoop có khả năng xử lý được hầu hết những kho dữ liệu có cấu trúc
hoặc khơng có cấu trúc một cách dễ dàng.



Trong suốt q trình hoạt động thì 1 node trên hệ thống nếu bị lỗi thì nền
tảng của Hadoop sẽ có thể tự động di chuyển sang dạng node dự phịng
khác. Nhờ vậy mà hệ thống sẽ có thể hoạt động xun suốt ổn định hơn.



Hadoop đó là mã nguồn mở, điều này giúp nó tương thích rất nhiều cấu

hình và platform khác nhau

9


VII.

Demo cài đặt Hadoop

Vào để tải bản hadoop
Vào để tải bản Java SE
Development Kit 8u201
Vào để tải file cập nhật các Hadoop
Configurations

Cài đặt môi trường Java

10


Giải nén file Hadoop

11


Cài đặt môi trường cho Hadoop

12



Kiểm tra q trình cấu hình mơi trường Java và Hadoop

13


Cấu hình các tập tin cho Hadoop
Trong thư mục C:/Hadoop-3.3.0/etc/hadoop lần lượt chỉnh sửa các file:

14


Tạo thư mục “data” trong “C:/Hadoop-3.3.0”
Tạo thư mục con “datanode” trong “C:/Hadoop-3.3.0/data”
Tạo thư mục con “namenode” trong “C:/Hadoop-3.3.0/data”

Chép đè thư mục bin này trong thư mục bin của C:\hadoop-3.3.0\bin

Sao chép file: “C:/hadoop-3.3.0/share/hadoop/yarn/timelineservice/ hadoopyarn-server-timelineservice-3.3.0.jar”
vào
“C:/hadoop3.3.0/share/hadoop/yarn/hadoop-yarn-server-timelineservice-3.3.0.jar”

15


Nếu chạy Muti Node vào C:\Windows\System32\drivers\etc thêm các
IP và tên Node master và các Slave

16



VIII. HDFS là gì?
Hadoop Distributed File System (HDFS) [12] là một hệ thống file phân tán
được thiết kế để chạy trên phần cứng thông thường. HDFS cũng tương tự những hệ
thống file phân tán hiện có. Tuy nhiên, sự khác biệt ở đây là HDFS có khả năng
chịu lỗi cao (fault-tolerant) và được thiết kế để deploy trên các phần cứng rẻ tiền.
HDFS cung cấp khả năng truy cập high throughput từ ứng dụng và thích hợp với
các ứng dụng có tập dữ liệu lớn.
IX.

Các tính năng của HDFS

Kiến trúc của HDFS là master / slave. Một HDFS cluster luôn gồm 1
NameNode. NameNode này là 1 master server và nó quản lý hệ thống tập tin cũng
như điều chỉnh truy cập đến các tập tin khác nhau.
Bổ sung cho NameNode có nhiều DataNodes. Ln có 1 DataNode cho mỗi máy
chủ dữ liệu. Trong HDFS, 1 tập tin lớn được chia thành 1 hoặc nhiều khối và các
khối này được lưu trong 1 tập các DataNodes.
Tác vụ chính của NameNode là mở, đóng và đổi tên các tập tin, và thư mục và điều
chỉnh truy cập đến hệ thống tập tin, trong khi tác vụ chính của DataNode là đọc và
ghi vào hệ thống tập tin. DataNode cũng làm nhiệm vụ tạo, xóa, hoặc nhân rộng dữ
liệu dựa trên chỉ dẫn từ NameNode.

17


Trong thực tế, NameNode và DataNode là phần mềm được thiết kế để chạy trên
máy
chủ,
được
viết

bằng
Java

Namenode sẽ chịu trách nhiệm điều phối các thao tác truy cập (đọc/ghi dữ liệu)
của client lên hệ thống HDFS. Và tất nhiên, do các DataNode là nơi thật sự lưu trữ
các block của các file trên HDFS, nên chúng sẽ là nơi trực tiếp đáp ứng các thao
tác truy cập này.
Chẳng hạn như khi client của hệ thống muốn đọc một file trên hệ thống HDFS,
client này sẽ thực hiện một request (thông qua RPC) đến Namenode để lấy các
metadata của file cần đọc.
Từ Metadata này nó sẽ biết được danh sách các block của file và vị trí của các
DataNode chứa các bản sao của từng block. Client sẽ truy cập vào các DataNode
để thực hiện các request đọc các block.
Namenode thực hiện nhiệm vụ của nó thơng qua một daemon tên namenode chạy
trên port 8021. Mỗi DataNode server sẽ chạy một daemon datanode trên port 8022.
Định kỳ, mỗi DataNode sẽ báo cáo cho NameNode biết về danh sách tất cả các
block mà nó đang lưu trữ, NameNode sẽ dựa vào những thông tin này để cập nhật
lại các metadata trong nó.
Cứ sau mỗi lần cập nhật lại như vậy, Metadata trên NameNode sẽ đạt được tình
trạng thống nhất với dữ liệu trên các DataNode. Tồn bộ trạng thái của metadata
khi đang ở tình trạng thống nhất này được gọi là một checkpoint.

18


Metadata ở trạng thái checkpoint sẽ được dùng để nhân bản metadata dùng cho
mục đích phục hồi lại NameNode nếu NameNode bị lỗi.
X.

Kiến trúc HDFS


Các khái niệm bạn cần nắm ở đây đó chính là master, slave, NameNode,
DataNodes, cách đọc file trên HDFS, và cách ghi file trên HDFS.

19


Một cụm HDFS bao gồm hai loại nút (node) hoạt động theo mơ hình nút chủ - nút
thợ (master-worker):
Một cụm HDFS có 1 namenode (master – nút chủ)
Một cụm HDFS có một hoặc nhiều các datanode (worker - nút thợ)
Namenode quản lý các namespace filesystem. Nó quản lý một filesystem
tree và các metadata cho tất cả các file và thư mục trên tree. Thông tin này được
lưu trữ trên đĩa vật lý dưới dạng không gian tên ảnh và nhật ký (edit log).
Namenode cịn quản lý thơng tin các khối (block) của một tập tin được lưu trên
những datanodes nào.
HDFS đưa ra một không gian tên cho phép dữ liệu được lưu trên tập tin.
Trong đó một tập tin được chia ra thành một hay nhiều khối (block) và các block
được lưu trữ trên một tập các DataNode. Namenode thực thi các hoạt động trên hệ
thống quản trị không gian tên tập tin như mở, đóng, đổi tên tập tin và thư mục.
Namenode còn quyết định việc kết nối các khối với các DataNode. Các DataNode
có tính năng xử lý các yêu cầu về đọc ghi từ máy khách. Ngoài ra các DataNode
cịn thực hiện việc tạo, xóa, lặp các khối theo sự hướng dẫn của DataNode
20


Một phần mềm được thiết kế bao gồm NameNode và DataNode có thể chay
trên những máy tính thơng thường. u cầu duy nhất chỉ là chạy hệ điều hành
GNU/Linux. HDFS được xây dựng trên ngôn ngữ Java nên bất kỳ máy nào hỗ trợ
Java đều có thể chạy phần mềm thực thi NameNode và DataNode.

XI. Đọc ghi dữ
1. Đọc dữ liệu

file trên HDFS

Với khối dữ liệu (block) ID và địa chỉ IP đích máy chủ (host) của
Datanode, máy khách (client) có thể liên lạc với các Datanode cịn lại để đọc
các khối (block) cần thiết. Quá trình này lặp lại cho đến khi tất cả các khối
trong file được đọc và máy khách đóng luồng đọc file trực tuyến

21


2. Ghi file trên HDFS

Việc ghi dữ liệu sẽ phức tạp hơn việc đọc dữ liệu đối với hệ thống HDFS.Ban đầu,
máy khách gửi yêu cầu đển tạo một file bằng việc sử dụng Hadoop FileSystem
APIs. Một yêu cầu được gửi đến namenode để tạo tập tin metadata nếu user có
quyền tạo. Thơng tin Metadata cho tập tin mới đã được tạo; tuy nhiên lúc này chưa
có một block nào liên kết với tập này. Một tiến trình trả kết quả được gửi lại cho
máy khách xác nhận yêu cầu tạo file đã hồn thành và bắt đầu có thể ghi dữ liệu. Ở
mức API, một đối tượng Java là stream sẽ trả về. Dữ liệu của máy khách sẽ ghi vào
luồng này và được chia ra thành các gói, lưu trong queue của bộ nhớ. Một tiến
trình riêng biệt sẽ liên hệ với namenode để yêu cầu một tập datanode phục vụ cho
việc sao lưu dữ liệu vào các khối (block). Máy khách sẽ tạo một kết nối trực tiếp
đến datanode đầu tiên trong danh sách. Datanode đầu tiên đó sẽ kết nối lần lượt
đến các datanode khác. Các gói dữ liệu được ghi dần vào các datanode. Mỗi
22



datanode sẽ phản hồi dữ liệu ghi thành công hay khơng. Q trình này kết thúc khi
tồn bộ các gói dữ liệu đã được lưu tại các khối (block) của datanode
XII.

Đề xuất

XIII. Đánh giá phân công

Mssv
2001180424
2001181221
2001180128
2001180127
2001180165

Họ và tên
Nguyễn Thái Hưng
Võ Thị Thu Ngân
Lê Văn Ngoan
Đỗ Văn Phú Q
Ngơ Trần Vĩnh Kha

Hoàn thành
100%
100%
100%
100%
100%
23




×