Ad Code

Data Science labs blog

Xây Dựng Data Warehouse Bằng Hadoop Ecosystem

 

Data Warehouse là gì?

Khái niệm data warehouse


Data warehouse là cơ sở dữ liệu quan hệ được thiết kế ra để phân tích dữ liệu. 

Data warehouse bao gồm dữ liệu quá khứ, hiện tại từ nhiều nguồn dữ liệu khác nhau (từ CRM, ERP,...)

Một data warehouse có 4 tính chất:

  • Hướng đến 1 mục tiêu cụ thể (Subject-oriented)
  • Đảm bảo sự toàn vẹn về dữ liệu
  • Có 1 giá trị lịch sử
  • Không thay đổi theo thời gian.

Kiến trúc của Data warehouse

Có 3 mô hình kiến trúc phổ biến nhất:

  1. Kiến trúc data warehouse cơ bản
  2. Kiến trúc data warehouse với vùng dữ liệu Staging
  3. Kiến trúc data warehouse với vùng dữ liệu Staging và Data Marts - đây cũng là kiến trúc phổ biến nhất trong 3 loại.



Trong kiến trúc data warehouse thứ 3, dữ liệu từ các nguồn khác nhau được tập hợp và chuyển đến vùng dữ liệu Staging. Ở vùng dữ liệu Staging, chúng ta sẽ làm các tác vụ chuyển đổi tất cả dữ liệu khác nhau thành các dữ liệu giống nhau về tên, ý nghĩa, và kiểu dữ liệu. Sau đó, tiếp tục load dữ liệu vào Data Warehouse để tiến hành phân tích.  Sau khi phân tích với mục đích kinh doanh cụ thể (như là Purchasing, Sales, Inventory…), dữ liệu sẽ được phân thành các  data marts. Ở bước cuối cùng, người dùng có thể tương tác với data marts qua báo cáo, analytics hoặc data mining. 

Tầm nhìn của Data warehouse cho sản phẩm Retail Assistant

Magestore mong muốn Retail Assistant là 1 sản phẩm triển khai dưới dạng cloud-services và phục vụ được 10,000 doanh nghiệp. Ước tính tổng lượng dữ liệu là khoảng 100TB. 

Data warehouse trong bài toán này phải phục vụ được các cuộc hội thoại real-time, gần như ngay lập tức giữa chủ doanh nghiệp và trợ lý ảo. 

Vì phải xử lý một khối lương dữ liệu lớn và yêu cầu bài toán đặt ra là xử lý dữ liệu, trả về kết quả real-time nên sẽ có những thách thức mà team phải đối mặt:

  • Vấn đề về performance: làm sao để xử lý dữ liệu chính xác, và nhanh.
  • Chi phí: Muốn tăng performance thì có thể bị đội chi phí lên cao, có thể ảnh hưởng đến quyết định dùng/không dùng sản phẩm.
  • Khả năng scale của hệ thống: trong tương lai sản phẩm có nhiều khách hàng thì sản phẩm vẫn đáp ứng được.

Đứng trước những thách thức đó, team Retail Assistant đã tìm hiểu các giải pháp công nghệ xử lý dữ liệu lớn. Có thể kể đến: Apache Hive, Spark SQL, Amazon Redshift, Google Big Query…

Trong quá trình đánh giá các giải pháp, team nhận thấy Google Big Query tuy tốc độ xử lý nhanh nhưng team không có khả năng kiểm soát hệ thống 100%. Google Big Query có những hạn chế như trong 1 ngày, thời gian xử lý dữ liệu chỉ là 6 tiếng, chỉ phù hợp sử dụng cho 1 doanh nghiệp. Trong khi đó, tầm nhìn của Retail Assistant hướng đến nhiều doanh nghiệp nên giải pháp Google Big Query không đáp ứng được yêu cầu của Magestore.

Thế là team quyết định dùng 1 giải pháp Open source để giúp team có thể kiểm soát hệ thống 100%. 

Lấy cảm hứng từ case study của Ebay, họ đã sử dụng Apache Hive để build data warehouse, xử lý bài toán rất giống của Retail Assistant, vì thế team cũng đã lựa chọn thử nghiệm với Apache Hive.

Ở Ebay năm 2015, họ đã xử lý được 150+PB dữ liệu trên nền tảng Hadoop. Đây cũng là một ví dụ giúp team học hỏi thêm được về cách xây dựng data warehouse. 

Kiến trúc tầng application của Retail Assistant



Kiến trúc tầng server của Retail Assistant


6 bước để xây dựng Data warehouse

Bước 1: Hiểu được vấn đề cần phải giải quyết

Bước 2: Xác định data source, data marts

Bước 3: Xây dựng model về dữ liệu staging, data warehouse và olap

Bước 4: Dựng các data pipeline

Bước 5: Xác thực các dữ liệu đảm bảo  đủ và đúng

Bước 6: Monitor hệ thống

Hiểu vấn đề

Trước hết team xác định cần phân tích dữ liệu bán hàng của doanh nghiệp. Team xác định các metric và dimension như sau: 


Xây dựng kiến trúc về dữ liệu




.

Ví dụ về thiết kế data warehouse cho việc phân tích dữ liệu sales.

Thiết kế theo Star Schema, với Vùng trung tâm là dữ liệu mình cần phân tích (dữ liệu sales). 


Hình chụp từ hệ thống quản trị dữ liệu của team


Dựng Data Pipeline

Quy trình dựng Data pipeline: Thu thập dữ liệu -> Lưu trữ -> Process/phân tích -> Sử dụng -> Quản lý


  • Bước Thu thập: Dữ liệu được trích xuất từ database bằng Apache Sqoop, rồi được load sang Hadoop HDFS.
  • Bước Lưu trữ: Dữ liệu được lưu trữ dưới dạng gốc trong HDFS. 
  • Bước Phân tích: Dữ liệu được transform và load vào data warehouse bằng Apache Hive. 
  • Bước Sử dụng: sau khi dữ liệu được xử lý sẽ được users dùng thông qua các BI tool, hoặc chatbot
  • Bước Quản lý tiến trình: quá trình xử lý dữ liệu được quản lý bằng Oozie workflow và monitor trên HUE.
Ảnh chụp ống dữ liệu được xây trên Apache HUE


Xác minh dữ liệu

Team chọn 1 tool tên là Talend Big Data Studio để validate dữ liệu

Monitor hệ thống

Hình ảnh giao diện quản lý job của HUE

Để monitor hệ thống được hiệu quả, team sử dụng Apache HUE. 

Vấn đề gặp phải khi xây dựng Data warehouse


Reactions

Post a Comment

0 Comments