Yêu cầu cấu hình phần cứng tối thiểu
Để đảm bảo hiệu năng ổn định cho mô hình HTAP (Hybrid Transactional/Analytical Processing) với Apache Flink và PostgreSQL, máy chủ cần đáp ứng các thông số tối thiểu sau.
CPU: Tối thiểu 4 nhân (vCore) để xử lý song song các job của Flink và truy vấn của PostgreSQL.
RAM: Tối thiểu 16GB. PostgreSQL cần bộ nhớ cho shared_buffers, trong khi Flink cần bộ nhớ cho TaskManager và JobManager.
Disk: Tối thiểu 100GB SSD. SSD là bắt buộc để giảm độ trễ I/O cho cả ghi transaction (OLTP) và quét dữ liệu lớn (OLAP).
Network: Băng thông 1Gbps trở lên để giảm độ trễ khi truyền dữ liệu giữa Flink và PostgreSQL.
Kiểm tra cấu hình hiện tại của máy chủ bằng lệnh sau để xác nhận đáp ứng yêu cầu.
cat /proc/cpuinfo | grep "model name" | head -1 && free -h && df -h /
Kết quả mong đợi: Hiển thị tên CPU, tổng RAM >= 16G, và dung lượng disk trống >= 100G trên hệ thống file /.
Cài đặt và cập nhật hệ điều hành Ubuntu 24.04 LTS
Đảm bảo hệ điều hành đang chạy là phiên bản mới nhất để tận dụng các kernel optimizations và bảo mật.
Cập nhật bảng gói phần mềm (package list) và nâng cấp toàn bộ hệ thống lên phiên bản mới nhất.
sudo apt update && sudo apt upgrade -y
Kết quả mong đợi: Không có lỗi, hệ thống báo "0 upgraded" hoặc liệt kê các gói đã được nâng cấp thành công.
Cài đặt các gói công cụ hệ thống cơ bản cần thiết cho việc compile, network và quản lý user.
sudo apt install -y build-essential curl wget git net-tools vim
Kiểm tra phiên bản hệ điều hành để xác nhận đang chạy Ubuntu 24.04.
cat /etc/os-release
Kết quả mong đợi: Dòng VERSION="24.04 LTS (Noble Numbat)" hoặc tương đương.
Cài đặt Java JDK 17 và cấu hình biến môi trường
Apache Flink yêu cầu Java Runtime Environment (JRE) hoặc JDK. Phiên bản 17 (LTS) là lựa chọn tối ưu cho Flink 1.17+ và PostgreSQL JDBC Driver hiện đại.
Cài đặt OpenJDK 17 từ repository mặc định của Ubuntu.
sudo apt install -y openjdk-17-jdk
Xác nhận vị trí cài đặt của JDK để cấu hình biến môi trường.
readlink -f $(which java)
Kết quả mong đợi: Đường dẫn dẫn đến thư mục jdk17, ví dụ: /usr/lib/jvm/java-17-openjdk-amd64/bin/java.
Tạo file cấu hình biến môi trường JAVA_HOME trong thư mục /etc/profile.d để áp dụng cho toàn hệ thống.
sudo nano /etc/profile.d/java.sh
Thêm nội dung chính xác sau vào file (thay thế đường dẫn nếu khác trên máy của bạn):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
Lưu file và đóng trình soạn thảo (Ctrl+O, Enter, Ctrl+X).
Áp dụng ngay các biến môi trường mà không cần logout.
source /etc/profile.d/java.sh
Kiểm tra biến môi trường và phiên bản Java.
echo $JAVA_HOME && java -version
Kết quả mong đợi: $JAVA_HOME hiển thị đường dẫn đúng, và java -version trả về "openjdk version "17.x.x"."
Cài đặt PostgreSQL 16 từ repository chính thức
Sử dụng repository chính thức của PostgreSQL để đảm bảo có phiên bản 16 mới nhất, thay vì phiên bản cũ trong repo mặc định của Ubuntu.
Thêm GPG key của PostgreSQL để xác thực gói phần mềm.
curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted-gpg.d/postgresql.gpg >/dev/null
Thêm repository PostgreSQL 16 vào danh sách nguồn.
echo "deb http://apt.postgresql.org/pub/repos/apt noble-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
Cập nhật lại danh sách gói phần mềm sau khi thêm repo mới.
sudo apt update
Cài đặt PostgreSQL 16 và các công cụ cần thiết.
sudo apt install -y postgresql-16 postgresql-contrib-16
Khởi động dịch vụ PostgreSQL và bật tự động khởi động khi máy lên.
sudo systemctl start postgresql && sudo systemctl enable postgresql
Kiểm tra trạng thái dịch vụ.
systemctl status postgresql
Kết quả mong đợi: Trạng thái "active (running)" và không có lỗi.
Chuyển sang user postgres để tạo user và database cho dự án HTAP.
sudo -u postgres psql
Tạo user và database với quyền đầy đủ cho việc tích hợp Flink.
CREATE USER flink_user WITH PASSWORD 'flink_secret_123';
CREATE DATABASE flink_htap OWNER flink_user;
GRANT ALL PRIVILEGES ON DATABASE flink_htap TO flink_user;
Thoát khỏi shell psql.
\q
Verify kết quả bằng cách kết nối lại với user mới tạo.
PGPASSWORD='flink_secret_123' psql -U flink_user -d flink_htap -c "SELECT current_database();"
Kết quả mong đợi: Trả về "flink_htap".
Cài đặt Apache Flink từ binary distribution
Cài đặt Flink bằng cách tải bản phân phối binary (pre-built) để đảm bảo tính tương thích và đơn giản hóa quy trình trên Ubuntu.
Tải phiên bản Flink ổn định nhất (ví dụ 1.19.0 hoặc 1.18.0) từ Apache mirror.
cd /opt && sudo wget https://dlcdn.apache.org/flink/flink-1.19.0/flink-1.19.0-bin-scala_2.12.tgz
Giải nén file archive vào thư mục /opt.
sudo tar -xzf flink-1.19.0-bin-scala_2.12.tgz
Đổi tên thư mục để dễ quản lý và tạo symlink (tùy chọn, nhưng tốt cho việc cấu hình path).
sudo mv flink-1.19.0-bin-scala_2.12 flink
Tạo thư mục logs và data cho Flink để tránh viết trực tiếp vào thư mục cài đặt.
sudo mkdir -p /opt/flink/logs /opt/flink/data
Cấu hình biến môi trường FLINK_HOME để các script trong Flink hoạt động chính xác.
sudo nano /etc/profile.d/flink.sh
Thêm nội dung sau vào file:
export FLINK_HOME=/opt/flink
export PATH=$FLINK_HOME/bin:$PATH
Lưu file và áp dụng biến môi trường ngay lập tức.
source /etc/profile.d/flink.sh
Kiểm tra xem lệnh flink đã được nhận diện chưa.
flink version
Kết quả mong đợi: Hiển thị thông tin phiên bản Apache Flink 1.19.0.
Kiểm tra quyền truy cập vào thư mục Flink để đảm bảo user hiện tại có thể chạy JobManager.
ls -ld /opt/flink
Kết quả mong đợi: User hiện tại có quyền đọc/thực thi (rwx) trên thư mục /opt/flink.
Điều hướng series:
Mục lục: Series: Triển khai Database HTAP với Apache Flink và PostgreSQL trên Ubuntu 24.04
Phần 2: Cấu hình PostgreSQL để tối ưu hóa cho mô hình HTAP »