HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THƠNG TIN 1
MƠN HỌC: AN TỒN HỆ ĐIỀU HÀNH
Đề tài:
Tìm hiểu nền tảng tính tốn phân tán Hadoop
Giảng viên hướng dẫn: TS. Hồng Xn Dậu
Nhóm thực hiện: 05
Thành viên trong nhóm:
Phạm Khánh Hưng
– B19DCAT096
Phan Thế Hưng
– B19DCAT097
Phạm Ngọc Khánh
– B17DCAT105
Nguyễn Thị Khuyên
– B19DCAT109
Lê Đức Long
– B19DCAT114
Nguyễn Hải Long
– B19DCAT115
Kiều Minh Hữu
– B19DCAT211
Hà Nội 18/03/2022
NHẬT KÝ HOẠT ĐỘNG NHÓM
Thành viên
Nguyễn Hải Long – B19DCAT115
Nội dung
Ưu & Nhược điểm của Hadoop
Slide
Phạm Ngọc Khánh – B17DCAT105
Phan Thế Hưng – B19DCAT097
Kiến trúc và Các thành phần của
Hadoop
Kiều Minh Hữu – B19DCAT211
Lê Đức Long – B19DCAT114
Cơ chế hoạt động và Cài đặt
Nguyễn Thị Khuyên – B19DCAT109
Giới thiệu và Viết báo cáo
Phạm Khánh Hưng – B19DCAT096
Thuyết trình bài tập lớn
MỤC LỤC:
I. Giới thiệu khái quát về Hadoop: ………………………………………….....
1. Khái niệm Hadoop là gì? ................................................................................3
2. Kiến trúc của Hadoop ..………………………………….…………………. 4
II. Nội dung: ……………………………………………………………..………..
1. Các thành phần cơ bản của Hadoop…..…………………………………….. 5
2. Cơ chế hoạt động………………………………………………………........ 12
3. Cài đặt …………………………………………………………...………..... 14
4. Những ưu điểm & nhược điểm Hadoop mang lại ……………..…………….18
III. Kết luận: …………………………………………………………..…………..19
IV. Tài liệu tham khảo: ……………………………………………..…………....19
2
I. Giới thiệu khái quát về Hadoop
1. Hadoop là gì?
- Hadoop là một Apache framework mã nguồn mở được viết bằng Java, cho phép phát
triển các ứng dụng phân tán có cường độ dữ liệu lớn một các miễn phí. 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 dữ liệu.
- Hadoop đượ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 (GFS). Và có cung cấp cho chúng
ta một môi trường song song để thực thi các tác vụ Map-Reduce.
- Hadoop viết bằng Java. Tuy nhiên, nhờ cơ chế streaming, Hadoop cho phép phát triển
các ứng dụng phân tán bằng cả java lẫn một số ngơn ngữ lập trình khác như C++, Python,
Pearl.
2. Kiến trúc của Hadoop
Hadoop có kiến trúc Master-Slave để lưu trữ dữ liệu và xử lý dữ liệu phân tán bằng
phương pháp MapReduce và HDFS.
Có duy nhất một node chạy NameNode, một note chạy JobTracker. Có nhiều node slave,
mỗi node 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
vai trị:
• NameNode: là master, quản lý các meta-data của hệ thống, quản lí danh sách
slave và tình trạng hoạt động của các DataNode thơng qua các hearbeat, đ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 yêu cầu đọc/ghi dữ liệu từ client, đáp ứng 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. Vai trò cụ thể như sau:
-
3
•
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.
• TaskTracker: nhận các task từ JobTracker và thực hiện task.
- Ngồi ra trên một Hadoop cluster cịn có SecondaryNameNode.
• 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 có NameNode bị hư
hỏng.
II. Nội dung
1. Các thành phần của Hadoop
Ngày nay, ngồi HDFS và MapReduce, Hadoop cịn có những dự án con sau:
• MapReduce (MapReduce Engine): framework phát triển ứng dụng phân tán
MapReduce một cách dễ dàng và mạnh mẽ, có thể chạy trên một cluster lớn với nhiều
node.
• HDFS: Hệ thống file phân tán, lưu trữ dữ liệu khổng lồ, tối ưu hố việc sử dụng băng
thơng giữa các node, được sử dụng để chạy trên một cluster lớn với hàng chục ngàn
node.
• Core: cung cấp các công cụ và giao diện cho hệ thống phân tán và các tiện ích I/O. Đây
là phần lõi để xây dựng nên HDFS và MapReduce.
• HBase: Cơ sở dữ liệu phân tán, theo hướng cột (colunm-oriented), sử dụng HDFS lưu
trữ dữ liệu bên dưới, và cung cấp khả năng tính tốn song song dựa trên MapReduce.
• Hive: Một data warehouse phân tán, 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.
• Chukwa: Hệ thống tập hợp và phân tích dữ liệu, 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 tốn song
song.
Tuy nhiên, chúng em sẽ tập trung vào hai phần quan trọng nhất của Hadoop, đó là HDFS và
MapReduce.
Hadoop Distributed File System (HDFS)- Hệ thống phân tán Hadoop
4
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ó:
• 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 đó.
- 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 ta có một danh sách các
DataNode lưu trữ các bản sao của block đó.
- 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.
Cơ chế hoạt động của HDFS
- Đọc File trên HDFS:
5
+
Client sẽ mở file cần đọc bằng cách gửi yêu cầu đọc file đến NameNode. Sau đó
NameNode thực hiện kiểm tra xem file được yêu cầu đọc có tồn tại khơng, hay file cần
đọc có ở trạng thái “khoẻ mạnh” không. Nếu mọi thứ đều ổn, NameNode sẽ gửi danh sách
các block (đại diện bởi Block ID) của file cùng với địa chỉ các DataNode chứa các bản
sao của block này.
+ Tiếp theo, client sẽ mở các kết nối tới DataNode, thực hiện một RPC để yêu cầu nhận
block cần đọc và đóng kết nối với DataNode.
+ Client sẽ thực hiện việc đọc các block lặp đi lăp lại cho đến khi block cuối cùng của file
được đọc xong.
- Ghi File trên HDFS
• Đầu tiên, client sẽ gửi yêu cầu đến NameNode tạo một file entry lên File System
Namespace. File mới được tạo sẽ rỗng, tức chưa có một block nào.
6
• Sau đó, NameNode sẽ quyết định danh sách các DataNode sẽ chứa các bản sao của file
cần gì và gửi lại cho client. Client sẽ chia file ra thành các block và với mỗi block client
sẽ đóng gói thành một packet.
• Client gửi packet cho DataNode thứ nhất, DataNode thứ nhất khi nhận được packet sẽ
tiến hành lưu lại bản sao thứ nhất của block. Tiếp theo DataNode thứ nhất sẽ gửi packet
này cho DataNode thứ hai để lưu ra bản sao thứ hai của block. Tương tự DataNode thứ
hai sẽ gửi packet cho DataNode thứ ba. Cứ như vậy, các DataNode cũng lưu các bản sao
của một block sẽ hình thành một ống dẫn dữ liệu data pile.
• Sau khi DataNode cuối cùng nhận được packet, nó sẽ gửi lại cho DataNode thứ hai một
gói xác nhận rằng đã lưu thành cơng. Và gói thứ hai lại gửi gói xác nhận tình trạng thành
cơng của hai DataNode về DataNode thứ nhất.
• Client sẽ nhận được các báo cáo xác nhận từ DataNode thứ nhất cho tình trạng thành cơng
của tất cả DataNode trên data pile.
• Nếu có bất kỳ một DataNode nào bị lỗi trong quá trình ghi dữ liệu, client sẽ tiến hành xác
nhận lại các DataNode đã lưu thành công bản sao của block và thực hiện ghi lại block lên
trên DataNode bị lỗi.
• Khi các block của file đều được ghi lên các DataNode, client sẽ thực hiên thông điệp báo
cho NameNode nhằm update lại danh sách các block của file vừa tạo. Thông tin Mapping
từ Block ID sang danh sách các DataNode lưu trữ được NameNode tự động update bằng cách
định kỳ các DataNode sẽ gửi báo cáo cho NameNode danh sách các block mà nó quản lý.
Hadoop MapReduce
7
Theo Google định nghĩa rằng: “MapReduce là mơ hình lập trình và thực thi song song các xử
lý và phát sinh các tập dữ liệu lớn”.
Ngồi ra, MapReduce là mơ hình được áp dụng trên hệ thống các máy tính được kết nối với
nhau và cài đặt chương trình MapReduce, thường kèm theo nó là một hệ thống chia sẻ file
phân tán, để thực hiện các thao tác xử lý một cách song song và đồng thời, MapReduce sử
dụng hai thao tác chính cho việc thực thi cơng việc ban đầu từ người dùng là hàm Map và hàm
Reduce.
• Hàm Map
Người dùng đưa một cặp dữ liệu (key,value) làm input cho hàm Map, tùy vào mục đích của
người dùng mà hàm Map sẽ đưa ra danh sách các cặp dữ liệu (intermediate key,value).
• Hàm Reduce
Hệ thống sẽ gom nhóm tất cả value theo intermediate key từ các output của hàm Map, để tạo
thành tập các cặp dự liệu với cấu trúc là (key, tập các value cùng key).
Dữ liệu input của hàm Reduce là từng cặp dữ liệu được gom nhóm ở trên và sau khi thực hiện
xử lý nó sẽ trả ra cặp dữ liệu (key, value) output cuối cùng cho người dùng.
Cơ chế hoạt động của MapReduce:
+
Đầu tiên, client sẽ yêu cầu thực hiện job và kèm theo là dữ liệu input tới JobTracker.
JobTracker sau khi tiếp nhận job này, sẽ thơng báo ngược về client tình trạng tiếp nhận job.
Khi client nhận được thơng báo nếu tình trạng tiếp nhận hợp lệ thì sẽ tiến hành phân rã
input này thành các split, các split này sẽ được ghi xuống HDFS. Sau đó client sẽ gửi thơng
báo đã sẵn sàng để JobTracker biết rằng việc chuẩn bị dữ liệu đã thành công và hãy tiến
hành thực hiện job.
8
+ Khi nhận được thông báo từ client, JobTracker sẽ đưa job này vào một stack mà ở đó lưu
các job mà các client yêu cầu thực hiện. Tại một thời điểm JobTracker chỉ thực hiện một
job. Sau khi một job hoàn thành hay bị block, JobTracker sẽ lấy job khác trong stack này
(FIFO) ra thực hiện. Trong cấu trúc dữ liệu của mình, JobTracker có một job scheduler với
nhiệm vụ lấy vị trí các split từ HDFS do chương trình client tạo, sau đó nó sẽ tạo một danh
sách các task để thực thi. Với từng split thì nó sẽ tạo một maptask để thực thi, mặc nhiên
số lượng maptask bằng với số lượng split. Còn đối với reduce task, số lượng reduce task
được xác định bởi chương trình client. Bên cạnh đó, JobTracker cịn lưu trữ thơng tin trạng
thái và tiến độ của tất cả các task.
+
Ngay khi JobTracker khởi tạo các thông tin cần thiết để chạy job, thì bên cạnh đó các
TaskTracker trong hệ thống sẽ gửi các heartbeat đến JobTracker. Hadoop cung cấp cho các
9
TaskTracker cơ chế gửi heartbeat đến JobTracker theo chu kỳ thời gian nào đó, thơng tin
bên trong heartbeat này cho phép JobTrack biết được TaskTracker này có thể thực thi task
hay khơng. Nếu TaskTracker cịn thực thi được thì JobTracker sẽ cấp task và vị trí split
tương ứng đến TaskTracker này để thực hiện.
+
Việc TaskTracker thực thi task được chia thành 2 loại: TaskTracker thực thi maptask,
TaskTracker thực thi reduce task.
+
Khi một TaskTracker nhận thực thi maptask, kèm theo đó là vị trí của input split trên
HDFS. Nó sẽ nạp dữ liệu của split từ HDFS vào bộ nhớ, rồi dựa vào kiểu format của dữ
liệu input do client chọn thì nó sẽ parse split này để phát sinh ra tập các record, và record
này có 2 trường: key và value. Với tập các record này, tasktracker sẽ chạy vòng lặp để lấy
từng record làm input cho hàm map để trả ra output là dữ liệu gồm intermediate key và
value. Dữ liệu output của hàm Map sẽ ghi xuống bộ nhớ chính, và được sắp xếp trước ngay
bên trong bộ nhớ chính.
+ Trước khi ghi xuống local disk, các dữ liệu output này sẽ được phân chia vào các partition
(region) dựa vào hàm partition, từng partition này sẽ ứng với dữ liệu input của reduce task
10
sau này. Và ngay bên trong từng partition, dữ liệu sẽ được sắp xếp (sort) tăng dần theo
intermediate key, và nếu chương trình client có sử dụng hàm combine thì hàm này sẽ xử
lý dữ liệu trên từng partition đã sắp xếp rồi. Sau khi thực hiện thành công maptask thì dữ
liệu output sẽ là các partition được ghi trên local, ngay lúc đó TaskTracker sẽ gửi trạng thái
completed của maptask và danh sách các vị trí của các partition output trên localdisk của
nó đến JobTracker.
+ TaskTracker thực hiện reduce task với dữ liệu input là danh sách các vị trí của một region
cụ thể trên các output được ghi trên localdisk của các maptask. Điều này có nghĩa là với
region cụ thể, JobTracker sẽ thu thập các region này trên các output của các maptask thành
một danh sách các vị trí của các region này.
+ Do biết được số lượng map task và reduce task, nên TaskTracker một cách định kỳ sẽ hỏi
JobTracker về các vị trí của region mà sẽ phân bổ cho nó cho tới khi nó nhận được đầy đủ
các vị trí region của output của tất cả các map task trong hệ thống.Với danh sách vị trí này,
TaskTracker sẽ nạp (copy) dữ liệu trong từng region ngay khi map task mà output chứa
region này hoàn thành vào trong bộ nhớ. Và TaskTracker này cũng cung cấp nhiều tiểu trình
thực hiện nạp dữ liệu đồng thời để gia tăng hiệu suất xử lý song song.
+ Sau khi nạp thành cơng tất cả các region thì TaskTracker sẽ tiến hành merge dữ liệu của các
region theo nhiều đợt mà các đợt này được thực hiện một cách đồng thời để làm gia tăng
hiệu suất của thao tác merge. Sau khi các đợt merge hoàn thành sẽ tạo ra các file dữ liệu
trung gian được sắp xếp. Cuối cùng các file dữ liệu trung gian này sẽ được merge lần nữa
11
để tạo thành một file cuối cùng. TaskTracker sẽ chạy vòng lặp để lấy từng record ra làm
input cho hàm reduce, hàm reduce sẽ dựa vào kiểu format của output để thực hiện và trả ra
kết quả output thích hợp. Tất cả các dữ liệu output này sẽ được lưu vào một file và file này
sau đó sẽ được ghi xuống HDFS.
2. Cơ chế hoạt động của Hadoop
Giai đoạn 1
Một user hay một ứng dụng sẽ submit một job lên hệ thống Hadoop (hadoop job client) cùng
với những yêu cầu xử lý các thông tin cơ bản gồm:
+ Nơi lưu (location) dữ liệu input, output trên hệ thống dữ liệu phân tán
+ 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ố được truyền vào.
Giai đoạn 2
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.
Giai đoạn 3
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.
3. Cài đặt Hadoop
a. Cài đặt JDK bản 1.8
Sử dụng link sau để downloads :
/>
Sau khi hoàn tất quá trình tải jdk, ta tiến hành cài đặt.
Khi xuất hiện màn hình dưới đây tức là đã hồn tất quá trình cài đặt JDK.
12
b. Thiết lập biến môi trường cho Java JDK
Chuột phải-> Computer -> Properties->Advanced System Settings-> Environment Variables
Tại User variables for PC -> New, và cập nhật 2
thông tin như trong ảnh:
Trên Systems variables ->path -> edit -> new ->
nhập: C:\Java\jdk1.8.0_301\bin -> OK
Kết quả:
c. Cài đặt và cấu hình Hadoop
Bước 1: - Tải Hadoop 3.3.0 về máy, giải nén file.
13
Bước 2: Thiết lập môi trường Hadoop ( tương tự như thiết lập mơi trường JDK)
Bước 3: 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:
+ core-site.xml
+ hdfs-site.xml
+ mapred-site.xml
+ yarn-site.xml
+ hadoop-env.cmd
Cấu hình core-site.xml như hình dưới đây:
Cấu hình mapred-site.xml như dưới đây:
14
Cấu hình hdfs-site.xml như dưới đây:
• 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”
Sau đó cấu hình hdfs-site.xml như sau:
15
Cấu hình yarn-site.xml như dưới đây:
Cấu hình hadoop-env.cmd:
Bước 4: - Cập nhật các Hadoop Configurations:
+ Tải apache-hadoop-3.1.0-winutils-master.zip (GitHub - s911415/apache-hadoop-3.1.0winutils: HADOOP 3.1.0 winutils)
+ Giải nén ra thấy thư mục bin ở bên trong apache-hadoop-3.1.0-winutils-master.zip
Chép đè thư mục bin này trong thư mục bin của C:\hadoop-3.3.0\bin
Sau đó format lại namenode và datanode: mở command line lên, gõ lệnh sau:
hdfs namenode –format
hdfs datanode –format
16
Để kiểm tra Hadoop, mở command line di chuyển tới thư mục C:\hadoop-3.3.0\sbin
Sau đó gõ lệnh: Start-all.cmd.
17
4. Ưu điểm và nhược điểm của Hadoop
Ưu điểm
• Khả năng mở rộng cao: Hadoop là một nền tảng lưu trữ có khả năng mở rộng cao bởi vì
nó có thể lưu trữ và phân phối các bộ dữ liệu rất lớn trên hàng trăm máy chủ hoạt động
song song. Hadoop cho phép các doanh nghiệp chạy các ứng dụng trên hàng ngàn node
liên quan tới hàng ngàn Terabyte dữ liệu.
• Chi phí hiệu quả: Hadoop cung cấp giải pháp lưu trữ hiệu quả về chi phí cho các dữ liệu
của doanh nghiệp. Được thiết kế như một kiến trúc quy mơ có chi phí thấp nhưng có thể
lưu trữ tất cả các dữ liệu của công ty để sử dụng sau…
• Linh hoạt: Khơng giống như các hệ quản trị cơ sở dữ liệu truyền thống, Hadoop có thể
giúp lưu trữ bao nhiêu dữ liệu tùy thích và được phép quyết định cách sử dụng chúng
sau này. Bao gồm dữ liệu phi cấu trúc như văn bản, hình ảnh và video…
• Nhanh: Phương pháp lưu trữ độc đáo của Hadoop dựa trên hệ thống tập tin phân phối
theo các “bản đồ” dữ liệu. Nếu chúng ta làm việc với khối dữ liệu lớn phi cấu trúc,
Hadoop có thể xử lý hiệu quả mỗi tetabyte dữ liệu chỉ trong vài phút và mỗi petabye
trong vài giờ.
• Khả năng chịu lỗi: Xử lý dữ liệu và ứng dụng sẽ được bảo vệ khỏi các lỗi phần cứng.
Nếu một nút gặp trục trặc, các công việc sẽ tự động được chuyển sang các nút khác để
đảm bảo tính tốn phân tán khơng bị lỗi. Đồng thời các bản sao của dữ liệu đều được lưu
trữ tự động.
• Miễn phí và dễ mở rộng: Đây là một framework mã nguồn mở nên hoàn tồn miễn phí.
Ngồi ra, bạn cũng có thể dễ dàng phát triển hệ thống của mình để xử lý nhiều dữ liệu
hơn bằng cách thêm các nút.
Nhược điểm
• Hadoop khơng có mơ hình bảo mật và tính phức tạp cao.
• Hadoop khơng cung cấp lưu trữ hoặc mã hóa dữ liệu mức mạng, trong khi đây là mối
quan tâm rất lớn đối với dữ liệu ứng dụng đối tượng khách hàng cần độ bảo mật thơng
tin như chính phủ, ngân hàng…
• HDFS khơng hiệu quả để xử lý các tập tin nhỏ.
• MapReduce khơng thích hợp để sử dụng các trường hợp có nhu cầu truy cập dữ liệu thời
gian thực.
• MapReduce khó biểu diễn dữ liệu đầu ra theo nhu cầu cần sử dụng.
III. Kết luận
Qua quá trình nghiên cứu báo cáo và tìm hiểu về nền tảng tính toán phân tán Hadoop đã
cho chúng em thấy Hadoop framework cho phép người dùng nhanh chóng viết và kiểm tra các
hệ thống phân tán. Đây là cách hiệu quả cho phép phân phối dữ liệu và công việc xuyên suốt
18
các máy trạm nhờ vào cơ chế sử lý song song của các lõi CPU. Đi sâu tìm hiểu các thành phần,
cách thức hoạt động và cơ chế của quản lý tệp tin HDFS. Các server có thể được thêm vào hoặc
gỡ bỏ từ cluster một cách linh hoạt và vẫn hoạt động mà khơng bị ngắt qng. Ngồi ra mã
nguồn mở đó cịn có khả năng tương thích trên tất cả các nền tảng do được phát triển trên Java.
Trên đây là bài báo cáo của nhóm khơng tránh khỏi những thiếu sót. Rất mong Thầy thơng
cảm. Nhóm em xin chân thành cảm ơn!
IV. Tài liệu tham khảo
1. N. (2022, February 17). What is Hadoop? Intellipaat Blog. />2. Team, D. (2021, August 25). History of Hadoop – The complete evolution of Hadoop Ecosytem. DataFlair.
ining/blogs/hadoop-history/
3. P. (2019, September 10). Kiến trúc Hadoop. GMO-Z.Com Vietnam Lab Center Technology Blog.
/>4. Kiwi, C. (2021, March 4). Tìm hiểu về kiến trúc hệ sinh thái Hadoop. Cloud Geeks Vietnam.
/>5. Taylor, D. (2022b, February 12). What is Hadoop? Introduction, Architecture, Ecosystem, Components. Guru99.
/>
19