C2 - Hadoop Distributed Architecture - HDFS - MapReduce

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 43

Chương 2: Hadoop:

Distributed Architecture,
HDFS, and MapReduce
TS. Nguyễn Mạnh Tuấn
tuannm@ueh.edu.vn
Nội dung
 Các vấn đề khi xử lý dữ liệu lớn
 Hadoop
 HDFS (Hadoop Distributed File System)
 MapReduce

2
Các vấn đề khi xử lý dữ liệu lớn
 Lặp lại một số lượng lớn các dữ liệu
 Trích xuất một dữ liệu quan tâm
 Sắp xếp và tổng hợp kết quả trung gian
 Tạo đầu ra cuối cùng

 Vấn đề:
 Định dạng đầu vào đa dạng (dữ liệu đa dạng & không
đồng nhất)
 Quy mô lớn: Terabyte, Petabyte
 Song song hóa

3
Làm thế nào để tận dụng một số máy tính có sẵn
giá rẻ?

4
Chi phí khi nâng cấp phần cứng

Ổ cứng SSSD100TB với giá $40.000


Ổ cứng SSD 10 TB với giá $200
 Cần 100 TB thì chỉ với $2.000
 Tiết kiệm được 20 lần chi phí

5
Chia để trị
“Work”
Partition

w1 w2 w3

“worker” “worker” “worker”

r1 r2 r3

“Result” Combine

6
Những thách thức xử lý song song
 Làm cách nào để phân công đơn vị công việc cho
worker?
 Điều gì sẽ xảy ra nếu chúng ta có nhiều đầu việc hơn
worker?
 Điều gì sẽ xảy ra nếu worker cần chia sẻ một phần kết
quả?
 Làm cách nào để chúng tôi tổng hợp các kết quả từng
phần?
 Làm sao chúng ta biết tất cả worker đã hoàn thành?
 Nếu worker chết thì sao?
Vấn đề chung của tất cả những thách thức này là gì?

7
Vấn đề chung?

 Vấn đề song song phát sinh từ:


 Giao tiếp giữa các worker (ví dụ: để trao đổi trạng
thái)
 Truy cập vào các tài nguyên được chia sẻ (ví dụ:
dữ liệu)
 Vì vậy, chúng ta cần một cơ chế đồng bộ

8
Kẹt xe tại VN

9
Quản lý nhiều worker
 Khó vì
 Chúng tôi không biết thứ tự worker chạy
 Chúng tôi không biết khi nào worker ngắt lời nhau
 Chúng tôi không biết thứ tự worker truy cập dữ liệu được chia sẻ
 Vì vậy, chúng ta cần:
 Semaphores (khóa, mở khóa)
 Biến có điều kiện (chờ, thông báo, phát sóng)
 Rào cản
 Tuy nhiên vẫn còn rất nhiều vấn đề:
 Deadlock, livelock , race condition...
 Ý nghĩa của câu chuyện: hãy cẩn thận!

10
Hadoop

11
Câu chuyện bác nông dân

12
Vấn đề Big Data

13
Apache Hadoop
 Hệ thống phân tán có khả
năng chịu lỗi, có khả năng
hỗ trợ cho Dữ liệu lớn:
 Lưu trữ dữ liệu
 Xử lí dữ liệu
 Một máy dữ liệu lớn ảo
 Các khái niệm/ý tưởng mượn
từ Google;
 Nguồn mở theo giấy phép
Apache

Video: Hadoop In 5 Minutes

14
Lịch sử Hadoop

15
Hệ sinh thái Hadoop

16
Những ưu điểm của Hadoop
 Khắc phục những hạn chế truyền thống về lưu
trữ và tính toán
 Cung cấp khả năng mở rộng tuyến tính từ 1
đến 4000 node
 Phần mềm nguồn mở, chi phí thấp
 Tận dụng phần cứng rẻ tiền làm nền tảng
 Khả năng chịu lỗi cao
 Dữ liệu có cấu trúc và không cấu trúc

17
Những ai đang dùng Hadoop

18
Các thành phần chính của Hadoop
 HDFS (Hadoop Distributed File System):
 HDFS là hệ thống file phân tán được sử dụng để lưu trữ dữ
liệu. Nó phân chia dữ liệu thành các khối và phân tán
chúng trên nhiều máy tính
 MapReduce:
 MapReduce là khung mô hình lập trình để xử lý và tính
toán trên số lượng dữ liệu lớn trong môi trường phân tán.
 Nó hoạt động dựa trên 2 pha chính là Map và Reduce.
Pha Map sẽ chia nhỏ dữ liệu thành các cặp key-value, sau
đó pha Reduce sẽ nhóm các cặp key-value lại với nhau để
tính toán kết quả cuối cùng

19
Các thành phần chính của Hadoop
 YARN (Yet Another Resource
Negotiator):
 YARN là một khung phần mềm quản
lý và phân bổ tài nguyên để vận hành
các ứng dụng trên Hadoop.
 Nó cung cấp các dịch vụ như quản lý
tài nguyên, lên lịch và giám sát cho
các ứng dụng chạy trên Hadoop.
 YARN phân bổ RAM, bộ nhớ và các
tài nguyên khác cho các ứng dụng
khác nhau.

20
HDFS (Hadoop Distributed File System)

21
HDFS (Hadoop Distributed File System)
 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 lưu trữ dữ liệu dưới dạng các khối, mỗi khối có
kích thước mặc định là 128MB

22
HDFS (Hadoop Distributed File System)

 C, D: Hai file khác nhau; chia


thành nhiều phần (hoặc "phân
vùng"):

Data Node 1 Data Node 2 Data Node 3 Data Node n

23
HDFS (Hadoop Distributed File System)

Data Node 1 Data Node 2 Data Node 3 Data Node n

Data Node 1 Data Node 2 Data Node 3 Data Node n

(Leskovec at al., 2014; http://www.mmds.org/)

24
HDFS (Hadoop Distributed File System)
 HDFS sử dụng kiến
trúc Master/Slave, bao gồm
hai thành phần chính
là NameNode và DataNode
 NameNode là trung tâm điều
khiển của HDFS và lưu trữ
thông tin về vị trí và trạng thái
các khối dữ liệu. Có
1 NameNode (Master)
 DataNode là các nút lưu trữ
dữ liệu thực sự và phân tán dữ
liệu trên các nút khác nhau. có
một hoặc nhiều
các DataNode (Worker)

25
HDFS (Hadoop Distributed File System)

 HDFS cung cấp các tính năng như sao lưu dữ


liệu, phục hồi dữ liệu, xử lý song song và truy
vấn dữ liệu từ xa.
► HDFS cũng cung cấp
các cơ chế để quản lý
dữ liệu, bao gồm các
cơ chế như tự động
phân phối dữ liệu, cấu
trúc dữ liệu và các cơ
chế lưu trữ lớn.

26
HDFS (Hadoop Distributed File System)

 Giả sử có 2 file nhật ký muốn lưu từ hệ thống


tệp cục bộ vào cụm HDFS
 031515.log: 350 MB
 042316.log: 200 MB

27
HDFS command
 Xin sự trợ giúp về 1 lệnh cụ  Sử dụng lệnh put để copy 1
thể nào đó: file từ thư mục local vào hdfs:
 hdfs dfs -help <statement>  hdfs dfs -put ~/test.txt /newfolder/

 VD: hdfs dfs -help ls  ~/test.txt: file ở local


 /newfolder/: thư mục ở HDFS
 Tạo folder trong HDFS:
 Sử dụng lệnh để lấy 1 file từ
 hdfs dfs -mkdir /newfolder
hdfs về thư mục local:
 Kiểm tra các thư mục có  hdfs dfs -get /newfolder/test.txt
trong hệ thống: /copyfromhdfs/
 hdfs dfs -ls /  Xóa 1 file trong hdfs :
 hdfs dfs -rm /DR/test.txt

28
Dùng [Browe the file system] của Hadoop

 http://localhost:9870/

29
MapReduce

30
MapReduce
 MapReduce được phát triển bởi Google và sau đó
được Apache Software Foundation phát triển và phát
hành dưới dạng một phần của hệ sinh thái Hadoop.
 MapReduce có thể xử lý nhiều loại dữ liệu khác nhau,
bao gồm văn bản, hình ảnh, âm thanh và video. Nó
cũng hỗ trợ các tính năng xử lý lỗi, sao lưu và khôi
phục dữ liệu.
 MapReduce cũng có một số hạn chế.
 Việc xử lý dữ liệu có thể chậm nếu dữ liệu không được
chia đều giữa các nút
 Không phù hợp cho các tác vụ xử lý dữ liệu phức tạp và
phân tích thời gian thực.

31
Word Count Example

 Yêu cầu:
 Viết mã giả để giải bài toán này
 Viết lại với 3 Threads song song cùng xử lý

32
Word Count Walkthrough

33
Word Count Walkthrough

 Giải
thích giai đoạn từ 3 sang 4, làm sao để
không trùng Word

34
Word Count Logic

 Logicđằng sau việc đếm từ được thể hiện


bằng cách sử dụng hai chức năng:
 WordExtractor: String as {(w, 1)}
 WordSum: (w,{c}) as (w, Σc)

35
Complete Word Count in Hadoop

 Source nguồn link

36
Complete Word Count in Spark

// In Scala shell
val lines = sc.textFile("data.txt")
val pairs = lines.flatMap(s => s.split("\\b"))
.map(w => (w,1))
val counts = pairs.reduceByKey((a, b) => a +
b)
counts.saveAsTextFile("word_count_output.txt"
)

37
Word Count Execution
Input Map Shuffle & Sort Reduce Output

the, 1
brown, 1
the quick fox, 1 brown, 2
brown fox Map fox, 2
Reduce how, 1
now, 1
the, 1 the, 3
fox, 1
the, 1
the fox ate
the mouse Map
quick, 1

how, 1
now, 1 ate, 1 ate, 1
brown, 1 mouse, 1 cow, 1
Reduce mouse, 1
how now quick, 1
brown cow Map cow, 1

Có cách nào tối ưu hóa để tính nhanh hơn?


38
Tối ưu hóa

 Sử dụng combiner:
 Cho các khóa lặp lại
 Các tác vụ tổng hợp: sum, count, max,..
 Giúp giảm kích thước của dữ liệu trung gian
 Vi dụ:
def combiner(key, values):
output(key, sum(values))

39
Tối ưu hóa
Input Map & Combine Shuffle & Sort Reduce Output

the, 1
brown, 1
the quick fox, 1 brown, 2
brown fox Map fox, 2
Reduce how, 1
now, 1
the, 3
the, 2
fox, 1
the fox ate
the mouse Map
quick, 1

how, 1
now, 1 ate, 1 ate, 1
brown, 1 mouse, 1 cow, 1
Reduce mouse, 1
how now quick, 1
brown cow Map cow, 1

40
Ưu điểm của Hadoop MapReduce
 Hỗ trợ xử lý và tính toán song song (Parallel
Processing)
 Data Locality
 Dữ liệu càng lớn thì việc di chuyển dữ liệu giữa các máy là
rất mất thời gian và có thể gây ra các vấn đề như tắc nghẽn
đường truyền.
 Hadoop khắc phục vấn đề trên bằng cách phân phối dữ liệu
ở nhiều node và mỗi node xử lý các phần dữ liệu nằm trên
chính nó
 Bảo mật và xác thực (Security & Authentication)
 Chỉ cho phép người dùng được phê duyệt mới có thể thao
tác với HDFS và HBase.

41
Thực hành

 Xử dụng bài lab từ link để thực hiện:


 Installing Java 8
 Installing Secure Shell Server (SSHD)
 Installing Hadoop 3.2.3
 Running Hadoop in standalone mode
 Running Hadoop in Pseudo-distributed mode

42

You might also like