Clone Repository Apache Druid từ GitHub
Bước đầu tiên là tải mã nguồn của Apache Druid về máy chủ Ubuntu 24.04. Chúng ta cần xác định chính xác tag phiên bản mới nhất để đảm bảo tính ổn định và tương thích với Java 17 đã cài đặt ở phần trước.
Việc clone từ tag cụ thể (release) thay vì nhánh master (main) giúp tránh các lỗi phát sinh từ code đang trong quá trình phát triển chưa ổn định.
Trước tiên, hãy di chuyển đến thư mục làm việc của dự án và thực hiện lệnh clone.
cd /opt/druid-build && git clone --depth 1 --branch 32.0.0 https://github.com/apache/druid.git
Kết quả mong đợi: Thư mục "druid" được tạo ra trong /opt/druid-build, chứa toàn bộ mã nguồn của phiên bản 32.0.0.
Xác nhận phiên bản đã clone
Để đảm bảo phiên bản chính xác, hãy kiểm tra tag hiện tại của repository.
cd /opt/druid-build/druid && git describe --tags
Kết quả mong đợi: Đầu ra hiển thị "32.0.0" hoặc tag tương ứng với phiên bản bạn vừa clone.
Cấu hình Profile Maven cho Môi trường Sản xuất
Apache Druid sử dụng Apache Maven để quản lý build. Để build cho môi trường sản xuất (Production), chúng ta cần kích hoạt các profile cụ thể để loại bỏ các tính năng phát triển (debug, test) và tối ưu hóa hiệu năng runtime.
Cần cấu hình file settings.xml của Maven để chỉ định profile production mặc định, hoặc truyền tham số trực tiếp trong lệnh build.
Tạo file cấu hình Maven settings.xml
Tạo file cấu hình để chỉ định Maven sử dụng profile "production" khi build Druid. Điều này giúp giảm kích thước artifact và loại bỏ các thư viện không cần thiết cho runtime.
Đường dẫn file: /root/.m2/settings.xml (hoặc ~/.m2/settings.xml).
druid-production
true
production
17
17
17
Kết quả mong đợi: File settings.xml được tạo thành công, Maven sẽ tự động kích hoạt profile production cho mọi build sau này.
Thiết lập biến môi trường cho build
Để đảm bảo quá trình build sử dụng đúng JDK 17 và Maven đã cài đặt, hãy thiết lập biến môi trường trước khi chạy lệnh build.
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export MAVEN_OPTS="-Xmx4g -XX:MaxMetaspaceSize=512m"
export DRUID_HOME=/opt/druid-build/druid
Kết quả mong đợi: Các biến môi trường được xuất ra, giúp quá trình biên dịch không bị thiếu dependency hay lỗi phiên bản Java.
Chạy lệnh Build và Đóng gói Druid
Bây giờ chúng ta sẽ thực thi lệnh build để biên dịch toàn bộ mã nguồn thành các file JAR và đóng gói thành các phân phối (distribution) cho từng thành phần của cluster.
Lệnh mvn package với profile production sẽ thực hiện các bước: compile, test (bỏ qua để tiết kiệm thời gian nếu cần), package và tạo các file tar.gz cho các dịch vụ như Coordinator, Broker, Historical, và Indexer.
Thực thi lệnh Build
Chạy lệnh Maven để build toàn bộ dự án. Chúng ta sử dụng cờ -DskipTests để bỏ qua các bài kiểm tra đơn vị (unit tests) nhằm rút ngắn thời gian build, vì mục đích chính là lấy binary cho production.
cd /opt/druid-build/druid && mvn clean package -P production -DskipTests -Dmaven.javadoc.skip=true
Kết quả mong đợi: Quá trình build hoàn tất với thông báo "BUILD SUCCESS". Thời gian build có thể kéo dài từ 15-45 phút tùy thuộc vào cấu hình phần cứng của server.
Trích xuất các gói phân phối (Distributions)
Sau khi build thành công, các file đóng gói (.tar.gz) cho từng service sẽ nằm trong thư mục distribution của các module con. Chúng ta cần di chuyển chúng về một thư mục chung để dễ dàng triển khai.
Tạo thư mục đích và di chuyển các file tar.gz quan trọng.
mkdir -p /opt/druid-distributions
cd /opt/druid-build/druid
find . -name "druid-*-distribution-*.tar.gz" -exec cp {} /opt/druid-distributions/ \;
Kết quả mong đợi: Thư mục /opt/druid-distributions chứa các file như druid-coordinator-distribution-*.tar.gz, druid-broker-distribution-*.tar.gz, druid-historical-distribution-*.tar.gz, và druid-indexer-distribution-*.tar.gz.
Verify Kết quả Build
Để đảm bảo quá trình build thành công và các gói file có thể triển khai được, hãy thực hiện các bước kiểm tra sau.
Kiểm tra danh sách file đã đóng gói
List các file trong thư mục distributions để xác nhận đủ các thành phần cần thiết.
ls -lh /opt/druid-distributions/*.tar.gz
Kết quả mong đợi: Hiển thị danh sách các file .tar.gz với kích thước hợp lý (thường từ 50MB đến 200MB cho mỗi service).
Kiểm tra nội dung một gói phân phối
Giải nén thử nghiệm một gói (ví dụ: Coordinator) vào thư mục tạm để kiểm tra cấu trúc thư mục và sự hiện diện của file bin/start.sh.
cd /tmp
tar -xzf /opt/druid-distributions/druid-coordinator-distribution-*.tar.gz
ls -R /tmp/druid-coordinator-distribution-*
Kết quả mong đợi: Cấu trúc thư mục bao gồm các thư mục bin, conf, lib. File bin/start.sh phải tồn tại và có quyền thực thi.
Chạy kiểm tra nhanh (Smoke Test)
Thực thi lệnh version của một trong các service để đảm bảo JAR file đã được biên dịch đúng và có thể chạy trên môi trường Java 17.
cd /tmp/druid-coordinator-distribution-*
bin/druid-coordinator --version
Kết quả mong đợi: Đầu ra hiển thị phiên bản Apache Druid (ví dụ: "Apache Druid 32.0.0") và thông tin về môi trường Java mà nó đang chạy.
Điều hướng series:
Mục lục: Series: Triển khai Database OLAP với Apache Druid trên Ubuntu 24.04
« Phần 2: Cài đặt Java 17 và Apache Maven trên Ubuntu 24.04
Phần 4: Cấu hình ZooKeeper và HDFS cho Druid Cluster »