Hadoop là gì và nó hoạt động như thế nào?
Hadoop là một nền tảng xử lý dữ liệu phân tán, nổi bật với khả năng lưu trữ và quản lý khối lượng lớn dữ liệu. Hadoop bao gồm các thành phần chính sau:
-
YARN - Quản lý Tài Nguyên Cụm
YARN là hệ điều hành cho cụm Hadoop, cho phép nhiều ứng dụng chạy đồng thời trên nhiều máy. YARN quản lý tài nguyên một cách hiệu quả với ba thành phần chính:- Resource Manager (RM): Quản lý tài nguyên tổng thể trong cụm
- Node Manager (NM): Quản lý các nút trong cụm
- Application Master (AM): Quản lý từng ứng dụng riêng lẻ
Mỗi máy trong cụm sẽ đóng vai trò khác nhau: một máy chủ sẽ là MASTER và các máy còn lại sẽ là WORKERS. Khi một ứng dụng được gửi tới YARN, RM sẽ chỉ định một NM khởi chạy vùng chứa (container) để thực thi ứng dụng.
-
HDFS - Hệ Thống Tệp Phân Tán Hadoop
HDFS cho phép lưu trữ và truy xuất các tệp dữ liệu hiệu quả trong hệ thống. HDFS bao gồm hai thành phần chính:- Name Node (NN): Quản lý thông tin về các tệp và vị trí của chúng trong cụm
- Data Node (DN): Lưu trữ thực tế dữ liệu
Khi người dùng yêu cầu sao chép một tệp dữ liệu, yêu cầu sẽ được gửi đến NN, và NN sẽ chuyển lệnh đến các DN để thực hiện sao chép.
-
Map/Reduce - Khung làm việc Hadoop Map Reduce
Map Reduce là một mô hình lập trình cho phép xử lý dữ liệu lớn theo cách phân tán. Nó hoạt động dựa trên hai hàm chính:- Hàm Map: Đọc các khối dữ liệu, áp dụng logic xử lý và gửi kết quả cho hàm Reduce.
- Hàm Reduce: Tổng hợp kết quả từ các hàm Map và xuất ra kết quả cuối cùng.
Hadoop Map Reduce chạy trên nền tảng YARN, quản lý tài nguyên cho các tập dữ liệu lớn, trong khi HDFS chịu trách nhiệm lưu trữ dữ liệu.
So Sánh Hồ Dữ Liệu và Kho Dữ Liệu
Trong phân tích dữ liệu, hồ dữ liệu (Data Lake) và kho dữ liệu (Data Warehouse) có vai trò quan trọng nhưng khác nhau rõ rệt. Dưới đây là bảng so sánh giữa hai khái niệm này:
Khu vực | Hồ Dữ Liệu | Kho Dữ Liệu |
---|---|---|
Lưu trữ dữ liệu | Có thể lưu trữ dữ liệu không cấu trúc, bán cấu trúc và cấu trúc ở định dạng thô. | Chỉ lưu trữ dữ liệu có cấu trúc, dữ liệu được biến đổi và đã lọc. |
Định nghĩa lược đồ | Thông thường, lược đồ được định nghĩa sau khi dữ liệu được lưu trữ (Schema-on-read). | Lược đồ được định nghĩa trước khi dữ liệu được lưu trữ (Schema-on-write). |
Chất lượng dữ liệu | Dữ liệu có thể quản lý hoặc không (bao gồm cả dữ liệu thô). | Dữ liệu được quản lý chặt chẽ và là phiên bản trung tâm của sự thật. |
Người dùng | Thích hợp cho các nhà phân tích dữ liệu sâu như Data Scientists. | Thích hợp cho các nhà phân tích kinh doanh. |
Giá cả và hiệu suất | Chi phí lưu trữ thấp so với kho dữ liệu, nhưng hiệu suất truy vấn có thể không cao. | Chi phí lưu trữ cao hơn, nhưng hiệu suất truy vấn tốt hơn. |
Khả năng tiếp cận | Dữ liệu dễ dàng truy cập và có ít hạn chế. | Cấu trúc thiết kế khiến việc truy cập và điều khiển khó hơn. |
Lưu Trữ và Quản Lý Dữ Liệu
Quản lý dữ liệu có thể bao gồm HDFS hoặc các dịch vụ lưu trữ đám mây như S3 của Amazon, Azure Blob, hoặc Azure Data Lake Storage.
Thu Thập và Nhập Dữ Liệu
Quá trình này bao gồm việc xác định, thực thi và quản lý dữ liệu từ các hệ thống khác vào trong hồ dữ liệu.
Xử Lý và Chuyển Đổi Dữ Liệu
Quá trình xử lý dữ liệu bao gồm:
- Kiểm tra chất lượng dữ liệu
- Chuyển đổi và chuẩn bị dữ liệu
- Phân tích, tổng hợp và trích xuất dữ liệu
- Ứng dụng mô hình học máy
Apache Spark
Apache Spark là gì?
Apache Spark là một công cụ đa ngôn ngữ mạnh mẽ cho các công việc liên quan đến Kỹ thuật Dữ liệu, Khoa học Dữ liệu, và Học Máy trên các cụm hoặc máy đơn.
Lợi thế của Apache Spark:
- Hiệu suất: Nhanh hơn 10 đến 100 lần so với Hadoop Map/Reduce.
- Dễ dàng phát triển: Spark SQL cho phép thực thi các truy vấn SQL với hiệu suất cao và tích hợp dễ dàng với các API.
- Hỗ trợ nhiều ngôn ngữ: Spark hỗ trợ Java, Scala, Python và R.
- Lưu trữ: Tích hợp tốt với HDFS và các dịch vụ lưu trữ đám mây như Blob storage của Azure và S3 của AWS.
- Quản lý nguồn lực: Có thể lên lịch và quản lý tài nguyên bằng YARN, Mesos hoặc Kubernetes.
source: viblo