Bỏ qua để đến nội dung

Cloudera Data Warehouse: Trino, Impala, Hive & Virtual Warehouse

Một kho dữ liệu phục vụ tốt khi ít người dùng không nói lên điều gì. Phép thử thật đến vào những thời điểm cụ thể: sáng đầu tuần cả công ty mở dashboard, ngày chốt quý phòng tài chính chạy báo cáo nặng, và đúng lúc đó đội rủi ro cũng quét vài tỉ dòng. Nếu tất cả cùng tranh nhau một khối tài nguyên, người chạy truy vấn nhỏ phải xếp hàng sau người chạy truy vấn lớn — và cả tổ chức học được thói quen “chờ hệ thống”.

Cloudera Data Warehouse giải hai bài toán cùng lúc: phân tích khối dữ liệu rất lớn, và phục vụ hàng nghìn người dùng truy vấn đồng thời mà không ai giành tài nguyên của ai. Tất cả chạy trên chính bảng Apache Iceberg của lakehouse — không cần sao chép dữ liệu sang một kho riêng.

Điểm ít được nói tới, và là điều làm nên sức mạnh của dịch vụ này: bên dưới nó không phải một engine SQL duy nhất, mà là ba engine mã nguồn mở, mỗi engine mạnh ở một loại việc khác nhau — Trino, Apache Impala và Apache Hive. Hiểu chúng là hiểu vì sao cùng một kho có thể vừa trả lời một dashboard trong vài giây, vừa chạy một pipeline ETL quét hàng tỉ dòng, mà không phải chọn một trong hai.

Trước khi đi vào chi tiết, đây là chỗ đứng của Data Warehouse trong toàn cảnh Open Data Lakehouse. Dữ liệu vào từ mọi nguồn ở bên trái, được biến đổi và quản trị ở giữa, rồi khai thác bằng BI, phân tích và AI ở bên phải — tất cả đặt trên một nền chung: lớp quản trị SDX và định dạng bảng mở Apache Iceberg.

Kiến trúc Cloudera Data Warehouse trong Open Data Lakehouse

Trang này tập trung vào khối ở giữa — Data Warehouse — nhưng điểm cần giữ trong đầu là nó không đứng một mình: nó đọc chung dữ liệu với Data Engineering và Cloudera AI, và chịu chung lớp quản trị SDX với tất cả.

Đây là nơi trả lời các câu hỏi phân tích trên dữ liệu đã được chuẩn hóa: doanh thu theo chi nhánh, hành vi khách hàng theo thời gian, tỷ lệ rủi ro theo danh mục. Đặc trưng của loại truy vấn này là quét và tổng hợp khối lượng lớn — hàng trăm triệu đến hàng tỉ dòng cho một câu hỏi — bằng SQL (Structured Query Language).

Ba nhóm người dùng, ba kiểu tải rất khác nhau, cùng tồn tại trên một nền:

Nhóm người dùngKiểu truy vấnKỳ vọng
Lãnh đạo và người dùng nghiệp vụMở dashboard đã dựng sẵnVài giây, và luôn phải mở được
Nhà phân tíchTruy vấn khám phá, viết tại chỗ, khó đoán trướcTrả lời đủ nhanh để giữ được mạch suy nghĩ
Đội rủi ro, đội mô hìnhQuét khối lớn, chạy lâuChạy xong, và không làm ai khác chậm

Cloudera Data Warehouse không ép mọi loại truy vấn qua một engine duy nhất. Theo Cloudera công bố, dịch vụ này dùng ba engine SQL dẫn đầu trong hệ mã nguồn mở, mỗi engine đặt đúng chỗ nó mạnh nhất:

EngineMạnh ở việcĐặc điểm
TrinoTruy vấn liên hợp (federated query)Chạy một câu SQL trải trên nhiều nguồn dữ liệu khác nhau, gộp và phân tích mà không phải di chuyển dữ liệu trước
Apache ImpalaPhân tích tương tác, độ trễ thấpTối ưu cho hỗ trợ quyết định và BI (Business Intelligence): truy vấn nhanh, tối ưu hóa sẵn có, kiến trúc co giãn — hợp với dashboard và phân tích thời gian thực trên tập lớn
Apache HivePipeline ETL, xử lý lôBiến đổi và chuẩn bị khối lượng lớn dữ liệu có cấu trúc; mạnh ở truy vấn phức tạp trên tập rất lớn, hợp với job theo lịch, khối lượng cao

Cách chọn không phải chuyện sở thích mà là chuyện đặc tính tải:

  • Câu hỏi tương tác, người đang chờ trước màn hình — dashboard, phân tích khám phá — nghiêng về Impala. Điều quan trọng ở đây là độ trễ ổn định, kể cả ở phân vị cao.
  • Job biến đổi nặng, chạy theo lịch, chấp nhận chờ — dựng bảng tổng hợp ban đêm, chuẩn bị dữ liệu — nghiêng về Hive. Điều quan trọng là thông lượng, không phải độ trễ từng câu.
  • Câu hỏi cần gộp dữ liệu đang nằm rải rác ở nhiều hệ thống — nghiêng về Trino. Xem mục dưới.

Trino và truy vấn liên hợp: với tới dữ liệu chưa kịp đưa vào

Phần tiêu đề “Trino và truy vấn liên hợp: với tới dữ liệu chưa kịp đưa vào”

Trino đáng được nói riêng, vì nó trả lời một tình huống rất thật mà thông điệp “một bản dữ liệu trên lakehouse” chưa chạm tới: dữ liệu chưa nằm hết trên lakehouse.

Trong mọi tổ chức lớn, việc đưa dữ liệu về một chỗ là một hành trình dài, không phải một trạng thái có sẵn. Trong lúc hành trình đó đang diễn ra, vẫn có những câu hỏi cần gộp dữ liệu từ một hệ thống đã ở trên lakehouse với một hệ thống còn nằm ngoài. Theo Cloudera công bố, Trino chạy truy vấn liên hợp xuyên nhiều nguồn dữ liệu tách rời trong một câu SQL duy nhất — nhà phân tích và nhà khoa học dữ liệu làm việc với nhiều nguồn khác nhau mà không cần di chuyển dữ liệu hay dựng một quy trình tích hợp phức tạp trước.

Cách đóng khung cho đúng, tránh hiểu nhầm: federation không phải một cách thay thế cho việc hợp nhất dữ liệu về lakehouse. Bản dữ liệu đã hợp nhất trên Iceberg vẫn là đích đến — vì nó nhất quán, được quản trị và không lệch số. Trino là cây cầu bắc qua giai đoạn chuyển tiếp, và là công cụ với tới những nguồn mà việc đưa vào lakehouse chưa đáng làm hoặc chưa tới lượt. Có cây cầu đó, bạn không phải chờ hợp nhất xong mới trả lời được một câu hỏi liên hệ thống.

Nghìn người dùng đồng thời, không giành tài nguyên

Phần tiêu đề “Nghìn người dùng đồng thời, không giành tài nguyên”

Cách xử lý của Cloudera Data Warehouse là tách khối lượng công việc ra các cụm tính toán độc lập — gọi là Virtual Warehouse. Mỗi đội, hoặc mỗi loại tải, chạy trên cụm riêng của mình. Các cụm cùng đọc một bản dữ liệu trên lakehouse, nhưng không dùng chung tài nguyên tính toán.

Hệ quả rất trực tiếp: truy vấn quét vài tỉ dòng của đội rủi ro chạy trên cụm C không làm dashboard của giám đốc kinh doanh trên cụm B quay vòng. Không cần điều phối bằng nội quy nội bộ kiểu “đừng chạy báo cáo nặng trong giờ hành chính”.

flowchart TB
  U1["Đội tài chính<br/>báo cáo cuối kỳ"] --> VW1["Virtual Warehouse A<br/>Apache Impala"]
  U2["Đội kinh doanh<br/>dashboard tự phục vụ"] --> VW2["Virtual Warehouse B<br/>Apache Impala"]
  U3["Đội kỹ thuật dữ liệu<br/>ETL · xử lý lô"] --> VW3["Virtual Warehouse C<br/>Apache Hive"]
  U4["Nhà phân tích<br/>gộp nhiều nguồn"] --> VW4["Virtual Warehouse D<br/>Trino — truy vấn liên hợp"]
  BI["Tableau · Power BI · Data Visualization"] -.-> VW2
  VW1 --> ICE["Một bản dữ liệu dùng chung<br/>bảng Apache Iceberg"]
  VW2 --> ICE
  VW3 --> ICE
  VW4 --> ICE
  SDX["SDX · chính sách đặt một lần"] -.-> ICE

Đây cũng là nơi việc chọn engine ở mục trên trở thành một quyết định cụ thể: mỗi Virtual Warehouse gắn với engine phù hợp với tải của nó — cụm dashboard dùng Impala, cụm ETL dùng Hive, cụm gộp nguồn dùng Trino — tất cả trên cùng một bảng.

WAAS: co giãn theo tải, không cần trực tay

Phần tiêu đề “WAAS: co giãn theo tải, không cần trực tay”

Trong từng cụm, hệ thống tự co giãn theo nhu cầu. Theo Cloudera công bố, cơ chế này có tên WAAS (Workload Aware Auto-Scaling — tự co giãn theo nhận biết khối lượng công việc): tài nguyên được cấp phát động dựa trên nhu cầu tải hỗn hợp thật, giữ hiệu năng ổn định mà không cần can thiệp thủ công. Khi hàng đợi truy vấn tăng thì mở rộng, khi vắng thì thu về.

Đi kèm là auto-provisioning (tự cấp phát) và tự phục vụ quản lý khối lượng công việc — người dùng tự quản và tự ưu tiên tải hỗn hợp của mình một cách độc lập. Đội quản trị đặt chính sách một lần, thay vì trực để can thiệp mỗi kỳ cao điểm.

Không có công thức chung, nhưng có một cách bố trí thường dùng làm điểm khởi đầu — và giờ có thêm một cột: engine đi kèm.

Loại tảiĐặc điểmCách bố trí thường dùngEngine nghiêng về
Dashboard vận hànhTruy vấn lặp lại, biết trước, cần ổn định hơn cần nhanh kỷ lụcCụm nhỏ, luôn bật, ưu tiên độ sẵn sàngImpala
Phân tích khám pháKhó đoán trước, lúc dồn dập lúc vắngCụm co giãn theo hàng đợi, tự thu về khi vắngImpala
Tải nặng định kỳ, ETLQuét lớn, chạy theo phiên, chấp nhận chờCụm lớn bật theo lịch, tắt sau khi xongHive
Gộp dữ liệu nhiều nguồnCâu hỏi liên hệ thống, dữ liệu chưa hợp nhấtCụm riêng, với tới nguồn ngoàiTrino
Tải thử nghiệmMột truy vấn viết vụng cũng có thể rất tốnCụm riêng có giới hạn, để không ảnh hưởng aiTùy nhu cầu

Nguyên tắc chung: tách cụm theo mức độ ảnh hưởng khi có sự cố, không tách theo sơ đồ tổ chức. Một dashboard mà cả công ty nhìn vào mỗi sáng xứng đáng có cụm riêng, bất kể nó thuộc phòng nào.

Mở dữ liệu ra cho nhiều người dùng làm nảy sinh hai nỗi lo rất chính đáng: người dùng nhìn thấy dữ liệu không được phép thấy, và một truy vấn viết vụng làm nghẽn cả hệ thống. Hai nỗi lo này thường bị gộp làm một, rồi giải bằng cách siết cả hai — kết quả là sáng kiến tự phục vụ dừng ở vài chục người dùng đầu tiên.

Chúng thuộc hai lớp khác nhau và nên giải ở hai lớp khác nhau:

  • Quyền xem thuộc lớp quản trị dùng chung SDX: phân quyền theo vai trò, che cột nhạy cảm, lọc theo dòng — đặt một lần trên bảng và áp cho mọi cụm, mọi công cụ kết nối vào, kể cả công cụ mới cắm vào ngày mai.
  • Ảnh hưởng hiệu năng thuộc về cách bố trí cụm: người dùng tự phục vụ chạy trên cụm của họ, nên truy vấn nặng nhất họ viết ra cũng chỉ chạm tới cụm đó.

Tách bạch được hai lớp thì thêm người dùng không còn đồng nghĩa với nới lỏng bên nào.

Theo Cloudera công bố, Cloudera Data Warehouse có SQL AI Assistant — cho phép người dùng truy vấn dữ liệu bằng ngôn ngữ tự nhiên, cùng các tự động hóa thông minh và gợi ý SQL. Điều này rút ngắn quãng đường từ câu hỏi nghiệp vụ tới câu truy vấn, nhất là với người thạo nghiệp vụ nhưng không quen viết SQL.

Điểm cần giữ tỉnh táo khi đặt kỳ vọng: trợ lý hỗ trợ việc viết truy vấn, còn quyền xem dữ liệu vẫn nằm ở lớp SDX. Một câu hỏi bằng ngôn ngữ tự nhiên được dịch thành SQL vẫn chạy dưới đúng vai trò của người hỏi — trợ lý không mở thêm cánh cửa nào ngoài phạm vi quyền đã có. Nhờ vậy, phổ cập việc truy vấn không đồng nghĩa với phổ cập việc truy cập.

Trung tâm dữ liệu hay đám mây — cùng một trải nghiệm

Phần tiêu đề “Trung tâm dữ liệu hay đám mây — cùng một trải nghiệm”

Với phần lớn tổ chức tại Việt Nam, câu hỏi nơi lưu trữ dữ liệu không phải chuyện kỹ thuật mà là chuyện tuân thủ. Dữ liệu khách hàng của ngân hàng, dữ liệu thuê bao của nhà mạng, dữ liệu công dân của khu vực công — phần lớn phải nằm trong vành đai đã đăng ký. Nhưng nhu cầu phân tích thì không đứng yên, và có những khối lượng công việc rất hợp với đám mây.

Cloudera Data Warehouse chạy được ở cả hai nơi — trong trung tâm dữ liệu của bạn, trên đám mây công cộng, hoặc cả hai cùng lúc — với cùng một trải nghiệm quản trị:

Một bộ chính sách. Phân quyền, che dữ liệu nhạy cảm, nhật ký truy cập đặt một lần ở lớp SDX và áp cho cả hai nơi. Không có chuyện on-premises một luật, đám mây một luật khác.

Một bộ kỹ năng. Đội vận hành không phải học lại từ đầu khi có thêm một nơi triển khai.

Một cách viết truy vấn. Truy vấn và mô hình dữ liệu không phải viết lại khi khối lượng công việc đổi chỗ.

Nhờ vậy, việc chọn nơi đặt dữ liệu trở lại đúng bản chất của nó: một quyết định về tuân thủ và chi phí, không phải một quyết định khóa chặt kiến trúc trong nhiều năm. Chi tiết ở Triển khai hybrid & Cloud Bursting.

Kho dữ liệu chỉ có giá trị khi người dùng nhìn thấy dữ liệu bằng công cụ họ đang quen tay. Cloudera Data Warehouse kết nối được với các công cụ báo cáo phổ biến — trong đó có Tableau và Power BI — qua các chuẩn kết nối thông dụng như JDBC (Java Database Connectivity) và ODBC (Open Database Connectivity).

Nghĩa là các dashboard đội bạn đã dựng, các báo cáo người dùng đã quen, và kỹ năng của đội phân tích đều giữ nguyên. Thứ thay đổi nằm ở phía dưới: chúng đọc từ một bản dữ liệu có quản trị, thay vì từ vài bản trích xuất mỗi nơi một con số.

Nếu muốn dựng dashboard ngay trên dữ liệu đã quản trị mà không thêm công cụ ngoài, nền tảng cũng có sẵn Cloudera Data Visualization — xem Observability & Data Visualization.

Điểm cần nhấn: dù người dùng đến bằng công cụ nào, chính sách vẫn nằm ở lớp dữ liệu. Một người không được phép xem cột định danh cá nhân thì sẽ không xem được cột đó — qua Tableau, qua Power BI, hay qua bất kỳ kết nối nào cắm vào sau này. Quyền đi theo dữ liệu, không đi theo công cụ.

Nằm trong một nền tảng, không đứng một mình

Phần tiêu đề “Nằm trong một nền tảng, không đứng một mình”

Sức mạnh của Data Warehouse tăng lên khi nó không đứng riêng. Theo Cloudera công bố, khi tích hợp cùng Data EngineeringCloudera AI, tổ chức chạy được các tình huống đa chức năng — từ BI tới phân tích do AI dẫn dắt — với zero ETL và zero data copy: không bước trích xuất trung gian, không bản sao dữ liệu cho mỗi mục đích.

Cụm từ đó đáng dừng lại, vì nó là hệ quả trực tiếp của kiến trúc lakehouse. Trên nền tách hồ và kho, mỗi lần dữ liệu đi từ nơi lưu sang nơi phân tích là một bước ETL và một bản sao. Trên lakehouse, kho phân tích, pipeline biến đổi và mô hình AI cùng đọc một bảng Iceberg — nên “zero ETL, zero data copy” không phải một tính năng riêng, mà là điều còn lại khi bạn bỏ được ranh giới giữa hồ và kho.

Nếu đội bạn đã chuẩn hóa phần biến đổi dữ liệu bằng dbt, theo Cloudera công bố, nền tảng có tích hợp với dbt Labs để hợp lý hóa luồng biến đổi — Spark và Hive lo phần nặng, dbt lo tầng mô hình nghiệp vụ phía trên. Xem thêm ở Data Engineering.

Ngân hàng — báo cáo cuối ngày và tự phục vụ cùng tồn tại

Phần tiêu đề “Ngân hàng — báo cáo cuối ngày và tự phục vụ cùng tồn tại”

Cuối ngày, luồng nạp và đối chiếu giao dịch chạy nặng. Sáng hôm sau, hàng trăm người ở chi nhánh mở dashboard, phòng tài chính chạy báo cáo cuối kỳ, đội rủi ro quét dữ liệu lịch sử để chấm điểm danh mục.

Cách bố trí: một cụm Impala cho dashboard vận hành — nhỏ, luôn sẵn sàng, ưu tiên độ ổn định; một cụm Impala co giãn cho phân tích khám phá theo giờ cao điểm; một cụm Hive cho tải ETL nặng của đội rủi ro — lớn, chạy theo phiên. Ba cụm đọc chung một bản dữ liệu, nên các con số nhất quán với nhau mà không ai phải chờ ai.

Khi đội phân tích cần gộp dữ liệu giao dịch trên lakehouse với một bảng danh mục còn nằm ở hệ thống nghiệp vụ cũ chưa kịp đưa vào, họ dùng một cụm Trino để chạy câu hỏi liên hệ thống đó — không phải chờ dự án đưa bảng kia lên lakehouse hoàn tất.

Viễn thông — phân tích dữ liệu cước quy mô rất lớn

Phần tiêu đề “Viễn thông — phân tích dữ liệu cước quy mô rất lớn”

Dữ liệu chi tiết cuộc gọi — CDR (Call Detail Record) — sinh ra hàng tỉ bản ghi mỗi tháng, và các câu hỏi kinh doanh thì luôn cần nhìn theo chuỗi thời gian dài: hành vi thuê bao, hiệu quả gói cước, dấu hiệu rời mạng. Đây đúng loại tải mà kho dữ liệu sinh ra để làm: quét sâu, tổng hợp nhiều chiều, trên bảng Iceberg đã phân vùng hợp lý và được bảo trì tự động.

Ở quy mô này, cách bảng được phân vùng và bảo trì quyết định phần lớn hiệu năng. Một bảng CDR phân vùng theo ngày và được gộp file định kỳ sẽ trả lời câu hỏi về ba tháng gần nhất nhanh hơn hẳn so với cùng lượng dữ liệu đó nằm rải rác trong hàng triệu file nhỏ — dù cụm tính toán có lớn cỡ nào. Chi tiết ở Open Data Lakehouse & Iceberg.

Chia sẻ: