Triển khai ứng dụng và vận hành DataLake

 

1. Ingest Data (Đưa dữ liệu vào hệ thống)

- Việc đưa dữ liệu vào hệ thống cần lưu ý:

+ Dữ liệu được đưa vào sẽ phục vụ lưu trữ và đảm bảo cho các dịch vụ sử dụng phía sau nên Data phải đảm bảo thời gian, đỗ trệ dữ liệu phù hợp.

+ Trong các trường hợp việc xử lý theo lô mất nhiều thời gian, đặc biệt các hệ thống Recommendation đòi hỏi độ trễ mức Near RealTime thì Ingest Data chính là bước bạn thực hiện nó.

Vì vậy, bạn cần một công cụ đảm bảo tự động gom dữ liệu thành nhóm. Công cụ này giúp bạn tổ chức các luồng Streaming tự động, ở đây mọi người có thể sử dụng stack Nifi + Kafka + Spark Streaming và Kiniesis Stream để chuyển dữ liệu lên Amazon S3 hoặc Redshift trong trường hợp bạn sử dụng Cloud.


- Với Spark Streaming đã phát triển đáng kể về khả năng và tính đơn giản, cho phép bạn phát triển các ứng dụng Streaming. Nó sử dụng các API như Spark Batch, hỗ trợ Java, Scala và Python. Có thể đọc dữ liệu từ HDFS, Flume, Kafka, …

2. Cảnh báo, giám sát và quản lý dữ liệu

- Khi bạn bắt đầu phát triển Data Lake của mình thì cấu trúc trong nó phải được xác định rõ.

- Bạn cần quản trị các Data Flow để đảm bảo các luồng ETL luôn hoạt động hoặc trong trường hợp xảy ra lỗi phải được cảnh báo và giám sát.

a. Giám sát, cảnh báo Data Lake

- Giám sát là việc cực kỳ quan trọng trong việc thành công của Data Lake.

- Ngày ngày các hệ thống giám sát cung cấp một bộ dịch vụ phong phú như bảng điều khiển (dashboard), tin nhắn, emaill, gọi, ..nhằm thông báo sớm các bất thường

- LogicMonitor, Datadog và VictorOps là những công cụ mà bạn có thể tham khảo

- Hiện Data Lake bên mình đang tự phát triển công cụ riêng do nhu cầu, ví dụ hình minh họa dưới:


b. Công cụ quản lý dữ liệu

- Việc quản lý dữ liệu bao gồm bảo mật, an toàn thông tin và quản lý danh mục dữ liệu trong hệ thống

- Apache Ranger đóng vai trò trong việc đảm bảo phân quyền truy xuất, nó là một framework cho phép thiết lập các chính sách quản lý quyền của những người sử dụng hệ thống

- Apache Atlas là một Low-Level Service trong Hadoop Stack và là công cụ hỗ trợ việc quản lý danh mục dữ liệu, hỗ trợ Data Lineage bằng việc giúp mọi người hiểu Meta Data, dòng đời, công thức và các định nghĩa liên quan của dữ liệu

3. Chuẩn bị dữ liệu

- Bước xử lý và tổng hợp sẽ tạo ra những giá trị cho dữ liệu, bước này sẽ bổ sung các thông tin danh mục, id, hoặc tính toán lên các giá trị so sánh cùng kỳ, ..

- Công cụ thường sử dụng ở đây là Hive SQL do khả năng triển khai nhanh, phù hợp và dễ sử dụng với đa số người dùng

- Apache Hive cũng hỗ trợ tương thích với Atlast đẻ đồng bộ danh mục dữ liệu tự động

- Hive được tổ chức để trở thành một Data Warehouse trên nền Hadoop/MapReduce, nó biên dịch SQL -> Spark Job -> MapReduce.

- Hive Metastore lưu trữ cấu trúc của bảng, giúp chuyển các thư mục HDFS thành dữ liệu có cấu trúc để Query

- Bạn có sử dụng Spark SQL,Presto, Tez, Impala , Drill để tương tác với Hive

4. Model và Serve Data

- Phần học máy ở đây có thể dùng Spark ML, nó là một mảng riêng nên mình sẽ không đi sâu, các bạn có thể join group Cộng đồng Big Data Analytics.

- Trong phần này, bạn có thể triển khai các usecase phổ biến về quản lý Khách hàng như Churn, Upsell, Cross Sell,..

5. Khai thác dữ liệu

- Các công cụ BI sẽ cung cấp cho bạn khả năng trình diễn và khai thác dữ liệu hiệu quả

- Ví dụ như Power BI, Tableau, Qlik đều là những công cụ cho phép bạn cấu hình , tùy chỉnh và tương tác với dữ liệu hiệu quả. Nó đều hỗ trợ kết nối với Impala, Presto, Tez,..


6. Triển khai và tự động hóa

- Sau khi bạn đã có Job xử lý, tổng hợp dữ liệu điều cần làm tiếp theo là triển khai để chúng chạy định kỳ theo lịch, đó chính là Work Flow

- Hiện có một số Work Flow Open source phổ biến như Airflow, Ozie, ..

- Ngoài ra, trong các Flow phức tạp, bạn có thể sử dụng các công cụ ETL để tích hợp được nhiều tính năng hơn, ví dụ như Pentaho, Talend

Link tham khảo

https://learning.oreilly.com/library/view/operationalizing-the-data/9781492049517/

Comments

Popular Posts