Bối cảnh và vấn đề nghiên cứu
Trong kỷ nguyên dữ liệu lớn (Big Data), khối lượng dữ liệu phát sinh ngày càng tăng nhanh cùng cấu trúc phức tạp đã đặt ra bài toán khó cho hạ tầng quản trị truyền thống. Theo phân tích của nhóm tác giả Quản Huỳnh Quang Dương và Nguyễn Tú Quyên trong khóa luận tốt nghiệp ngành Hệ thống Thông tin (Trường Đại học Công nghệ Thông tin – ĐHQG-HCM, 2024), các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) không còn đáp ứng tốt các yêu cầu lưu trữ và xử lý quy mô lớn do giới hạn mở rộng. Khi lượng bản ghi tăng vọt, hiệu suất truy vấn trên RDBMS suy giảm rõ rệt, thời gian phản hồi kéo dài, trong khi chi phí phần cứng và vận hành tăng theo cấp số nhân. Đồng thời, các hệ thống RDBMS truyền thống không hỗ trợ trực tiếp các thao tác phân tích nâng cao thông qua SQL chuẩn mà đòi hỏi phải lập trình mã hóa bổ sung từ bên ngoài.
Bên cạnh đó, việc áp dụng các kỹ thuật xử lý phân tích trực tuyến (OLAP) truyền thống trên nền tảng dữ liệu lớn cũng đối mặt với nhiều rào cản kỹ thuật. Tác giả dẫn chứng ba câu hỏi cốt lõi đặt ra đối với khối dữ liệu (Cube): phương pháp cập nhật khối dữ liệu khi có bản ghi mới, lựa chọn kế hoạch bảo trì định kỳ và chiến lược xây dựng khối dữ liệu tối ưu nhằm tránh hiện tượng bùng nổ chiều dữ liệu (Curse of Dimensionality). Kích thước khối dữ liệu quá lớn dẫn đến thời gian tổng hợp kéo dài và làm giảm hiệu năng trải nghiệm của người dùng cuối.
Nhằm giải quyết các bất cập trên, nghiên cứu đặt ra các mục tiêu và nhiệm vụ cụ thể:
- Xác định và tích hợp các công nghệ mã nguồn mở hiện đại trong hệ sinh thái dữ liệu lớn để thiết kế một công cụ toàn diện có khả năng thu thập dữ liệu đa nguồn, lưu trữ phân tán, xử lý và truy vấn động.
- Ứng dụng công nghệ OLAP (trọng tâm là Apache Kylin) kết hợp nền tảng Business Intelligence (BI - Apache Superset) nhằm duy trì tốc độ phản hồi truy vấn ở mức dưới một giây (sub-second) trên các tập dữ liệu có quy mô hàng triệu đến hàng tỷ dòng.
- Hiện thực hóa đường ống nạp dữ liệu động (dynamic ingestion pipeline), cho phép thu thập dữ liệu theo lô từ các hệ cơ sở dữ liệu khác nhau và tiếp nhận các tệp dữ liệu phẳng (flat file) để cập nhật tức thời vào kho dữ liệu.
Đối tượng nghiên cứu của đề tài là các tổ chức và doanh nghiệp quy mô vừa và lớn đang tìm kiếm giải pháp phân tích dữ liệu lớn với chi phí tối ưu. Phạm vi nghiên cứu tập trung vào việc thiết lập, đóng gói hệ thống trên môi trường Docker, kiểm thử hiệu năng nạp dữ liệu và đối sánh thời gian phản hồi truy vấn giữa Apache Kylin với các engine truyền thống như Hive và SQL Server trên ba bộ dữ liệu thực nghiệm.
| Thách thức của kho dữ liệu truyền thống |
Phân tích thực trạng theo nghiên cứu [1] |
Hướng khắc phục của đề tài |
| Hiệu suất truy vấn và thời gian phản hồi |
Các giải pháp 64-bit, MPP hay cơ sở dữ liệu dạng cột đã được áp dụng nhưng hiệu suất vẫn là trở ngại lớn khi dữ liệu mở rộng. |
Kết hợp Apache Kylin và HBase để tính toán trước (pre-aggregation) và lập chỉ mục đa chiều. |
| Không hỗ trợ phân tích nâng cao |
RDBMS không hỗ trợ đầy đủ các hàm phân tích phức tạp bằng SQL, buộc phải xử lý thủ công bên ngoài. |
Tích hợp giao diện SQL chuẩn của Kylin và bộ công cụ trực quan hóa dữ liệu trực quan Apache Superset. |
| Chi phí phần cứng cao |
Chi phí nâng cấp thiết bị theo cấp số nhân để duy trì tốc độ cho lượng người dùng và độ phức tạp phân tích tăng dần. |
Triển khai các giải pháp mã nguồn mở phân tán (Hadoop, Spark, Hive) vận hành trên phần cứng tiêu chuẩn. |
| Khả năng mở rộng theo yêu cầu |
RDBMS thiếu khả năng mở rộng quy mô linh hoạt với chi phí và thời gian tối thiểu. |
Tận dụng kiến trúc phân tán của HDFS, YARN và khả năng co giãn theo từng node tính toán. |
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng trên nền tảng lý thuyết về Business Intelligence (BI) và Online Analytical Processing (OLAP). Theo định nghĩa được tác giả viện dẫn, BI bao gồm bốn thành phần chính: Nguồn dữ liệu (Data Sources), Kho dữ liệu (Data Warehouse), Phân tích dữ liệu (Data Analysis), Báo cáo và trực quan hóa (Reporting and Data Visualization). Về kỹ thuật OLAP, nghiên cứu tổng thuật lịch sử từ ngôn ngữ lập trình APL do Kenneth Iverson đề xuất năm 1962, sản phẩm thương mại Express năm 1975, đến các hệ thống hiện đại. Cấu trúc OLAP cube vận hành dựa trên các chiều (dimensions - đại diện cho góc nhìn như thời gian, địa lý, khách hàng) và chỉ số (measures - giá trị số học cần tính toán như doanh số, số lượng). Năm thao tác phân tích dữ liệu đa chiều được ứng dụng gồm:
- Roll-up: Tổng hợp dữ liệu lên các mức cao hơn trong hệ thống phân cấp.
- Drill-down: Mở rộng chi tiết từ mức tổng quát xuống mức sâu hơn.
- Slice: Cắt một lát dữ liệu theo một giá trị chiều cụ thể.
- Dice: Trích xuất khối dữ liệu nhỏ hơn dựa trên điều kiện của nhiều chiều.
- Pivot: Xoay đổi góc nhìn giữa các chiều phân tích.
Phương pháp nghiên cứu chủ đạo là phương pháp kỹ thuật hệ thống (System Engineering) kết hợp thực nghiệm đo lường hiệu năng (Benchmarking). Nhóm tác giả thiết kế pipeline xử lý dữ liệu hoàn chỉnh, cấu hình các dịch vụ phân tán, sau đó tiến hành đo đạc thời gian nạp dữ liệu và thời gian thực thi của các câu truy vấn phức tạp trên nhiều cấu hình engine khác nhau.
Nguồn dữ liệu thực nghiệm được chia thành ba bộ dữ liệu với các đặc trưng kỹ thuật riêng biệt để kiểm tra tính linh hoạt và khả năng chịu tải của hệ thống:
| Tên bộ dữ liệu |
Cơ sở dữ liệu gốc |
Dung lượng |
Số lượng bảng |
Mục đích sử dụng |
| bike_sales |
PostgreSQL |
1,2 KB |
9 bảng |
Mô hình hóa quan hệ, xây dựng quy trình OLAP chuẩn |
| supermarket |
MongoDB |
1,1 KB |
1 collection |
Kiểm chứng khả năng thu thập dữ liệu NoSQL |
| brazil_ecommerce |
SQL Server |
3,1 GB |
2 bảng |
Kiểm định hiệu năng thu thập và tốc độ truy vấn lớn |
Thiết kế và triển khai hệ thống
Kiến trúc tổng thể và luồng luân chuyển dữ liệu
Hệ thống được thiết kế theo luồng kiến trúc phân lớp, kết nối khép kín từ khâu tiếp nhận dữ liệu đầu vào đến giao diện phân tích của người dùng cuối:
- Tầng thu thập dữ liệu (Ingestion Layer): Apache Airflow đóng vai trò điều phối luồng công việc (workflow). DAG
init_ingestion kích hoạt Spark Job thông qua SparkSubmitOperator để trích xuất dữ liệu song song qua kết nối JDBC từ PostgreSQL, MongoDB và SQL Server. Dữ liệu sau đó được chuyển đổi trực tiếp thành định dạng Apache Parquet (lưu trữ dạng cột - columnar storage) trên hệ thống tệp phân tán HDFS.
- Tầng bổ sung dữ liệu phẳng (Flat File Ingestion Layer): Nhóm xây dựng một API server bằng Flask (
da-tool-api). Khi người dùng gửi các tệp báo cáo dạng .txt hoặc .csv qua giao thức HTTP POST đến endpoint http://127.0.0.1:5000/upload, API sẽ tiếp nhận, chuyển đổi tệp thành định dạng Parquet và ghi trực tiếp vào đúng đường dẫn thư mục của bảng tương ứng trên HDFS.
- Tầng kho dữ liệu (Data Warehouse Layer): Apache Hive được triển khai trên nền HDFS, sử dụng Hive Metastore để quản lý metadata. Dữ liệu dạng Parquet được nạp vào các bảng Hive tương ứng.
- Tầng phân tích đa chiều (OLAP Engine Layer): Apache Kylin 5.0 kết nối với Hive DataSource để đồng bộ schema. Kylin sử dụng Spark Engine để thực hiện quá trình tính toán trước (pre-calculation) các khối dữ liệu đa chiều (cuboid) và lưu trữ dữ liệu khối trong Apache HBase. Kylin cung cấp cơ chế Pushdown Query (tự động chuyển tiếp truy vấn xuống Hive nếu khối dữ liệu chưa bao phủ) cùng các chiến lược tối ưu hóa như Dimension Index, Aggregate Index và Partitioning theo mốc thời gian.
- Tầng trực quan hóa (Visualization Layer): Apache Superset kết nối với Kylin qua giao tiếp JDBC/SQL, cho phép người dùng thiết kế các bảng điều khiển (dashboard) tương tác trực quan.
- Hạ tầng mạng và ảo hóa: Toàn bộ hệ thống được đóng gói thành các dịch vụ Docker độc lập quản lý qua Docker Compose, đồng thời ứng dụng mạng riêng ảo Tailscale (dựa trên WireGuard) để kết nối bảo mật giữa các máy trạm phát triển trên hệ điều hành Linux và Windows.
Yêu cầu tài nguyên phần cứng và phiên bản phần mềm
Để vận hành toàn bộ chuỗi dịch vụ phân tán trên môi trường Docker, nhóm tác giả đưa ra thông số kỹ thuật cấu hình hệ thống:
| Hạng mục |
Yêu cầu tối thiểu theo tài liệu |
| Hệ điều hành |
Linux (khuyến nghị cho độ ổn định cao), Windows |
| Bộ nhớ trong (RAM) |
Tối thiểu 16 GB |
| Vi xử lý (CPU) |
Tối thiểu 8 nhân |
| Dung lượng lưu trữ |
Tối thiểu 50 GB |
| Môi trường & Nền tảng |
Docker v26.0, Docker-compose v2.25, Python 3, JVM 8, Scala 2.12, SBT |
| Hệ sinh thái dịch vụ |
Hadoop 3.2.0 (HDFS, YARN), Spark, Hive, Kylin 5.0, HBase, Airflow, Superset |
Quy trình mô hình hóa OLAP trên Kylin
Nhóm tác giả chuẩn hóa quy trình thiết lập mô hình trên Apache Kylin qua các bước:
- Khởi tạo Project: Thiết lập không gian làm việc và đồng bộ metadata từ các bảng Hive (
orders, order_items, customers, stores, staffs, products, categories, brands).
- Xây dựng Model: Chọn bảng
orders làm Fact Table (bảng sự kiện chính), sau đó thiết lập mối quan hệ Join (Inner Join/Left Join) với các Dimension Tables (bảng chiều).
- Khai báo Dimensions và Measures: Lựa chọn các trường định danh và phân loại làm Dimension; cấu hình các hàm đo lường tổng hợp như
SUM, COUNT, AVG.
- Tạo Computed Column: Thiết lập các trường tính toán phái sinh nhằm tối ưu hóa tính toán nghiệp vụ trước khi đưa vào chỉ số đo lường.
- Cấu hình Aggregate Group và Lập chỉ mục: Nhóm các chiều dữ liệu thường xuyên xuất hiện cùng nhau trong các câu truy vấn để xây dựng Aggregate Index, đồng thời xây dựng Dimension Index để tăng tốc độ tìm kiếm. Quá trình Index Build được thực thi phân tán bằng Spark.
Nội dung chính theo từng chương
Chương 1: Giới thiệu
Chương này tập trung trình bày bối cảnh chuyển dịch từ kho dữ liệu truyền thống dựa trên RDBMS sang hệ sinh thái Big Data. Tác giả tổng hợp bảng thách thức cốt lõi của RDBMS (về hiệu suất truy vấn, chi phí phần cứng và việc thiếu cơ chế phân tích nâng cao), đồng thời phân tích các hạn chế của OLAP truyền thống khi quy mô dữ liệu mở rộng. Chương 1 nêu bật các nghiên cứu liên quan, tiêu biểu là nghiên cứu năm 2017 về kiến trúc Apache Kylin và các công trình đối sánh hiệu năng giữa Kylin, MySQL và Hive; từ đó chỉ ra tính ổn định của Kylin với thời gian phản hồi gần như không đổi khi dữ liệu vượt ngưỡng một triệu dòng. Bố cục tổng thể của khóa luận gồm 5 chương được công bố tại phần cuối chương.
Chương 2: Cơ sở lý thuyết
Nội dung chương cung cấp hệ thống lý thuyết về Business Intelligence và công nghệ OLAP, từ các khái niệm thành phần của BI đến cấu trúc và năm thao tác phân tích khối đa chiều (Roll-up, Drill-down, Slice, Dice, Pivot). Phần trọng tâm của chương dành để mô tả chi tiết các công nghệ thuộc hệ sinh thái dữ liệu lớn cấu thành nên giải pháp:
- Apache Kylin: Kiến trúc engine tính toán dựa trên Spark, cơ chế Pushdown Query, lưu trữ HBase, kỹ thuật tạo chỉ mục (Dimension/Aggregate Index) và phân vùng dữ liệu theo Segment.
- Apache Superset: Cơ chế trực quan hóa, khám phá dữ liệu (ESDA) và tích hợp SQL Lab.
- Apache Hadoop (HDFS, YARN): Quản lý lưu trữ phân tán và điều phối tài nguyên máy tính.
- Apache Spark & Apache Hive: Đóng vai trò engine tính toán phân tán trong bộ nhớ và kho dữ liệu nền tảng quản lý metadata.
- Apache Airflow & Apache HBase: Giải pháp điều phối luồng dữ liệu theo đồ thị không tuần hoàn (DAG) và cơ sở dữ liệu NoSQL lưu trữ các bảng chỉ số OLAP.
Chương 3: Thiết kế và triển khai hệ thống
Chương 3 trình bày toàn bộ quy trình kiến trúc và giải pháp kỹ thuật của hệ thống. Tác giả mô tả chi tiết ba bộ dữ liệu thực nghiệm kèm sơ đồ quan hệ thực thể (ERD) của từng cơ sở dữ liệu (bike_sales, supermarket, brazil_ecommerce). Phần thiết kế chức năng làm rõ hai quy trình thu thập dữ liệu bằng biểu đồ tuần tự (Sequence Diagram): quy trình tự động hóa qua Airflow - Spark Job để tạo bảng Parquet trên Hive và quy trình nạp dữ liệu phẳng qua Flask API. Nhóm tác giả cung cấp cấu hình dịch vụ trên Docker Compose, thông số cấu hình chạy DAG init_ingestion (như url, driver, destination, partition-table-map) và tuần tự các bước mô hình hóa khối OLAP trên giao diện Apache Kylin.
Chương 4: Kết quả và đánh giá
Chương 4 ghi nhận kết quả kiểm thử thực nghiệm trên hệ thống. Tác giả thực hiện đối sánh thời gian thực thi của 4 câu truy vấn phân tích tổng hợp phức tạp giữa Hive Engine và Apache Kylin, đồng thời đối sánh hiệu năng giữa Kylin, Hive và SQL Server trên bộ dữ liệu brazil_ecommerce. Kết quả nạp dữ liệu của Airflow và kết quả bổ sung dữ liệu động qua Flask API (minh chứng qua việc tăng số dòng bảng brands từ 9 lên 12 dòng) được kiểm tra trực tiếp qua CLI của Hive. Chương này cũng báo cáo các biểu đồ trực quan hóa xây dựng thành công trên Superset và phân tích lỗi phát sinh trong thực tế, đặc biệt là lỗi tràn bộ nhớ (Out of Memory) khi xử lý chỉ mục MIDX trên khối lượng dữ liệu cực lớn.
Chương 5: Kết luận và hướng phát triển
Chương cuối tóm tắt lại các mục tiêu đã đạt được: xây dựng thành công pipeline thu thập dữ liệu động, triển khai mô hình OLAP trên Kylin 5.0 kết hợp trực quan hóa BI với Superset, giúp hạ thấp thời gian truy vấn dữ liệu lớn về mức dưới một giây. Tác giả cũng chỉ ra các định hướng hoàn thiện hệ thống trong tương lai liên quan đến tối ưu hóa tài nguyên phần cứng và mở rộng các nguồn dữ liệu phân tích.
Kết quả và đóng góp
Khóa luận đạt được các kết quả thực nghiệm định lượng rõ ràng, được chứng minh qua dữ liệu chạy thực tế trên hệ thống:
- Hiệu năng thu thập và chuyển đổi dữ liệu: Hệ thống thực hiện thu thập thành công bộ dữ liệu
brazil_ecommerce từ SQL Server. Cụ thể, Airflow điều phối Spark Job hoàn tất nạp 3 triệu dòng (bảng orders) và 9 triệu dòng (bảng customers) với tổng thời gian thực thi là 4 phút 57 giây (00:04:57). Spark tự động phân chia dữ liệu và ghi mỗi 1 triệu dòng thành một tệp Parquet độc lập kèm metadata trên HDFS, tạo tiền đề tối ưu hóa cho Hive.
- Hiệu năng truy vấn phân tích: Trong các bài kiểm thử thực thi 4 câu truy vấn phân tích tổng hợp (chứa các phép toán
JOIN, GROUP BY, SUM, AVG), hệ thống tích hợp Apache Kylin cho tốc độ phản hồi vượt trội so với Hive Engine truyền thống. Trong khi Hive mất từ hàng chục giây đến hàng phút để xử lý các MapReduce/Tez tasks, Kylin trả về kết quả truy vấn ở mức dưới một giây (sub-second) nhờ các khối dữ liệu và chỉ số đã được tính toán sẵn trên HBase. Kết quả này tương đồng với các nghiên cứu đối sánh trước đây được nhóm trích dẫn, khẳng định ưu thế của Kylin khi kích thước dữ liệu vượt qua ngưỡng 1 triệu bản ghi.
- Khả năng cập nhật dữ liệu động linh hoạt: Thử nghiệm gửi tệp
Book1.txt qua Flask API (da-tool-api) ghi nhận hệ thống phản hồi mã trạng thái HTTP 200 trong vòng 300ms, chuyển đổi và lưu thành công tệp Book1.parquet tại đường dẫn /warehouse/bike_sales/brands/Book1.parquet. Truy vấn kiểm tra trên Hive xác nhận bảng brands được cập nhật chính xác từ 9 dòng lên 12 dòng mà không cần cấu hình lại hệ thống.
- Tích hợp báo cáo Business Intelligence: Triển khai kết nối thành công từ Apache Superset tới Kylin, thiết lập hai trang bảng điều khiển (Dashboard 1 và Dashboard 2) cho phép theo dõi trực quan các chỉ số kinh doanh theo thời gian thực mà không làm suy giảm hiệu năng của kho dữ liệu.
Đóng góp kỹ thuật chính mà nhóm tác giả tự nêu là việc thiết kế thành công một giải pháp tích hợp toàn diện, chuẩn hóa việc kết hợp các công nghệ mã nguồn mở phức tạp (Hadoop, Spark, Hive, Kylin, Airflow, Superset, Flask, Docker, Tailscale) thành một khối kiến trúc thống nhất, có khả năng xử lý linh hoạt cả dữ liệu có cấu trúc lẫn bán cấu trúc với chi phí bản quyền bằng không.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận chỉ rõ những khó khăn và hạn chế kỹ thuật phát sinh trong quá trình thiết kế và thực nghiệm:
- Yêu cầu tương thích phiên bản khắt khe: Việc tích hợp sâu giữa Kylin 5.0, Hive, Spark, HBase và Hadoop đòi hỏi sự tương thích tuyệt đối về phiên bản giữa các dịch vụ, dẫn đến việc thiết lập cấu hình ban đầu gặp nhiều phức tạp và dễ phát sinh lỗi xung đột thư viện.
- Tiêu tốn tài nguyên hệ thống và sự cố bộ nhớ: Hệ thống yêu cầu phần cứng lớn để vận hành ổn định (tối thiểu 16 GB RAM và 8 CPU cores). Trong quá trình xây dựng khối dữ liệu trên tập dữ liệu cực lớn, hệ thống đã gặp lỗi tràn bộ nhớ (Out of Memory - OOM) khi thực hiện tác vụ xây dựng chỉ mục MIDX.
- Sự phụ thuộc vào nguồn dữ liệu trung gian: Phiên bản Kylin 5.0 phụ thuộc chặt chẽ vào Hive làm nguồn cấp dữ liệu (DataSource) chính, chưa hỗ trợ trực tiếp các nguồn dữ liệu phân tán khác mà không thông qua kho lưu trữ của Hive.
Về hướng phát triển tiếp theo, nhóm tác giả định hướng:
- Tinh chỉnh và tối ưu hóa việc phân bổ tài nguyên cho Spark Engine và HBase nhằm giải quyết triệt để lỗi Out of Memory khi xây dựng khối dữ liệu siêu lớn.
- Mở rộng cơ chế thu thập dữ liệu thời gian thực (Streaming Ingestion) bên cạnh cơ chế xử lý theo lô (Batch Processing) hiện tại.
- Tự động hóa quá trình đề xuất các Aggregate Group và cấu hình chỉ mục dựa trên lịch sử tần suất truy vấn thực tế của người dùng.
Giá trị tham khảo
Báo cáo khóa luận là tài liệu tham khảo hữu ích cho sinh viên, học viên chuyên ngành Hệ thống Thông tin, Kỹ thuật Dữ liệu (Data Engineering) và Công nghệ Thông tin đang nghiên cứu về kiến trúc dữ liệu lớn và các giải pháp Business Intelligence hiện đại.
Các nội dung có giá trị tham khảo ứng dụng cao bao gồm:
- Cấu hình Docker Compose đa dịch vụ Big Data: Hướng dẫn đóng gói và liên kết các container Hadoop, Spark, Hive, Kylin, Airflow và Superset trên cùng một mạng ảo (
da-tool-v2), giải quyết rào cản tương thích môi trường giữa Linux và Windows.
- Mẫu thiết kế Airflow DAG nạp dữ liệu phân tán: Đoạn mã nguồn cấu hình DAG
init_ingestion sử dụng SparkSubmitOperator để đọc dữ liệu từ JDBC và ghi ra định dạng Parquet theo phân vùng.
- Quy trình triển khai mô hình OLAP trên Apache Kylin 5.0: Các bước chi tiết từ khai báo Fact Table, Dimension Tables, Computed Columns cho đến thiết lập Aggregate Group nhằm tối ưu dung lượng lưu trữ khối dữ liệu.
Câu hỏi thường gặp
1. Hệ thống xử lý việc nạp dữ liệu quy mô hàng triệu dòng từ các hệ cơ sở dữ liệu nguồn như thế nào?
Hệ thống sử dụng Apache Airflow để điều phối một Spark Job độc lập. Spark trích xuất dữ liệu song song qua kết nối JDBC, phân mảnh dữ liệu thành các tệp Parquet (mỗi tệp chứa khoảng 1 triệu dòng) và lưu trữ trực tiếp lên HDFS. Thử nghiệm trên 9 triệu dòng của bảng customers và 3 triệu dòng của bảng orders cho thấy toàn bộ quá trình hoàn tất trong thời gian 4 phút 57 giây.
2. Làm thế nào để bổ sung nhanh dữ liệu từ các tệp phẳng (csv/txt) mà không cần chạy lại toàn bộ pipeline trích xuất?
Người dùng gửi tệp qua giao thức HTTP POST đến dịch vụ Flask API (da-tool-api) tại địa chỉ http://127.0.0.1:5000/upload. API sẽ tiếp nhận tệp, chuyển đổi sang định dạng Parquet và lưu trực tiếp vào thư mục tương ứng của bảng trên HDFS. Hive và Kylin sau đó có thể đọc ngay dữ liệu mới, minh chứng qua việc cập nhật bảng brands từ 9 dòng lên 12 dòng sau khi nạp tệp Book1.txt.
3. Tại sao hệ thống lại kết hợp cả Hive, Spark và HBase cùng với Apache Kylin?
Trong kiến trúc của Kylin 5.0, Hive đóng vai trò làm kho dữ liệu trung tâm cung cấp metadata và cấu trúc nguồn. Spark Engine được Kylin huy động làm công cụ tính toán phân tán tốc độ cao để xây dựng các khối dữ liệu (cube) và chỉ số. Sau khi tính toán xong, các khối dữ liệu được lưu trữ phân tán trên cơ sở dữ liệu NoSQL HBase nhằm cho phép truy xuất ngẫu nhiên với độ trễ thấp ở cấp độ mili giây.
4. Lỗi kỹ thuật nào nghiêm trọng nhất đã được ghi nhận trong quá trình thực nghiệm khối dữ liệu lớn?
Hệ thống đã gặp lỗi tràn bộ nhớ (Out of Memory - OOM) trong quá trình thực hiện xây dựng chỉ mục MIDX trên Apache Kylin khi thử nghiệm với tập dữ liệu cực lớn. Nguyên nhân xuất phát từ việc giới hạn tài nguyên cấp phát cho container tính toán trong môi trường Docker chưa đáp ứng đủ lượng dữ liệu bùng nổ trong bước tổng hợp đa chiều.
Kết luận
Khóa luận tốt nghiệp của sinh viên Quản Huỳnh Quang Dương và Nguyễn Tú Quyên đã thiết kế và triển khai thành công hệ thống thu thập, xử lý, phân tích và truy vấn động trên nền tảng dữ liệu lớn tích hợp OLAP và BI. Bằng việc kết hợp các công nghệ mã nguồn mở gồm Hadoop, Spark, Hive, Kylin và Superset trên môi trường ảo hóa Docker, công trình chứng minh khả năng duy trì tốc độ phản hồi truy vấn dưới một giây trên các tập dữ liệu quy mô hàng triệu bản ghi. Mặc dù còn hạn chế về yêu cầu phần cứng cao và nguy cơ tràn bộ nhớ khi tính toán khối dữ liệu siêu lớn, hệ thống đã cung cấp một kiến trúc tham khảo hoàn chỉnh, đáp ứng tốt nhu cầu khai thác dữ liệu và hỗ trợ ra quyết định kinh doanh cho doanh nghiệp.