Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và bùng nổ thông tin, khối lượng dữ liệu mà các doanh nghiệp tiếp nhận và xử lý đang tăng trưởng theo cấp số nhân. Theo báo cáo từ IDC DataSphere, tổng lượng dữ liệu toàn cầu được dự báo vượt mốc 175 Zettabytes. Đối mặt với dòng chảy dữ liệu khổng lồ, các hệ thống cơ sở dữ liệu quan hệ truyền thống (RDBMS) và kho dữ liệu thế hệ cũ bộc lộ hàng loạt nút thắt cổ chai về khả năng mở rộng (scalability), chi phí phần cứng và đặc biệt là độ trễ trong các truy vấn phân tích tổng hợp phức tạp.

Đề tài khóa luận tốt nghiệp "Xây dựng công cụ thu thập, xử lý, phân tích và truy vấn động hỗ trợ dữ liệu lớn" (Building a Dynamic Tool for Collecting, Processing, Analyzing, and Querying for Big Data Support) do sinh viên Quan Huỳnh Quang Dương (MSSV: 20521224) và Nguyễn Tú Quyên (MSSV: 20521823), dưới sự hướng dẫn của TS. Nguyễn Thanh Bình tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM (UIT), tập trung giải quyết bài toán cốt lõi: Làm thế nào để xây dựng một nền tảng dữ liệu lớn mã nguồn mở có khả năng thu thập dữ liệu đa nguồn linh hoạt, chuẩn hóa và cho phép truy vấn phân tích đa chiều (OLAP) với độ trễ dưới một giây (sub-second query response) trên tập dữ liệu hàng triệu đến hàng tỷ bản ghi.

                    KIẾN TRÚC TỔNG THỂ HỆ THỐNG
+-------------------------------------------------------------------------+
|                              DATA SOURCES                               |
|   +-------------------+  +--------------------+  +------------------+   |
|   | PostgreSQL (RDBMS)|  | MongoDB (NoSQL)    |  | Flat Files (CSV) |   |
|   +---------+---------+  +---------+----------+  +--------+---------+   |
+-------------|----------------------|----------------------|-------------+
              |                      |                      |
              v                      v                      v
+-------------------------------------------------------------------------+
|                       DATA INGESTION & PIPELINE                         |
|   +-----------------------------------------------------------------+   |
|   | Apache Airflow 2.8 Orchestrator (DAG: init_ingestion)           |   |
|   |    -> PySpark / Spark Submit Engine (ETL Processing)            |   |
|   |    -> Flask Micro-service API (Ad-hoc Flat File Ingestion)      |   |
|   +--------------------------------+--------------------------------+   |
+------------------------------------|------------------------------------+
                                     v
+-------------------------------------------------------------------------+
|                      STORAGE & DATA LAKEHOUSE                           |
|   +-----------------------------------------------------------------+   |
|   | HDFS (Columnar Storage: Apache Parquet with Snappy Compression) |   |
|   | Apache Hive 3.1.3 (Metastore & Structured Schema Engine)        |   |
|   | Apache HBase 2.5 (High-throughput Key-Value Storage)           |   |
|   +--------------------------------+--------------------------------+   |
+------------------------------------|------------------------------------+
                                     v
+-------------------------------------------------------------------------+
|                         OLAP ACCELERATION CORE                          |
|   +-----------------------------------------------------------------+   |
|   | Apache Kylin 5.0 Engine                                         |   |
|   |   - Multidimensional Cube Pre-computation                       |   |
|   |   - Aggregation Groups & Joint Dimensions Optimization          |   |
|   |   - Spark Query Engine / Pushdown Query to Hive Fallback        |   |
|   +--------------------------------+--------------------------------+   |
+------------------------------------|------------------------------------+
                                     v
+-------------------------------------------------------------------------+
|                     PRESENTATION & VISUALIZATION                        |
|   +-----------------------------------------------------------------+   |
|   | Apache Superset 3.0 (Interactive BI Dashboards via JDBC/SQL)    |   |
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Tự động hóa luồng thu thập dữ liệu đa nguồn (Multi-source Ingestion): Xây dựng pipeline xử lý trích xuất dữ liệu tự động từ cả Relational DB (PostgreSQL, SQL Server), NoSQL DB (MongoDB) và tập tin bán cấu trúc (Flat Files: CSV, TXT) thông qua kiến trúc phân tán.
  2. Chuẩn hóa lưu trữ hướng cột (Columnar Storage): Tối ưu dung lượng lưu trữ trên HDFS thông qua định dạng Apache Parquet, hỗ trợ đầy đủ metadata và phân vùng (partitioning) trên Apache Hive.
  3. Hiện thực hóa công cụ tăng tốc OLAP: Ứng dụng Apache Kylin 5.0 để xây dựng khối đa chiều (MOLAP Cubes), giải quyết bài toán bùng nổ không gian chiều (Curse of Dimensionality) nhờ các kỹ thuật Aggregation Groups và Pre-aggregation.
  4. Cung cấp giao diện phân tích động và BI: Tích hợp Apache Superset để trực quan hóa dữ liệu theo thời gian thực và xây dựng Flask RESTful API hỗ trợ người dùng nạp dữ liệu ad-hoc nhanh chóng.

Phạm vi và giới hạn nghiên cứu

  • Phạm vi dữ liệu: Thử nghiệm và đánh giá trên 3 bộ cơ sở dữ liệu mẫu: bike_sales (PostgreSQL - 9 quan hệ), supermarket (MongoDB - Document store), và tập dữ liệu quy mô lớn brazil_ecommerce (SQL Server - hơn 9 triệu bản ghi).
  • Phạm vi kỹ thuật: Toàn bộ hệ sinh thái chạy trên nền tảng container hóa Docker & Docker Compose, kết nối qua mạng riêng ảo Tailscale VPN.
  • Giới hạn: Chưa xử lý dữ liệu streaming thời gian thực ở mức mili-giây (Real-time Streaming với Apache Kafka/Flink); tập trung tối ưu cho mô hình Batch Ingestion và Near-Real-Time Analytics.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi thiết kế hệ thống, nhóm nghiên cứu đã phân tích các rào cản kỹ thuật của các giải pháp truyền thống khi đối mặt với dữ liệu quy mô lớn.

Tiêu chí Cơ sở dữ liệu quan hệ (RDBMS) Data Warehouse truyền thống (Hive thuần) Hệ thống đề xuất (Kylin + Hive + Spark)
Khả năng mở rộng (Scalability) Scale-up theo chiều dọc (đắt đỏ, giới hạn phần cứng) Scale-out theo chiều ngang trên HDFS Scale-out phân tán linh hoạt trên YARN/HDFS
Tốc độ truy vấn tổng hợp (>1M records) Giảm mạnh, nghẽn I/O (vài phút đến timeout) Trung bình (15s - 60s do chạy MapReduce/Tez) Cực nhanh (< 0.5s nhờ Pre-aggregation Cube)
Mô hình xử lý OLAP ROLAP hạn chế, phụ thuộc vào Index B-Tree ROLAP qua SQL/HQL MOLAP tính toán trước các Cuboid
Tính đa dạng nguồn dữ liệu Kém, phụ thuộc vào ETL thủ công nặng nề Cần viết script pipeline phức tạp Tự động hóa qua Airflow DAG & Flask REST API
Chi phí triển khai bản quyền Rất cao với các giải pháp thương mại Miễn phí (Mã nguồn mở) Miễn phí (Mã nguồn mở Apache 100%)

Phân tích yêu cầu theo mô hình MoSCoW

  • Must-Have (Bắt buộc): Pipeline thu thập dữ liệu tự động từ PostgreSQL, MongoDB, SQL Server; lưu trữ định dạng Parquet trên HDFS; tạo mô hình dữ liệu Star Schema trên Kylin; giao diện BI trên Apache Superset.
  • Should-Have (Nên có): REST API (Flask) cho phép đẩy file báo cáo ad-hoc (.csv, .txt) tự động convert sang Parquet; tính năng Pushdown Query về Hive khi Cube không chứa đủ dimension; Computed Columns trên Cube.
  • Could-Have (Có thể có): Cơ chế cấu hình Aggregation Groups nâng cao nhằm giảm dung lượng index; tích hợp mạng riêng ảo Tailscale kết nối máy chủ đa nền tảng.
  • Won't-Have (Chưa hỗ trợ đợt này): Phân quyền bảo mật cấp độ dòng (Row-level Security) trên giao diện Kylin; cơ chế Streaming Cube tự động từ Kafka broker.

Thiết kế hệ thống

Toàn bộ hệ thống được module hóa thành các tầng kiến trúc rõ ràng, đảm bảo tính liên kết lỏng (loose coupling) và sẵn sàng mở rộng quy mô.

+---------------------------------------------------------------------------------+
|                       LUỒNG DỮ LIỆU TỔNG THỂ (DATA FLOW)                        |
+---------------------------------------------------------------------------------+
[Nguồn Dữ Liệu] ---> [Airflow DAG / Spark Job] ---> [HDFS: Parquet Files]
                                                           |
                                                           v
[Superset BI] <--- [Kylin 5.0 OLAP Engine] <--- [Hive Tables & Metastore]
       ^                     | (Fallback)
       |                     v
       +------------- [Hive SQL Engine]

Technology Stack và Version Ma trận

  • Apache Hadoop (HDFS & YARN): v3.3.6 (Đóng vai trò hệ thống tệp phân tán và điều phối tài nguyên cụm).
  • Apache Spark: v3.4.1 (Engine xử lý tính toán phân tán trong bộ nhớ cho tác vụ Ingestion và Cube Build).
  • Apache Hive: v3.1.3 (Data Warehouse lưu trữ cấu trúc bảng và cung cấp Metastore cho Kylin).
  • Apache Kylin: v5.0 (Cốt lõi OLAP Engine, tính toán trước các khối Cuboid đa chiều).
  • Apache HBase: v2.5.5 (Lưu trữ và phục vụ chỉ mục cube tốc độ cao).
  • Apache Airflow: v2.8.1 (Lập lịch và điều phối quy trình ETL/ELT qua DAGs).
  • Apache Superset: v3.0.2 (Nền tảng BI trực quan hóa biểu đồ và bảng điều khiển).
  • Flask Framework: v3.0 (Xây dựng RESTful API tiếp nhận file phẳng).
  • Containerization: Docker v26.0 & Docker Compose v2.25.

Thiết kế Database Schema

Hệ thống chuẩn hóa dữ liệu từ các hệ thống nguồn thành mô hình Star Schema (Lược đồ hình sao) tối ưu cho truy vấn OLAP:

  • Fact Table: ORDERSORDER_ITEMS (chứa các measures định lượng: list_price, quantity, discount, total_amount).
  • Dimension Tables: CUSTOMERS, STORES, STAFFS, PRODUCTS, CATEGORIES, BRANDS (chứa các thuộc tính lọc, gom nhóm, drill-down và roll-up).
-- Đoạn mã DDL định nghĩa Fact Table trên Apache Hive lưu trữ dạng Parquet
CREATE EXTERNAL TABLE IF NOT EXISTS bike_sales.order_items (
    order_id INT,
    item_id INT,
    product_id INT,
    quantity INT,
    list_price DECIMAL(10,2),
    discount DECIMAL(10,2)
)
STORED AS PARQUET
LOCATION '/warehouse/bike_sales/order_items';

Thiết kế API Micro-Ingestion (Flask)

Nhằm phục vụ nhân viên vận hành đẩy nhanh các tệp báo cáo hàng ngày mà không cần kích hoạt toàn bộ pipeline nặng, hệ thống xây dựng RESTful Endpoint /upload:

  • Method: POST
  • Payload (Multipart Form): file (Book1.txt / .csv), directory (/warehouse/bike_sales/brands), convert_to_parquet (true).
  • Response: 200 OK trả về danh sách đường dẫn filepaths chứa file .parquet đã sinh trên HDFS.
# API Endpoint tiếp nhận file và chuyển đổi sang Parquet trên HDFS
@app.route('/upload', methods=['POST'])
def upload_flat_file():
    uploaded_file = request.files.get('file')
    hdfs_target_dir = request.form.get('directory')
    convert_parquet = request.form.get('convert_to_parquet', 'false').lower() == 'true'
    
    if not uploaded_file or not hdfs_target_dir:
        return jsonify({"error": "Missing file or directory parameter"}), 400
        
    local_temp_path = os.path.join("/tmp", secure_filename(uploaded_file.filename))
    uploaded_file.save(local_temp_path)
    
    if convert_parquet:
        df = pd.read_csv(local_temp_path)
        parquet_filename = f"{os.path.splitext(uploaded_file.filename)[0]}.parquet"
        local_parquet_path = os.path.join("/tmp", parquet_filename)
        df.to_parquet(local_parquet_path, engine='pyarrow', compression='snappy')
        hdfs_dest_path = f"{hdfs_target_dir}/{parquet_filename}"
        hdfs_client.upload(hdfs_dest_path, local_parquet_path, overwrite=True)
        return jsonify({"filepaths": [hdfs_dest_path]}), 200

Methodology

Dự án áp dụng phương pháp luận phát triển theo quy trình Agile/Scrum rút gọn, chia làm 4 giai đoạn chính (Milestones):

  1. Sprint 1 (Khởi tạo & Hạ tầng): Thiết lập Docker Compose phân tán; cấu hình mạng Tailscale; đồng bộ phiên bản tương thích giữa Hadoop 3.3, Spark 3.4, Hive 3.1 và Kylin 5.0.
  2. Sprint 2 (Pipeline Ingestion): Viết Spark Batch Job đọc JDBC/Mongo connectors; xây dựng Airflow DAG init_ingestion; tối ưu hóa việc ghi Parquet trực tiếp lên HDFS.
  3. Sprint 3 (Mô hình hóa OLAP & Tích hợp Kylin): Thiết kế Fact/Dimension relationships, Computed Columns (total_price = list_price * (1 - discount) * quantity), cấu hình Aggregation Groups trên Kylin 5.0.
  4. Sprint 4 (Testing, BI & Đánh giá Hiệu năng): Xây dựng Dashboard trên Superset; thực thi bộ kiểm thử Benchmark truy vấn giữa SQL Server, Hive và Kylin trên tập dữ liệu 9 triệu dòng.

Implementation và kết quả

Development Process

1. Airflow Orchestration DAG

Quy trình nạp dữ liệu được tự động hóa thông qua DAG init_ingestion với cấu trúc task tuần tự: convert_params $\rightarrow$ check_destination $\rightarrow$ spark_ingestion $\rightarrow$ create_database $\rightarrow$ create_tables.

from airflow import DAG
from airflow.operators.python import PythonOperator
from airflow.providers.apache.spark.operators.spark_submit import SparkSubmitOperator
from datetime import datetime

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2024, 6, 1),
    'retries': 1
}

with DAG('init_ingestion', default_args=default_args, schedule_interval=None, catchup=False) as dag:
    
    spark_task = SparkSubmitOperator(
        task_id='spark_ingestion',
        application='/home/airflow/spark/jobs/DataIngestion-assembly-0.0-SNAPSHOT.jar',
        java_class='vn.uit.bigdata.IngestionJob',
        application_args=[
            '--db_name', '{{ dag_run.conf["db_name"] }}',
            '--tables', '{{ dag_run.conf["tables"] }}',
            '--url', '{{ dag_run.conf["url"] }}',
            '--destination', '{{ dag_run.conf["destination"] }}'
        ],
        conf={'spark.executor.memory': '4g', 'spark.executor.cores': '2'},
        conn_id='spark_default'
    )

2. Kỹ thuật tiền tính toán và tối ưu hóa khối OLAP trên Kylin

Để giải quyết sự bùng nổ tổ hợp chiều ($2^N$ cuboids cho $N$ dimensions), nhóm nghiên cứu áp dụng các cấu trúc chỉ mục nâng cao:

  • Mandatory Dimensions: Các chiều bắt buộc luôn xuất hiện trong mọi câu hỏi phân tích (ví dụ: order_date).
  • Hierarchy Dimensions: Thứ bậc phân cấp xác định (ví dụ: Year $\rightarrow$ Quarter $\rightarrow$ Month $\rightarrow$ Day hoặc Category $\rightarrow$ Product).
  • Joint Dimensions: Gom các chiều luôn đi kèm với nhau thành một đơn vị tính toán, giảm bớt các cuboid không cần thiết.
Ví dụ tối ưu hóa Cuboids:
- Nếu có 4 chiều độc lập: A, B, C, D -> Số Cuboid = 2^4 = 16 cuboids.
- Thiết lập Joint Dimension (A, B) -> Xem (A, B) là 1 chiều duy nhất:
  -> Số Cuboid giảm xuống còn: 2^3 = 8 cuboids (Tiết kiệm 50% thời gian build & bộ nhớ).

Testing và validation

Nhóm tiến hành kiểm thử hiệu năng truy vấn trên cùng một hệ thống phần cứng và tập dữ liệu lớn brazil_ecommerce (hơn 9 triệu bản ghi) qua 4 kịch bản truy vấn phân tích tổng hợp (Aggregation & Filtering).

  THỜI GIAN ĐÁP ỨNG TRUY VẤN GIỮA CÁC ENGINE (TÍNH BẰNG GIÂY)
  (Tập dữ liệu 9,000,000+ bản ghi - Càng thấp càng tốt)

  Engine        | Thời gian đáp ứng (giây)
  --------------+-------------------------------------------------------------
  SQL Server    | [====================================] 18.42s
  Apache Hive   | [==============================] 16.50s
  Kylin 5.0     | [#] 0.12s (Nhanh gấp ~137 lần Hive)

Bảng so sánh chi tiết hiệu năng truy vấn thực tế

Kịch bản truy vấn (Query Scenario) SQL Server (Row-based) Apache Hive (MR/Tez Engine) Apache Kylin 5.0 (Pre-computed Cube) Tỷ lệ cải thiện tốc độ (Kylin vs Hive)
Query 1: Tổng doanh thu và số lượng đơn hàng theo từng năm/tháng 12.35s 14.20s 0.08s Nhanh hơn 177.5 lần
Query 2: Top 10 sản phẩm bán chạy nhất theo từng danh mục và vùng miền 18.42s 16.50s 0.12s Nhanh hơn 137.5 lần
Query 3: Doanh thu trung bình, giá trị giảm giá lũy kế theo nhóm khách hàng 15.60s 17.80s 0.09s Nhanh hơn 197.7 lần
Query 4: Thống kê số lượng đơn hàng trễ hạn theo trạng thái giao hàng 9.80s 13.10s 0.07s Nhanh hơn 187.1 lần

Đánh giá tốc độ Ingestion

  • Batch Spark Ingestion: Thu thập toàn bộ 9 triệu dòng từ database quan hệ, phân tách thành 9 file Parquet (mỗi file 1 triệu dòng, dung lượng chuẩn hóa ~128MB per block) nạp lên HDFS chỉ mất 4 phút 57 giây.
  • Ad-hoc Ingestion: Đẩy tệp dữ liệu phẳng qua Flask API hoàn tất chuyển đổi và lưu trữ HDFS trong 300ms.

Kết quả đạt được

+-------------------------------------------------------------------------+
|                  TỔNG HỢP KẾT QUẢ ĐẠT ĐƯỢC CỦA DỰ ÁN                    |
+-------------------------------------------------------------------------+
| 1. Tính linh hoạt nguồn: Thu thập thành công PostgreSQL, Mongo, MSSQL.  |
| 2. Chuẩn hóa lưu trữ: 100% dữ liệu chuyển đổi sang Parquet nén Snappy.  |
| 3. Tốc độ vượt trội: Truy vấn phân tích duy trì ổn định dưới 0.15 giây. |
| 4. Khả năng mở rộng: Triển khai 100% trên Docker, quản trị mạng Tailscale.|
| 5. Trực quan hóa tương tác: Xây dựng hoàn chỉnh Dashboards trên Superset.|
+-------------------------------------------------------------------------+
  1. Hiệu suất truy vấn gần như không đổi: Bất kể kích thước dữ liệu tăng từ 100 nghìn lên 9 triệu dòng, thời gian phản hồi của Kylin vẫn duy trì ổn định trong khoảng 0.07s – 0.15s, vượt trội hoàn toàn so với Hive và RDBMS truyền thống.
  2. Hệ thống hóa Dashboard: Xây dựng thành công hệ thống Dashboard quản trị kinh doanh trực quan trên Apache Superset với các biểu đồ phân tích thời gian thực, phục vụ trực tiếp cho đội ngũ điều hành doanh nghiệp.

Đổi mới và đóng góp

  1. Đổi mới kiến trúc tích hợp động (Dynamic Multi-Source Architecture): Thay vì xây dựng các đường ống ETL cứng (hardcoded), hệ thống thiết kế cơ chế nhận tham số động qua Airflow DAG, cho phép người dùng chỉ cần truyền kết nối JDBC/NoSQL là hệ thống tự động sinh cấu trúc bảng trên Hive và ánh xạ vào Parquet Data Lakehouse.
  2. Kỹ thuật nạp dữ liệu vi mô (Micro-Ingestion via Parquet Stream): Tích hợp Flask REST API độc lập để tiếp nhận các tệp nhật ký bán hàng (.csv, .txt) và chuyển đổi trực tiếp sang định dạng Parquet ngay tại tầng biên, bỏ qua các bước tiền xử lý cồng kềnh.
  3. Triệt tiêu "Bùng nổ chiều" (Curse of Dimensionality): Tận dụng các thuật toán phân nhóm tổng hợp (Aggregation Groups, Joint Dimensions) trên Kylin 5.0, giúp tiết kiệm hơn 60% dung lượng lưu trữ khối Cube và rút ngắn thời gian build index so với các cấu hình mặc định.
  4. Mô hình triển khai chuẩn hóa doanh nghiệp vừa và nhỏ: Toàn bộ kiến trúc phức tạp của hệ sinh thái Big Data (Hadoop, Spark, Hive, Kylin, HBase, Airflow, Superset) được cô đọng hoàn chỉnh trong tệp cấu hình Docker Compose, giúp giảm thời gian thiết lập môi trường từ nhiều ngày xuống còn vài phút.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tế

  • Thương mại điện tử & Bán lẻ (E-Commerce & Retail): Theo dõi doanh thu hàng triệu đơn hàng theo thời gian thực, phân tích hành vi giỏ hàng, xác định tỷ lệ đơn hủy/giao trễ theo vị trí địa lý với độ trễ phản hồi tức thì.
  • Tài chính & Ngân hàng: Tổng hợp lịch sử giao dịch thẻ tín dụng, phân tích xu hướng chi tiêu đa chiều phục vụ phát hiện bất thường và lập báo cáo tài chính định kỳ.
                    KỊCH BẢN TRIỂN KHAI DOANH NGHIỆP
+--------------------+      +--------------------+      +--------------------+
|  Chi nhánh Bán lẻ  |      |   Hệ thống E-Com   |      |  Nhân viên Báo cáo |
| (PostgreSQL RDBMS) |      |   (MongoDB NoSQL)  |      |  (File CSV/Excel)  |
+---------+----------+      +---------+----------+      +---------+----------+
          |                           |                           |
          +-------------------+       |       +-------------------+
                              |       |       |
                              v       v       v
+----------------------------------------------------------------------------+
|             TRUNG TÂM PHÂN TÍCH DỮ LIỆU LỚN TẬP TRUNG (LAKEHOUSE)          |
|    [Apache Airflow Pipeline] ---> [Apache Parquet / Hadoop HDFS]           |
|                                         |                                  |
|                                         v                                  |
|   [Giám đốc / Quản lý] <--- [Apache Superset BI] <--- [Apache Kylin 5.0]   |
+----------------------------------------------------------------------------+

Yêu cầu tài nguyên hệ thống (System Requirements)

Thành phần Cấu hình tối thiểu (Development) Cấu hình khuyến nghị (Production Cluster)
Hệ điều hành Ubuntu 22.04 LTS / Windows 11 (WSL2) CentOS 7 / Rocky Linux 9 / Ubuntu Server 22.04
CPU Tối thiểu 8 Cores 16 - 32 Cores phân tán
RAM 16 GB 64 GB - 128 GB (Ưu tiên bộ nhớ cho Spark & Kylin)
Lưu trữ 50 GB SSD 1 TB - 10 TB SSD NVMe (HDFS DataNode)
Môi trường Docker 26.0+, Docker Compose 2.25+ Kubernetes Cluster / Native Apache Deployment

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Tài nguyên bộ nhớ: Việc xây dựng các chỉ mục khối phức tạp (MOLAP Index Build) tiêu tốn nhiều tài nguyên RAM. Trong quá trình thử nghiệm với các cấu hình chưa tối ưu, hệ thống từng gặp lỗi Out of Memory (OOM) khi thực hiện các phép toán tổ hợp chiều bậc cao.
  • Độ phụ thuộc Hive: Phiên bản Apache Kylin 5.0 yêu cầu Hive Metastore làm trung gian quản lý siêu dữ liệu, chưa hỗ trợ đọc trực tiếp độc lập hoàn toàn mà không cần khởi chạy service Hive.

Hướng phát triển tương lai

  1. Tích hợp Real-time Streaming: Kết hợp Apache Kafka và Spark Streaming / Flink để cung cấp khả năng phân tích dữ liệu luồng tức thời (Real-time OLAP Cube).
  2. Tự động hóa tối ưu Cube bằng AI: Ứng dụng mô hình học máy để phân tích lịch sử các câu lệnh SQL của người dùng, từ đó tự động gợi ý và cấu hình các Aggregation Groups tối ưu nhất.
  3. Mở rộng Kubernetes (K8s): Đóng gói hệ thống dưới dạng Helm Charts để triển khai linh hoạt trên các nền tảng điện toán đám mây (GCP GKE, AWS EKS).

Đối tượng hưởng lợi

  • Sinh viên & Nghiên cứu sinh: Cung cấp tài liệu tham khảo chi tiết, kiến trúc mẫu và các kịch bản thực thi thực tế về cách tích hợp sâu các công nghệ Big Data cốt lõi (Hadoop, Spark, Hive, Kylin, HBase).
  • Kỹ sư dữ liệu (Data Engineers) & Lập trình viên: Nắm bắt các kỹ thuật tối ưu hóa lưu trữ cột (Parquet), thiết kế Airflow DAG tự động hóa và các phương pháp giải quyết hiện tượng nghẽn I/O khi xử lý dữ liệu hàng triệu dòng.
  • Doanh nghiệp & Đội ngũ Phân tích (Business Analysts): Sở hữu một giải pháp phân tích dữ liệu mã nguồn mở hoàn chỉnh, tiết kiệm 100% chi phí bản quyền phần mềm, giảm thiểu chi phí đầu tư phần cứng nhờ công nghệ tiền tính toán khối, đồng thời trao quyền cho người dùng nghiệp vụ xây dựng báo cáo động chỉ trong vài giây.

Câu hỏi thường gặp (FAQ)

1. Yêu cầu kỹ thuật tối thiểu để triển khai toàn bộ hệ thống là gì?

Hệ thống yêu cầu tối thiểu 8 Cores CPU, 16GB RAM50GB ổ cứng trống, chạy trên nền tảng Linux (khuyến nghị Ubuntu 22.04 LTS) hoặc Windows thông qua Docker & Docker Compose.

2. Giới hạn khả năng mở rộng (Scalability) của Apache Kylin nằm ở đâu?

Kylin có thể mở rộng xử lý trên hàng chục tỷ bản ghi nhờ cơ chế phân tán của Hadoop/Spark. Giới hạn chính nằm ở tài nguyên RAM/Disk trong quá trình build Cube nếu thiết kế quá nhiều dimensions mà không áp dụng các kỹ thuật gom nhóm (Aggregation Groups).

3. Làm thế nào để tích hợp hệ thống với các nguồn cơ sở dữ liệu mới?

Người dùng chỉ cần bổ sung JDBC Driver tương ứng trong Spark Ingestion Job và cấu hình tham số kết nối (url, db_name, tables, driver) trên giao diện Airflow DAG init_ingestion.

4. Chi phí vận hành và bảo trì hệ thống này so với các giải pháp thương mại như thế nào?

Hệ thống sử dụng 100% công nghệ mã nguồn mở của Apache Software Foundation, giúp doanh nghiệp tiết kiệm hàng chục ngàn USD chi phí bản quyền hàng năm so với các giải pháp như Oracle Exadata, Teradata hay Tableau Server.

5. Tại sao cần kết hợp cả Hive và Kylin mà không sử dụng trực tiếp Hive?

Hive mạnh về khả năng quản lý và truy vấn batch dữ liệu lớn nhưng có độ trễ cao (từ 15 giây đến vài phút). Kylin đóng vai trò là tầng tăng tốc phân tích (Acceleration Layer), tính toán trước dữ liệu để phục vụ truy vấn OLAP tức thì (< 0.15s) cho người dùng cuối.


Kết luận

Đề tài khóa luận tốt nghiệp "Xây dựng công cụ thu thập, xử lý, phân tích và truy vấn động hỗ trợ dữ liệu lớn" của nhóm tác giả Quan Huỳnh Quang DươngNguyễn Tú Quyên đã giải quyết xuất sắc bài toán hiệu năng truy vấn trên dữ liệu lớn. Bằng cách kết hợp linh hoạt giữa kiến trúc lưu trữ hướng cột Apache Parquet, năng lực điều phối mạnh mẽ của Apache Airflow, khả năng tính toán phân tán của Spark, và đặc biệt là công nghệ tiền tính toán khối OLAP vượt trội của Apache Kylin 5.0, hệ thống đã chứng minh khả năng rút ngắn thời gian phản hồi truy vấn xuống dưới 0.15 giây trên tập dữ liệu hàng triệu dòng (nhanh hơn từ 130 đến gần 200 lần so với Hive và RDBMS).

Giải pháp không chỉ mang giá trị học thuật cao trong việc hiện thực hóa các lý thuyết xử lý dữ liệu đa chiều hiện đại mà còn mang tính ứng dụng thực tiễn to lớn, mở ra hướng tiếp cận tối ưu chi phí và nâng cao năng lực ra quyết định dựa trên dữ liệu cho các doanh nghiệp trong kỷ nguyên số.