Professional Documents
Culture Documents
C2 - Hadoop Distributed Architecture - HDFS - MapReduce
C2 - Hadoop Distributed Architecture - HDFS - MapReduce
C2 - Hadoop Distributed Architecture - HDFS - MapReduce
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
5
Chia để trị
“Work”
Partition
w1 w2 w3
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?
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
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)
23
HDFS (Hadoop Distributed File System)
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)
26
HDFS (Hadoop Distributed File System)
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/
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
35
Complete Word Count in Hadoop
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
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
42