You are on page 1of 4

3.

Kiến trúc MapReduce của Hadoop


3.1. MapReduce là gì?
- Hadoop MapReduce là một phần mềm framework giúp dễ dàng viết các ứng
dụng xử lý lượng lớn dữ liệu (tập dữ liệu nhiều terabyte) song song trên các
cluster (hàng nghìn node) của phần cứng theo cách đáng tin cậy, có khả năng
chịu lỗi.
3.2. Thuật toán của MapReduce

- Giai đoạn Map: Lấy một tập hợp dữ liệu và chuyển đổi nó thành một tập hợp
dữ liệu khác, trong đó các phần tử riêng lẻ được chia thành các bộ dữ liệu
(key/value).
- Giai đoạn Shuffle và Sort: Sắp xếp và tổng hợp dữ liệu đầu vào cho Reduce từ
các kết quả đầu ra của hàm Map.
- Giai đoạn Reduce: Lấy dữ liệu mà Shuffle vừa thực hiện xong và kết hợp các
bộ dữ liệu đó thành một tập hợp các bộ dữ liệu nhỏ hơn.
3.3. Inputs and Outputs
- MapReduce hoạt động độc quyền trên các cặp <key, value>, đầu vào dưới
dạng một tập hợp các cặp <key, value> và tạo ra một tập hợp các cặp <key,
value> làm đầu ra, có thể có nhiều loại khác nhau.
- (input) <k1, v1>  Map  list(<k2, v2>)  Shuffle  <k2, list(v2)> 
Reduce  list(<k3, v3>) (output)
- Giai đoạn Map: Dữ liệu đầu vào của Map ở dạng tệp hoặc thư mục được lưu
trữ trong HDFS. Dữ liệu đầu vào được chuyển đến Map theo từng dòng.
- Giai đoạn Reduce: Dữ liệu đầu ra của Reduce được lưu trữ trong HDFS.
3.4. MapReduce – User Interfaces
3.4.1. Payload
a, Mapper
- Ánh xạ các cặp key/value đầu vào thành một tập hợp các cặp key/value trung
gian.
- Các cặp đầu ra không cần phải cùng loại với các cặp đầu vào. Một cặp đầu vào
có thể ánh xạ tới 0 hoặc nhiều cặp đầu ra.
- Các cặp đầu ra được sắp xếp và phân vùng trước khi làm đầu vào cho Reducer.
- Số lượng ánh xạ thường được quyết định bởi tổng kích thước của đầu vào,
nghĩa là tổng số khối của đầu vào.
b, Reducer
- Giảm một tập hợp các giá trị trung gian chia sẻ khóa thành một tập hợp giá trị
nhỏ hơn.
- Gồm 3 giai đoạn chính: Shuffle, Sort, Reduce
+ Shuffle: Tìm nạp phân vùng cho đầu ra tất cả các ánh xạ của Mapper.
+ Sort: Sắp xếp đầu ra tất cả các ánh xạ của Mapper theo key.
=> Shuffle và Sort diễn ra đồng thời.
+ Reduce: Đầu vào là các ánh xạ sau khi đã được Shuffle và Sort. Sau khi đã
thực hiện giảm bớt thì cho đầu ra không được sắp xếp.
c, Partitioner
- Là một phương tiện phân vùng các cặp key-value trong đầu ra của Mapper.
- Nó phân vùng dữ liệu bằng cách sử dụng điều kiện do người dùng xác định,
hoạt động giống như hàm băm.
- Số lượng bộ phân vùng bằng với số lượng đầu vào của Reducer.
d, Counter
- Là một phương tiện để các ứng dụng MapReduce báo cáo số liệu thống kê của
nó.
3.5. Ưu nhược điểm của MapReduce
1. Ưu điểm
- Xử lý dữ liệu lớn: MapReduce được thiết kế đặc biệt để xử lý và tính toán trên
các tập dữ liệu lớn, chẳng hạn như petabyte hoặc exabyte dữ liệu.
- Tính toán phân tán: Hệ thống MapReduce phân tán công việc xử lý dữ liệu
trên nhiều máy chủ, giúp tận dụng sức mạnh tính toán của nhiều máy tính.
- Khả năng mở rộng: Bạn có thể thêm máy chủ vào hệ thống MapReduce để
tăng hiệu suất xử lý dữ liệu một cách dễ dàng khi cần.
- Tính chịu lỗi: MapReduce có khả năng xử lý lỗi một cách hiệu quả thông qua
việc tự động chuyển công việc đến các máy tính khác nếu máy chủ gặp sự cố.
- Dễ dàng lập trình: Có nhiều khung lập trình, chẳng hạn như Apache Hadoop,
Apache Spark, và Flink, hỗ trợ MapReduce, giúp người lập trình viết mã một
cách dễ dàng.
2. Nhược điểm
- Khó triển khai và cấu hình: Cài đặt và cấu hình một hệ thống MapReduce có
thể phức tạp và đòi hỏi kiến thức kỹ thuật đáng kể.
- Tốc độ chậm cho các công việc nhỏ: MapReduce không phải lựa chọn tốt cho
các công việc xử lý nhỏ hoặc truy cập dữ liệu tầnsuất thấp, do overhead của quá
trình tạo và tải các tập dữ liệu trên đĩa.
- Lưu trữ trung gian: MapReduce thường đòi hỏi lưu trữ trung gian trên đĩa,
điều này có thể tạo ra hiệu suất kém và tăng độ trễ.
- Không phù hợp cho các loại công việc khác nhau: MapReduce chủ yếu
thích hợp cho các công việc tính toán phân tán và có mô hình dữ liệu phù hợp.
Đối với các loại công việc khác nhau, chẳng hạn như xử lý dữ liệu đồ thị, có thể
cần sử dụng các công cụ khác.
- Khó phân tích dữ liệu thời gian thực: MapReduce không phải là lựa chọn tốt
cho các ứng dụng đòi hỏi phản hồi thời gian thực và xử lý dữ liệu liên tục.
3.6. Apache Pig
- Apache Pig là một nền tảng để phân tích các tập dữ liệu lớn bao gồm ngôn ngữ
cấp cao để thể hiện các chương trình phân tích dữ liệu, cùng với cơ sở hạ tầng để
đánh giá các chương trình này.
- Đặc tính nổi bật của các chương trình Pig là cấu trúc của chúng có thể tuân
theo sự song song hóa đáng kể, từ đó cho phép chúng xử lý các tập dữ liệu rất
lớn.
- Lớp cơ sở hạ tầng của Pig bao gồm một trình biên dịch tạo ra các chuỗi
chương trình Map-Reduce.
- Lớp ngôn ngữ của Pig hiện bao gồm một ngôn ngữ văn bản gọi là Pig Latin, có
các thuộc tính chính sau:
+ Dễ dàng lập trình.
+ Khả năng tối ưu hóa.
+ Khả năng mở rộng: Pig Latin có thể được mở rộng bằng cách sử dụng các hàm
do người dùng xác định (UDF) mà người dùng có thể viết bằng Java, Python,
JavaScript, Ruby,… và sau đó gọi trực tiếp từ ngôn ngữ đó.

You might also like