1. Tải và giải nén binary Apache Pinot
Tải về gói binary ổn định
Chúng ta cần tải phiên bản Apache Pinot mới nhất (hoặc phiên bản tương thích với Zookeeper/Kafka đã cài ở Phần 2). Giả sử môi trường đang chạy Ubuntu 24.04 với kiến trúc x86_64.
Truy cập thư mục làm việc và tải file tar.gz về. Thay thế 1.3.0 bằng phiên bản cụ thể nếu cần, nhưng đây là phiên bản ổn định hiện tại.
cd /opt
wget https://dlcdn.apache.org/pinot/1.3.0/apache-pinot-1.3.0-bin.tar.gz
Kết quả mong đợi: File apache-pinot-1.3.0-bin.tar.gz xuất hiện trong thư mục /opt, kích thước khoảng 1.5GB.
Giải nén và tạo thư mục cấu hình
Giải nén file vừa tải về và đổi tên thư mục để quản lý gọn gàng. Đồng thời tạo thư mục log và config riêng để tách biệt với code nguồn.
tar -xvf apache-pinot-1.3.0-bin.tar.gz
mv apache-pinot-1.3.0 apache-pinot
mkdir -p /opt/apache-pinot/logs
mkdir -p /opt/apache-pinot/config
Kết quả mong đợi: Thư mục /opt/apache-pinot chứa các thư mục bin, conf, logs, config.
2. Cấu hình Apache Pinot Controller
Thiết lập file pinot-controller.properties
Controller là bộ não của cụm Pinot, chịu trách nhiệm quản lý metadata và phân phối dữ liệu. Nó cần kết nối chặt chẽ với Zookeeper để đồng bộ trạng thái. Chúng ta sẽ tạo file cấu hình riêng biệt để dễ quản lý, thay vì sửa file mặc định trong thư mục conf.
Tạo file /opt/apache-pinot/config/pinot-controller.properties với nội dung dưới đây. Lưu ý đường dẫn zookeeperConnectString phải khớp với IP và port của Zookeeper đã cài đặt ở Phần 2.
cat > /opt/apache-pinot/config/pinot-controller.properties
Kết quả mong đợi: File cấu hình được tạo thành công, không báo lỗi cú pháp shell.
Kiểm tra cấu hình trước khi khởi động
Đảm bảo quyền truy cập và kiểm tra nội dung file để chắc chắn các tham số đã đúng.
chmod 644 /opt/apache-pinot/config/pinot-controller.properties
cat /opt/apache-pinot/config/pinot-controller.properties
Kết quả mong đợi: Nội dung file hiển thị đúng các thông số đã cấu hình, đặc biệt là zookeeper.connectString.
3. Cấu hình Apache Pinot Server
Thiết lập file pinot-server.properties
Server là nơi lưu trữ dữ liệu thực tế và thực hiện các truy vấn. Server cần được cấu hình tối ưu về bộ nhớ (RAM) và số lượng luồng (thread pool) để xử lý lượng lớn dữ liệu và truy vấn song song.
Tạo file /opt/apache-pinot/config/pinot-server.properties. Chúng ta sẽ cấu hình giới hạn bộ nhớ heap, kích thước cache, và số lượng luồng thực thi truy vấn.
cat > /opt/apache-pinot/config/pinot-server.properties
Kết quả mong đợi: File cấu hình Server được tạo thành công với các tham số tối ưu hóa bộ nhớ và thread.
Đảm bảo quyền hạn cho thư mục logs và data
Pinot cần ghi log và lưu dữ liệu vào disk. Cần đảm bảo user hiện tại có quyền ghi vào các thư mục này.
mkdir -p /opt/apache-pinot/logs
mkdir -p /opt/apache-pinot/data
chmod -R 755 /opt/apache-pinot/logs
chmod -R 755 /opt/apache-pinot/data
Kết quả mong đợi: Các thư mục logs và data được tạo với quyền đọc/ghi phù hợp.
4. Khởi động Controller và Server
Khởi động Pinot Controller
Sử dụng script start-controller.sh có sẵn trong thư mục bin. Chúng ta sẽ chỉ định file properties đã tạo ở bước 2 thông qua tham số -Dconfig.file.
Chạy lệnh dưới đây từ thư mục /opt/apache-pinot/bin.
cd /opt/apache-pinot/bin
./start-controller.sh -Dconfig.file=/opt/apache-pinot/config/pinot-controller.properties
Kết quả mong đợi: Xuất hiện thông báo Controller started successfully hoặc Controller is running. Nếu chạy mode daemon, lệnh sẽ trả về prompt ngay lập tức.
Khởi động Pinot Server
Tương tự, sử dụng script start-server.sh và chỉ định file properties của Server.
./start-server.sh -Dconfig.file=/opt/apache-pinot/config/pinot-server.properties
Kết quả mong đợi: Xuất hiện thông báo Server started successfully. Server sẽ bắt đầu đăng ký với Controller và Zookeeper.
5. Kiểm tra và Verify kết quả
Kiểm tra tiến trình đang chạy
Sử dụng lệnh ps hoặc jps để xác nhận cả Controller và Server đều đang hoạt động dưới dạng tiến trình Java.
ps aux | grep -i "pinot" | grep -v grep
Kết quả mong đợi: Danh sách tiến trình hiển thị 2 dòng chính: một dòng chứa Controller và một dòng chứa Server, cả hai đều có trạng thái S (sleeping/running) và thời gian chạy (TIME) tăng dần.
Kiểm tra Log khởi động
Xem log để đảm bảo không có lỗi Exception hoặc Connection refused khi kết nối Zookeeper.
tail -n 50 /opt/apache-pinot/logs/pinot-controller.log
tail -n 50 /opt/apache-pinot/logs/pinot-server.log
Kết quả mong đợi: Log hiển thị INFO về việc Connected to Zookeeper, Registered with Controller, và Server is ready to accept requests.
Kiểm tra Port lắng nghe
Đảm bảo các port mặc định (9000 cho Controller, 9001 cho Server) đang lắng nghe (LISTEN).
netstat -tlnp | grep -E "9000|9001"
Kết quả mong đợi:
- Port 9000 đang được tiến trình Controller lắng nghe.
- Port 9001 đang được tiến trình Server lắng nghe.
Kiểm tra giao diện web (nếu có)
Mặc dù phần Broker chưa được cấu hình ở Phần 4, nhưng Controller thường có một API đơn giản hoặc dashboard cơ bản. Thử truy cập bằng curl để kiểm tra sức khỏe.
curl -s http://127.0.0.1:9000/cluster
Kết quả mong đợi: Trả về một đoạn JSON chứa thông tin về clusterName và trạng thái status là OK hoặc READY.
Điều hướng series:
Mục lục: Series: Triển khai Database ACID với Apache Pinot trên Ubuntu 24.04
« Phần 2: Cài đặt các thành phần phụ thuộc: Java, Zookeeper và Kafka
Phần 4: Cấu hình Pinot Broker và thiết lập giao diện quản trị »