You are on page 1of 27

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC VĂN HIẾN

KHOA KINH TẾ-QUẢN TRỊ


------------

BÀI TIỂU LUẬN CUỐI KÌ

MÔN: CHUYÊN ĐỀ DỮ LIỆU LỚN

ĐỀ TÀI: TÌM HIỂU VỀ HADOOP

TP. HỒ CHÍ MINH - 2024


BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC VĂN HIẾN

KHOA KINH TẾ QUẢN TRỊ

----- -----

BÀI TIỂU LUẬN CUỐI KÌ

MÔN: CHUYÊN ĐỀ DỮ LIỆU LỚN

ĐỀ TÀI: TÌM HIỂU VỀ HADOOP

GVHD: ThS. Lê Hồng Danh

SVTH: Nhóm 1

1. Nguyễn Ngọc Khánh – MSSV: 201A310001

2. Lê Khả Minh – MSSV: 201A310024

3. Lê Trọng Nghĩa – MSSV: 211A310069

4. Ngô Thanh Phương – MSSV: 211A310058

5. Lã Thị Hoài Thu – MSSV: 211A310021

TP. HỒ CHÍ MINH - 2024


NHẬN XÉT CỦA GIẢNG VIÊN

….…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….………………………………….

…………………………………………….…………………………………
Mục Lục
MỤC LỤC HÌNH ẢNH ................................................................................................. 5
LỜI CẢM ƠN ................................................................................................................ 6
CHƯƠNG 1: TỔNG QUAN ........................................................................................ 7
1. Nhu cầu thực tế ........................................................................................................... 7

1.1 Nhu cầu lưu trữ và xử lý dữ liệu lớn .................................................................. 7

1.2 Cần rất nhiều node lưu trữ với chi phí thấp ........................................................ 7

1.3 Nhu cầu cần có một hạ tầng chung ..................................................................... 8


CHƯƠNG 2: TÌM HIỂU VỀ HADOOP .................................................................... 9
2.1. Khái niệm về Hadoop ............................................................................................. 9
2.2. Lịch sử phát triển của Hadoop................................................................................. 9
2.3. Các thành phần của Hadoop .................................................................................. 11
2.4. Hadoop Distributed File System (HDFS) ............................................................. 14

2.4.1. Hệ thống file phân tán ................................................................................... 14

2.4.2 Giới thiệu HDFS ............................................................................................ 16

2.4.3. Kiến trúc của HDFS ...................................................................................... 17


2.5 Lợi ích của Hadoop ................................................................................................. 23
2.6 Mô hình ứng dụng Hadoop ..................................................................................... 24
TÀI LIỆU THAM KHẢO .......................................................................................... 27
MỤC LỤC HÌNH ẢNH
Hình 1. Hạ tầng của hadoop ................................................................................................. 8

Hình 2. Định nghĩa về hadoop ............................................................................................. 9

Hình 3 Các thành phần của Hadoop .................................................................................. 11

Hình 4 Mapreduce and HDFS............................................................................................ 12

Hình 5 Vai trò của NameNode, Datanode,…. ................................................................... 13

Hình 6 Hệ thống file NTFS ................................................................................................ 15

Hình 7 Hệ thống file phân tán ............................................................................................ 15

Hình 8 Kiến trúc của Hadoop ............................................................................................ 17

Hình 9 Chức năng của Namenode ..................................................................................... 18

Hình 10 NameNode và quá trình tương tác giữa client và HDFS .................................... 19

Hình 11 Qúa trình đọc file dữ liệu ..................................................................................... 20

Hình 12 Qúa trình ghi file dữ liệu ...................................................................................... 20

Hình 13 Hadoop phiên bản 1 ............................................................................................. 21

Hình 14 Hadoop phiên bản 2 ............................................................................................. 22

Hình 15 Hadoop phiên bản 3 ............................................................................................. 22

Hình 16 Ứng dụng Hadoop vào Netflix ............................................................................ 24


LỜI CẢM ƠN

Để hoàn thành đề tào này, chúng em xin gửi lời cảm ơn chân thành đến: Khoa,
Trường Đại học Văn Hiến đã tạo điều kiện về cơ sở vật chất với hệ thống thư viện hiện
đại, đa dạng các loại sách, tài liệu thuận lợ cho việc học tập, tìm hiểu và nghiên cứu
thông tin khoa học.

Chúng em xin chân thành cảm ơn ThS. Lê Hồng Danh đã tận tâm giảng dạy,
hướng dẫn chi tiết để chúng em có kiến thức về đề tài này.

Mặc dù đã cố hết sức trong suốt quá trình thực hiện nhưng không thể tránh khỏi
những thiếu sót. Rất mong nhận được sự nhận, góp ý, phê bình và chỉ bảo từ Thầy để bài
được hoàn thiện hơn.

Chúng em xin kính chúc Thầy nhiều sức khỏe, thành công và hạnh phúc.

Chúng em xin chân thành cảm ơn!


CHƯƠNG 1: TỔNG QUAN

1. Nhu cầu thực tế

1.1 Nhu cầu lưu trữ và xử lý dữ liệu lớn

Trong thời đại chúng ta đang sống, ngành công nghệ thông tin phát triển cực kỳ
nhanh chóng. Số lượng người sử dụng máy tính và các tài nguyên trực tuyến cho công
việc, giải trí... ngày càng tăng mạnh. Cho đến nay, đã có 23% dân số Việt Nam sử dụng
Internet, số lượng người tham gia cộng đồng trực tuyến trên thế giới là 1,46 tỷ người (theo
Mark Higginson, Giám đốc của hãng phân tích Nielsen Online). Sự gia tăng này đồng
nghĩa với việc tạo ra lượng dữ liệu khổng lồ. Việc đo lường được tổng dung lượng dữ liệu
số đã được lưu trữ trên thế giới vô cùng khó khăn. Tuy nhiên, IDC đã đưa ra ước lượng
rằng tổng dung lượng dữ liệu số được lưu trữ năm 2006 khoảng 0.18 zettabytes, và con số
đó năm 2011 sẽ là 1.8 zettabytes. Một zettabytes bằng 1012 exabytes (1 exabyte= 10 21
bytes), bằng một triệu Petabytes và bằng 1 tỷ Terabytes. Có thể hình dung rằng nếu chia
đều khối lượng dữ liệu được lưu trữ trong các thiết bị điện tử ra cho tất cả mọi người trên
thế giới, thì mỗi người sẽ được một lượng dữ liệu bằng một ổ cứng khoảng vài trăm
Gigabytes. Lượng dữ quá lớn đó phần lớn đến từ việc sử dụng các dịch vụ trên mạng,
chúng ta hãy khảo sát thử một số hệ thống sau đây: Thị trường chứng khoán New York
phát sinh ra khoảng 1 Terabyte dữ liệu về các giao dịch mỗi ngày; Facebook đang host
khoảng 10 tỷ tấm ảnh, tức khoảng một petabyte; Trang web Ancestry.com, một trang web
cung cấp dịch vụ lưu giữ gia phả đang lưu trữ khoảng 2,5 petabyte dữ liệu; Trang web
Internet Archive, đang lưu trữ khoảng 2 petabytes dữ liệu, và gia tăng với tốc độ khoảng
20 terabyte/tháng.

1.2 Cần rất nhiều node lưu trữ với chi phí thấp

Khi khối lượng dữ liệu trong hệ thống gia tăng lên mức độ nhất định (khoảng hàng
ngàn Terabyte chẳng hạn), thì việc hệ thống sẽ phải đối mặt với thách thức trong việc lưu
trữ và phân tích dữ liệu. Khối dữ liệu rất lớn không thể lưu trữ trên một đĩa cứng vì hai lý
do đơn giản. Đầu tiên, ổ cứng có dung lượng lưu trữ hạn chế. Thứ hai, ngay cả khi khắc
phục được những hạn chế đó thì việc truy xuất một khối lượng dữ liệu lớn như vậy một
cách tuần tự (vì trên một đĩa đơn) sẽ cực kỳ khó khắn do tốc độ đọc đĩa bị hạn chế về mặt
thời gian.

Do vậy, bắt buộc chúng ta phải lưu trữ dữ liệu lên trên nhiều đĩa cứng thay vì chỉ một.
7
Điều này giúp cái thiện tốc độ truy xuất dữ liệu vì ta có thể tiến hành đọc/ghi một cách
song song lên các đĩa. Việc lưu trữ dữ liệu phân tán lên nhiều đĩa cứng mang lại lợi thế về
khả năng lưu trữ và tốc độ truy xuất dữ liệu. Tuy nhiên, việc duy trì một hệ thống phân tán
với nhiều đĩa cứng đã dẫn đến một số vấn đề cần được giải quyết. Đầu tiên, là vấn đề hỏng
hóc phần cứng. Do dữ liệu được lưu trên nhiều phần cứng khác nhau, nên khả năng một
(hay nhiều) phần cứng xảy ra hỏng hóc cũng tăng lên đáng kể. Một cách giải quyết vấn đề
này mà ta có thể thấy ngay, đó là lưu trữ trùng lắp các mẫu dữ liệu lên nhiều đĩa cứng khác
nhau. Vấn đề thứ hai là việc phân tích dữ liệu đôi khi cần truy đọc dữ liệu từ nhiều đĩa
cứng khác nhau. Tức là dữ liệu được đọc từ một đĩa có thể cần được kết hợp với dữ liệu
từ bất kỳ đĩa nào khác trên hệ thống. Các hệ thống phân tán thường cho phép kết hợp dữ
liệu từ nhiều nguồn khác nhau, tuy nhiên làm được điều này một cách chính xác là không
dễ chút nào. Sự bùng nổ về dữ liệu đã đặt ra cho chúng ta những thách thức, thách thức về
việc làm thế nào lưu trữ và xử lý tất cả dữ liệu đó. Tuy nhiên, ở một mặt khác nó lại mang
đến các cơ hội, cơ hội chiếm lĩnh một nguồn thông tin khổng lồ nếu chúng ta có đủ khả
năng phân tích và xử lý nguồn dữ liệu đó, biến những dữ liệu thô thành những thông tin
hữu ích với một mức chi phí hợp lý

1.3 Nhu cầu cần có một hạ tầng chung

Hiệu quả tin cậy và kiến trúc hai tầng bao gồm các node là các PC và chia là Các node
là các PC và Chia làm nhiều rack (khoảng 40 PC/rack)

Hình 1. Hạ tầng của hadoop

8
CHƯƠNG 2: TÌM HIỂU VỀ HADOOP
2.1. Khái niệm về Hadoop
Hadoop là một dự án mã nguồn mở được phát triển bởi Apache Software
Foundation. Nó là một hệ sinh thái gồm nhiều công cụ giúp lưu trữ và xử lý dữ liệu lớn
(Big Data) một cách hiệu quả. Hadoop hoạt động dựa trên mô hình lập trình MapReduce,
chia nhỏ dữ liệu thành các phần nhỏ và xử lý song song trên nhiều máy tính trong cụm
(cluster). Nhờ vậy, có thể xử lý lượng dữ liệu khổng lồ mà các máy tính đơn lẻ không thể
đáp ứng được.

Hình 2. Định nghĩa về hadoop


Dễ hiểu hơn, khi bạn có một tệp có kích thước lớn hơn tổng dung lượng lưu trữ của
hệ thống. Bạn sẽ không thể lưu trữ tệp đó trong không gian lưu trữ. Hadoop cho phép bạn
lưu trữ nhiều tệp có kích thước khổng lồ (lớn hơn dung lượng của máy tính). Hadoop sẽ
xử lý, phân tích dữ liệu, chia khối lượng công việc thành nhiều công việc nhỏ hơn có thể
chạy cùng lúc. Trước đây, các tổ chức, công ty phải mua phần cứng riêng với chi phí khá
cao để xử lý. Hadoop thì khác, nó không dựa vào phần cứng mà vẫn khả dụng và có thể
tự phát hiện các lỗi thông qua phần mềm của chính nó.

2.2. Lịch sử phát triển của Hadoop

Sự ra đời: Hadoop được phát triển bởi Doug Cutting và Mike Cafarella, lấy cảm
hứng từ hệ thống Google File System (GFS) và mô hình lập trình MapReduce của Google.
Cái tên Hadoop được lấy theo tên chú voi đồ chơi của con trai Doug Cutting và năm 2006
chính thức phát hành phiên bản Hadoop đầu tiên.

Sự phát triển: Năm 2003, Google công bố kiến trúc của hệ thống file phân tán
GFS (viết tắt từ Google File System) của họ. Các nhà kiến trúc sư của Nutch thấy rằng
9
GFS sẽ giải quyết được nhu cầu lưu trữ các file rất lớn từ quá trình crawl và index. Năm
2004, họ bắt tay vào việc ứng dụng kiến trúc của GFS vào cài đặt một hệ thống file phân
tán nguồn mở có tên Nutch Distributed File System (NDFS). Năm 2004, Google lại công
bố bài báo giới thiệu MapReduce. Vào đầu năm 2005, các nhà phát triển Nutch đã xây
dựng được phiên bản MapReduce trên Nutch, và vào giữa năm 2005, tất cả các thuật toán
chính của Nutch đều được cải tiến lại để chạy trên nền NDFS và MapReduce. NDFS và
MapRecude trong Nutch đã nhanh chóng tìm được các ứng dụng của mình bên ngoài lĩnh
vực search engine, và vào tháng hai 2006 Dough Cutting đã tách riêng NDFS và
MapReduce ra để hình thành một dự án độc lập có tên Hadoop. Cùng thời gian này, Dough
Cutting gia nhập vào Yahoo!. Tại đây ông được tạo một môi trường tuyệt vời để phát triển
Hadoop và vào tháng 2 năm 2008 Yahoo đã công bố sản phẩm search engine của họ được
xây dựng trên một Hadoop cluster có kích thước 10.000 nhân vi xử lý. Năm 2008, Apache
đã đưa Hadoop lên thành dự án ở top-level Apache Software Foundation, nhằm xác nhận
sự thành công và các áp dụng rộng rãi của Hadoop. Vào thời gian này, Hadoop được sử
dụng bởi rất nhiều công ty ngoài Yahoo! như Last.fm, Facebook, New York Times. Nhiều
dự án mã nguồn mở khác được phát triển để bổ sung cho Hadoop, tạo thành hệ sinh thái
Hadoop.

Sự trưởng thành: Năm 2008, Hadoop đã phá kỷ lục thế giới về sắp xếp một
terabyte dữ liệu. Chạy trên một cluster gồm 910 node, Hadoop đã sắp xếp một terabyte dữ
liệu trong vòng 209 giây, phá kỷ lục cũ là 297 giây. Sau đó ít lâu, Google công bố ứng
dụng chạy trên MapReduce của họ đã sắp xếp được một terabyte dữ liệu trong 68 giây.
Vào tháng 5 năm 2009, một đội các nhà phát triển của Yahoo! đã dùng Hadoop để sắp xếp
một terabyte dữ liệu trong vòng 62 giây. Hadoop dần là một công cụ quan trọng cho việc
xử lý dữ liệu lớn (Big Data), được ứng dụng trong nhiều lĩnh vực khác nhau như kinh
doanh, tài chính, khoa học, y tế,… và trở thành một tiêu chuẩn trong ngành công nghiệp
dữ liệu lớn.

Các mốc thời gian quan trọng:

Năm 2006: Phiên bản Hadoop đầu tiên được phát hành.

Năm 2008: Dự án Hadoop được chuyển giao cho Apache Software Foundation.

Năm 2010: HBase, Hive và Pig được phát hành.

Năm 2011: Hadoop 1.0 được phát hành.


10
Năm 2012: YARN được phát hành.

Năm 2013: Hadoop 2.0 được phát hành.

Năm 2015: Hadoop 3.0 được phát hành.

Năm 2018: Hadoop 3.1 được phát hành.

Năm 2020: Hadoop 3.2 được phát hành.

Năm 2021: Hadoop 3.3 được phát hành.

Năm 2022: Hadoop 3.4 được phát hành.

Năm 2023: Hadoop 3.5 được phát hành.

Hadoop đã trải qua một chặng đường dài từ khi ra đời đến nay. Hadoop đã trở thành
một công cụ quan trọng cho việc xử lý dữ liệu lớn và được sử dụng rộng rãi trong nhiều
lĩnh vực hiện nay.

2.3. Các thành phần của Hadoop

Hình 3 Các thành phần của Hadoop


Ngày nay, ngoài NDFS (đã được đổi tên lại thành HDFS – Hadoop Distributed File
System) và MapReduce, đội ngũ phát triển Hadoop đã phát triển các dự án con dựa trên
HDFS và MapReduce. Hiện nay, Hadoop gồm có các dự án con sau:

Core: là thành phần cốt lõi của Hadoop, cung cấp các thư viện và tiện ích Java cần
thiết cho các module khác sử dụng như Hive, Pig, HBase,... Cho phép phát triển các ứng
dụng phân tán xử lý dữ liệu dung lượng lớn. Đảm bảo tính tương thích giữa các module
Hadoop khác nhau.

MapReduce (MapReduce Engine): một framework giúp phát triển các ứng dụng
phân tán theo mô hình MapReduce một cách dễ dàng và mạnh mẽ, ứng dụng phân tán
11
MapReduce có thể chạy trên một cluster lớn với nhiều node, mô hình lập trình và một triển
khai liên quan để xử lý và tạo các tập dữ liệu lớn với thuật toán phân tán, song song trên
một cụm. Một chương trình MapReduce bao gồm một thủ tục bản đồ, thực hiện lọc và sắp
xếp, và một phương thức rút gọn, thực hiện một thao tác tóm tắt.

HDFS: hệ thống file phân tán, cung cấp khả năng lưu trữ dữ liệu khổng lồ và tính
năng tối ưu hoá việc sử dụng băng thông giữa các node. HDFS có thể được sử dụng để
chạy trên một cluster lớn với hàng chục ngàn node.

HBase: một cơ sở dữ liệu phân tán, theo hướng cột (colunm-oriented). HBase sử
dụng HDFS làm hạ tầng cho việc lưu trữ dữ liệu bên dưới, và cung cấp khả năng tính toán
song song dựa trên MapReduce.

Hive: một data warehouse phân tán. Hive quản lý dữ liệu được lưu trữ trên HDFS
và cung cấp một ngôn ngữ truy vấn dựa trên SQL.

Hình 4 Mapreduce and HDFS


Chukwa: một hệ thống tập hợp và phân tích dữ liệu. Chukwa chạy các collector
(các chương trình tập hợp dữ liệu), các collector này lưu trữ dữ liệu trên HDFS và sử dụng
MapReduce để phát sinh các báo cáo.

Pig: ngôn ngữ luồng dữ liệu cấp cao và framework thực thi dùng cho tính toán

12
song song.

Trên một hadoop cluster, có duy nhất một node chạy NameNode, một node chạy
JobTracker (NameNode và JobTracker có thể nằm trên cùng một máy vật lý, tuy nhiên
trên các cluster thật sự với hàng trăm, hàng nghìn node thì thường phải tách riêng
NameNode và JobTracker ra các máy vật lý khác nhau). Có nhiều node slave, mỗi node
slave thường đóng 2 vai trò: một là DataNode, hai là TaskTracker.

NameNode và DataNode chịu trách nhiệm vận hành hệ thống file phân tán HDFS với

Hình 4 Cơ cấu hoạt động của Mapreduce và HDPS

Hình 5 Vai trò của NameNode, Datanode,….


vai trò cụ thể được phân chia như sau:

NameNode: đóng vai trò là master của hệ thống HDFS, quản lý các meta-data của hệ
thống HDFS như file system space, danh sách các file trên hệ thống và các block id tương
ứng của từng file, quản danh sách slave và tình trạng hoạt động của các DataNode (live
hay dead) thông qua các hearbeat (Heartbeat: một loại thông điệp mà mỗi DataNode sẽ
định kỳ gởi đến NameNode để xác nhận tình trạng hoạt động (death/live) của DataNode.
13
Trên MapReduce Engine, các TaskTracker cũng dùng heartbeat để xác nhận tình trạng
hoạt động của mình với JobTracker), điều hướng quá trình đọc/ghi dữ liệu từ client lên
các DataNode.

DataNode: chứa các block dữ liệu thực sự của các file trên HDFS, chịu trách nhiệm
đáp ứng các yêu cầu đọc/ghi dữ liệu từ client, đáp ứng các yêu cầu tạo/xoá các block dữ
liệu từ NameNode. JobTracker và TaskTracker chịu trách nhiệm duy trì bộ máy
MapReduce, nhận và thực thi các MapReduce Job (MapReduce Job: là một chương trình
theo mô hình MapReduce được đệ trình lên để MapReduce Engine thực hiện. Xem phần
MapReduce). Vai trò cụ thể như sau: JobTracker: tiếp nhận các yêu cầu thực thi các
MapReduce job, phân chia job này thành các task và phân công cho các TaskTracker thực
hiện, quản lý tình trạng thực hiện các task của TaskTracker và phân công lại nếu cần.
JobTracker cũng quản lý danh sách các node TaskTracker và tình trạng của từng node
thông qua hearbeat; TaskTracker: nhận các task từ JobTracker và thực hiện task.

Ngoài ra trên một Hadoop cluster còn có SecondaryNameNode: duy trì một bản sao
của meta-data trên NameNode và bản sao này sẽ được dùng để phục hồi lại NameNode
nếu NameNode bị hư hỏng.

2.4. Hadoop Distributed File System (HDFS)

2.4.1. Hệ thống file phân tán

Khi kích thước của tập dữ liệu vượt quá khả năng lưu trữ của một máy tính, tất yếu sẽ
dẫn đến nhu cầu phân chia dữ liệu lên trên nhiều máy tính. Các hệ thống tập tin quản lý
việc lưu trữ dữ liệu trên một mạng nhiều máy tính gọi là hệ thống tập tin phân tán. Do hoạt
động trên môi trường liên mạng, nên các hệ thống tập tin phân tán phức tạp hơn rất nhiều
so với một hệ thống file cục bộ, một hệ thống file phân tán phải quản lý được tình trạng
hoạt động (live/dead) của các server tham gia vào nó.

14
Hình 6 Hệ thống file NTFS

Hình 7 Hệ thống file phân tán

15
2.4.2 Giới thiệu HDFS

Mục tiêu mà HDFS muốn mang lại là tạo nên file lưu trữ rất lớn kích thước sẽ lớn
hơn so với các chuẩn truyền thống lên đến hàng terabyte trở nên phổ biến. Khi làm việc
trên các tập dữ liệu với kích thước nhiều terabyte, ít khi nào người ta lại chọn việc quản
lý hàng tỷ file có kích thước hàng KB, thậm chí nếu hệ thống có thể hỗ trợ. Điều chúng
muốn nói ở đây là việc phân chia tập dữ liệu thành một số lượng ít file có kích thước lớn
sẽ là tối ưu hơn. Hai tác dụng to lớn của điều này có thể thấy là giảm thời gian truy xuất
dữ liệu và đơn giản hoá việc quản lý các tập tin. Nhờ đó, truy cập dữ liệu theo dòng HDFS
được thiết kế dành cho các ứng dụng dạng xử lý khối (batch processing), các file trên
HDFS một khi được tạo ra, ghi dữ liệu và đóng lại thì không thể bị chỉnh sữa được nữa.
Chỉ bằng mô hình liên kết dữ liệu đơn giản (ghi một lần, đọc nhiều lần), điều này làm đơn
giản hoá đảm bảo tính nhất quán của dữ liệu và cho phép truy cập dữ liệu với thông lượng
cao. Di chuyển quá trình xử lí thay vì dữ liệu, sử dụng phần cứng phổ thông, đa dạng bởi
hệ thống được xây dựng trên các phần cứng giá rẻ với khả năng hỏng hóc cao, HDFS phải
tự động phát hiện, khắc phục, và phục hồi kịp lúc khi các thành phần phần cứng bị hư
hỏng. Tự động phát hiện lỗi, phục hồi dữ liệu rất nhanh: các lỗi về phần cứng sẽ thường
xuyên xảy ra. Hệ thống HDFS sẽ chạy trên các cluster với hàng trăm hoặc thậm chí hàng
nghìn node. Các node này được xây dựng nên từ các phần cứng thông thường, giá rẻ, tỷ lệ
lỗi cao. Chất lượng và số lượng của các thành phần phần cứng như vậy sẽ tất yếu dẫn đến
tỷ lệ xảy ra lỗi trên cluster sẽ cao. Các vấn đề có thể điểm qua như lỗi của ứng dụng, lỗi
của hệ điều hành, lỗi đĩa cứng, bộ nhớ, lỗi của các thiết bị kết nối, lỗi mạng, và lỗi về
nguồn điện… Vì thế, khả năng phát hiện lỗi, chống chịu lỗi và tự động phục hồi phải được
tích hợp vào trong hệ thống HDFS.

Đã có rất nhiều Hadoop cluster chạy HDFS trên thế giới. Trong đó nổi bật nhất là
của Yahoo với một cluster lên đến 1100 node với dung lượng HDFS 12 PB. Các công ty
khác như Facebook, Adode, Amazon cũng đã xây dựng các cluster chạy HDFS với dung
lượng hàng trăm, hàng nghìn TB.

Tuy nhiên, HDFS vẫn còn nhiều điểm yếu như:

Không tối ưu cho các truy cập dữ liệu ngẫu nhiên, do cấu trúc tập tin lớn và phân
tán; việc đọc/ghi dữ liệu liên tục có thể gặp vấn đề về hiệu suất do thời gian chờ cao.
Mặc dù có khả năng mở rộng cao, HDFS có thể gặp vấn đề về hiệu suất và độ tin cậy khi

16
triển khai trên quy mô lớn. Quản lý cụm HDFS lớn có thể trở nên phức tạp và tốn nhiều
công sức.

HDFS có cấu trúc bảo mật đơn giản, có thể khiến hệ thống dễ bị tấn công. Việc mã
hóa dữ liệu có thể ảnh hưởng đến hiệu suất hệ thống, không phù hợp cho các ứng dụng
cần truy cập dữ liệu thời gian thực. Hỗ trợ cho các định dạng dữ liệu phi cấu trúc còn
hạn chế. Và đây không phải là giải pháp phù hợp cho tất cả các nhu cầu lưu trữ dữ liệu.
Cần cân nhắc các yếu tố như loại dữ liệu, truy cập dữ liệu và yêu cầu hiệu suất trước khi
triển khai HDFS.

2.4.3. Kiến trúc của HDFS

Giống như các hệ thống file khác, HDFS duy trì một cấu trúc cây phân cấp các file,
thư mục mà các file sẽ đóng vai trò là các node lá. Trong HDFS, mỗi file sẽ được chia ra
làm một hay nhiều block và mỗi block này sẽ có một block ID để nhận diện. Các block
của cùng một file (trừ block cuối cùng) sẽ có cùng kích thước và kích thước này được gọi

Hình 8 Kiến trúc của Hadoop


là block size của file đó. Mỗi block của file sẽ được lưu trữ thành ra nhiều bản sao (replica)
khác nhau vì mục đích an toàn dữ liệu HDFS có một kiến trúc master/slave. Trên một
cluster chạy HDFS, có hai loại node là Namenode và Datanode. Một cluster có duy nhất
một Namenode và có một hay nhiều Datanode.

Namenode đóng vai trò là master, chịu trách nhiệm duy trì thông tin về cấu trúc cây
phân cấp các file, thư mục của hệ thống file và các metadata khác của hệ thống file. Cụ
thể, các Metadata mà Namenode lưu trữ gồm có:

17
File System Namespace: là hình ảnh cây thư mục của hệ thống file tại một thời điểm
nào đó. File System namespace thể hiện tất các các file, thư mục có trên hệ thống file và
quan hệ giữa chúng.

Thông tin để ánh xạ từ tên file ra thành danh sách các block: với mỗi file, ta có một
danh sách có thứ tự các block của file đó, mỗi Block đại diện bởi Block ID.

Nơi lưu trữ các block: các block được đại diện một Block ID. Với mỗi block a có
một danh sách các DataNode lưu trữ các bản sao của block đó.

Các Datanode sẽ chịu trách nhiệm lưu trữ các block thật sự của từng file của hệ thống file
phân tán lên hệ thống file cục bộ của nó. Mỗi block sẽ được lưu trữ như là một file riêng
biệt trên hệ thống file cục bộ của DataNode. 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
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ạytrê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

Hình 9 Chức năng của Namenode


18
nhất với dữ liệu trên các Datanode. Toà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. 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.

Block: HDFS cũng chia file ra thành các block, và mỗi block này sẽ được lưu trữ
trên Datanode thành một file riêng biệt trên hệ thống file local của nó. Đây cũng sẽ là đơn
vị trao đổi dữ liệu nhỏ nhất giữa HDFS và client của nó.

Hadoop dùng mặc định 64MB/block, nhưng thông thường trên các hệ thống lớn
người ta dùng block size là 128 MB, lớn hơn block size của các hệ thống file truyền thống
rất nhiều. Các block chứa ở bất kỳ node nào trong cluster. Name Node quản lý thông tin
của tất cả các file trong cluster và Data Node quản lý các block dữ liệu.

Hình 10 NameNode và quá trình tương tác giữa client và HDFS


Việc tồn tại duy nhất một NameNode trên một hệ thống HDFS đã làm đơn giản hoá
thiết kế của hệ thống và cho phép NameNode ra những quyết định thông minh trong việc
sắp xếp các block dữ liệu lên trên các DataNode dựa vào các kiến thức về môi trường hệ
thống như: cấu trúc mạng, băng thông mạng, khả năng của các DataNode… Tuy nhiên,
cần phải tối thiểu hoá sự tham gia của NameNode vào các quá trình đọc/ghi dữ liệu lên hệ
thống để tránh tình trạng nút thắt cổ chai (bottle neck).

Client sẽ không bao giờ đọc hay ghi dữ liệu lên hệ thống thông qua NameNode. Thay
vào đó, client sẽ hỏi NameNode xem nên liên lạc với DataNode nào để truy xuất dữ liệu.
Sau đó, client sẽ cache thông tin này lại và kết nối trực tiếp với các DataNode để thực hiện
các thao tác truy xuất dữ liệu. Chúng ta sẽ mổ xẻ quá trình đọc một file từ HDFS và ghi
một file lên HDFS thông qua việc tương tác giữa các đối tượng từ phía client lên HDFS.

19
Quá trình đoc file

Hình 11 Qúa trình đọc file dữ liệu

Chương trình client yêu cầu đọc dữ liệu từ NameNode.

NameNode trả về vị trí các block của dữ liệu.

Chương trình trực tiếp yêu cầu dữ liệu tại các node.

Quá trình ghi file

Hình 12 Qúa trình ghi file dữ liệu

Ghi theo dạng đường ống (pipeline)

Chương trình yêu cầu thao tác ghi ở NameNode


20
NameNode kiểm tra quyền ghi và đảm bảo file không tồn tại

Các bản sao của block tạo thành đường ống để dữ liệu tuần tự được ghi vào.

2.4 Các phiên bản của Hadoop

Có 3 phiên bản chính của Hadoop

Hadoop 1.x: Phiên bản đầu tiên, được phát hành vào năm 2006 bao gồm các thành
phần chính như HDFS, MapReduce, và Hadoop Common. Có cấu trúc đơn giản và dễ sử
dụng. Tuy nhiên, hiệu suất và khả năng mở rộng còn hạn chế.

Hình 13 Hadoop phiên bản 1

Hadoop 2.x: Được phát hành vào năm 2012. Giới thiệu YARN giúp quản lý tài nguyên và
lập lịch trình tác vụ thông qua hai trình nền là theo dõi công việc và theo dõi tiến độ, cải
thiện hiệu suất và khả năng mở rộng so với Hadoop 1.x. Bao gồm các thành phần mới như
HBase, Hive, Pig, và ZooKeeper.

21
Hình 14 Hadoop phiên bản 2

Hadoop 3.x: Được phát hành vào năm 2018, tập trung vào cải thiện độ ổn định, bảo
mật và khả năng quản lý. Đây là phiên bản gần đây của Hadoop. Hadoop 3 có đóng góp
quan trọng, giúp giải quyết lỗi một điểm bằng cách có nhiều Name Nodes. Đồng thời,
phiên bản này cũng có nhiều lợi thế khác như xóa mã hóa, sử dụng phần cứng GPU và
Dockers vượt trội hơn so với các phiên bản trước của Hadoop.

Hình 15 Hadoop phiên bản 3


22
2.5 Lợi ích của Hadoop

Khả năng lưu trữ dữ liệu dung lượng lớn: Hadoop có thể lưu trữ hàng petabyte dữ
liệu trên một cụm máy tính; khả năng mở rộng cao, dễ dàng thêm vào các máy tính mới
khi cần thiết; hỗ trợ nhiều loại dữ liệu khác nhau, bao gồm dữ liệu có cấu trúc, bán cấu
trúc và phi cấu trúc.

Xử lý dữ liệu song song: Hadoop sử dụng mô hình lập trình MapReduce để xử lý dữ


liệu song song trên nhiều máy tính; nâng cao hiệu suất xử lý dữ liệu dung lượng lớn; phù
hợp cho các ứng dụng Big Data như phân tích dữ liệu, học máy, khoa học dữ liệu.

Chi phí thấp: Là một framework mã nguồn mở có thể chạy trên phần cứng thông
thường, miễn phí sử dụng, đồng thời có hệ sinh thái công cụ hỗ trợ đa dạng, có thể sử dụng
các máy tính giá rẻ để xây dựng cụm Hadoop; tiết kiệm chi phí so với các hệ thống lưu trữ
và xử lý dữ liệu truyền thống.

Tính linh hoạt: Hadoop có thể xử lý nhiều loại dữ liệu khác nhau, bao gồm dữ liệu
có cấu trúc, bán cấu trúc và phi cấu trúc; hỗ trợ nhiều công cụ và framework cho các ứng
dụng Big Data; cho phép người dùng tự do lựa chọn công cụ phù hợp với nhu cầu của
mình.

Khả năng chịu lỗi cao: Hadoop có thể tự động phục hồi dữ liệu bị lỗi, đảm bảo tính
sẵn sàng cao cho dữ liệu và giảm thiểu nguy cơ mất dữ liệu.

Ngoài ra, Hadoop còn dễ dàng sử dụng, cộng đồng hỗ trợ lớn, nhiều tài liệu và hướng
dẫn sẵn có. Vậy nên Hadoop là một công cụ mạnh mẽ cho các doanh nghiệp và tổ chức
cần lưu trữ và xử lý dữ liệu dung lượng lớn.

2.5 Cách sử dụng Hadoop

Hadoop thường được ứng dụng vào trong trường hợp sau:

Phân tích dữ liệu: thực tế có rất nhiều công ty và tổ chức sử dụng Hadoop để xử lí
lượng dữ liệu lớn thông qua nghiên cứu, phân tích và đưa ra yêu cầu xử lí, lưu trữ nhiều
bộ dữ liệu đa dạng.

Lưu trữ dữ liệu: vì Hadoop cho phép bạn có thể lưu trữ với dung lượng lớn trên phần
cứng thông thường, nhờ đó Hadoop trở thành lựa chọn hữu ích trong viêc lưu trữ tất cả
các loại dữ liệu với chi phí thấp như giao dịch, dữ liệu máy và cảm biến…

23
Tạo bể dữ liệu: với Hadoop, doanh nghiệp có thể lưu trữ dữ liệu mà không cần phải
xử lí trước nên nó được sử dụng để bổ sung vào các bể dữ liệu – nơi lưu trữ một lượng lớn
dữ liệu chưa được tinh chỉnh, lưu trữ, phân tích rủi ro và quản lí dữ liệu khách hàng.

Hệ sinh thái Hadoop còn hỗ trợ xử lí các hoạt động lien quan đến đào tạo mô hình
và dữ liệu cho các ứng dụng machine learning.

2.6 Mô hình ứng dụng Hadoop


Cơ sở hạ tầng Big Data của Netflix

Netflix thu thập dữ liệu từ người đăng ký và triển khai mô hình phân tích dữ liệu để
khám phá hành vi của khách hàng và mô hình mua hàng.

Sử dụng thông tin đã thu thập để giới thiệu phim và chương trình truyền hình dựa
trên sở thích của người đăng ký.

Tại sao Netflix biết khách hàng muốn xem gì tiếp theo?

Netflix sử dụng S3 của Amazon cho các khối lượng công việc khác nhau truy cập
cùng một dữ liệu.

Netflix đã tạo ra dự án Genie để giúp xử lý khối lượng dữ liệu lớn khi nó mở rộng
quy mô.

Hình 16 Ứng dụng Hadoop vào Netflix

24
Thành công vang dội khi chuyển đổi số bằng Big Data

 Công ty thu thập được chi tiết dữ liệu tương tác và phản hồi của khách hàng cho
một chương trình truyền hình dựa trên các khía cạnh như: Thời gian người dùng xem
một chương trình; Thiết bị được sử dụng; Thời gian người dùng hoàn thành một chương
trình; …

 Netflix còn sử dụng Big Data và phân tích để tiến hành tiếp thị tùy chỉnh: Để
quảng bá 'House of Cards', Netflix đã cắt hơn mười phiên bản khác nhau của trailer để
quảng bá chương trình.

 Netflix cũng khuyến khích phản hồi từ người đăng ký, hệ thống cải thiện sự tham
gia của khán giả bằng một biên độ đáng kể, cho phép họ tùy chỉnh trang chủ của người
dùng hơn nữa.

25
CHƯƠNG 3: KẾT LUẬN

Apache Hadoop là một hệ thống lưu trữ và xử lý dữ liệu dung lượng lớn hiệu quả
và linh hoạt, phù hợp cho các doanh nghiệp và tổ chức cần lưu trữ và xử lý dữ liệu dung
lượng lớn cho các ứng dụng Big Data. Tuy nhiên, người dùng cần cân nhắc kỹ lưỡng về
nhu cầu và khả năng của mình trước khi triển khai Hadoop. Do kiến thức còn hạn chế nên
nhóm định hướng được những điều căn bản nhất của Hadoop.

26
TÀI LIỆU THAM KHẢO

[1] Dr. Rajni Bhalla, Introduction to big data, Lovely Professional University

[2] Hadoop: http://hadoop.apeche.org.

[3] Báo cáo tìm hiểu về Hadoop, https://123docz.net/document/2885150-bao-cao-tim-


hieu-ve-hadoop.htm, ngày truy cập 7/3/2024.

27

You might also like