DataOps 01: Stream data ingestion với Redpanda

Stream data ingestion

Trong bài viết What’s Next for Data Engineering in 2023? 7 Predictions, một trong những dự báo tôi đồng tình đó là Prediction #6: Data warehouses and data lakes use cases start to blur nghĩa là ta sẽ dần hợp nhất structured data và unstructured data về cùng một chỗ.

Ắt hẳn khi xây dựng Data Platform, các bạn đã từng nghe đến mô hình Kappa ArchitectureLambda Architecture. Trong kiến trúc Lambda, ta sẽ chia batch data và stream data làm hai nhánh để lưu trữ, xử lý và truy vấn dữ liệu giúp cho việc quản lý được tách bạch nhưng workload của Data Engineer sẽ bị đội lên do phải quản lý hai hệ thống cùng lúc. Ngược lại, kiến trúc Kappa hướng đến việc hợp nhất hai nhánh batch và stream lại với nhau, sau đó dùng cơ chế federated query để có thể cùng lúc lưu trữ, xử lý cũng như truy vấn dữ liệu.

Chúng ta vẫn thường thiết kế và xây dựng theo Lambda nhiều hơn Kappa dù tư tưởng của Kappa mang lại giá trị hơn về tốc độ cũng như khả năng tích hợp các microservice in real-time. Lý do khiến mọi người e ngại khi áp dụng Kappa đó là ta cần một đội ngũ rất skillfull đứng đằng sau cơ sở hạ tầng Event Driven Hub phức tạp nhằm quản trị và đảm bảo hệ thống vận hành 24/7.

Kafka là đàn anh trong distributed event streaming platform từ trước tới nay. Kafka đã đặt ra tiêu chuẩn cho các hệ thống event streaming tương tự sau này. Đã có nhiều doanh nghiệp áp dụng thành công Kafka vào trong vận hành, từ phân tích báo cáo real-time, data migration cho tới những ứng dụng AI có khả năng tương tác tốc độ cao. Tuy nhiên, khi xây dựng Kafka từ đầu, ta cần một đội DevOps có kỹ năng chuyên môn rất vững để có thể vận hành trơn tru. Vậy có đàn em nào khác cũng có sức mạnh tương tự nhưng lại dễ tiếp cận hơn không?

Redpanda là một trong những đàn em đó. Không những dễ tiếp cận trong việc quản lý, chi phí xây dựng nền tảng thấp hơn mà nhờ đó công việc của các system admin cũng đỡ vất vả hơn. Hai tính chất chính giúp cho Redpanda cho tốc độ nhanh 10x và chi phí giảm 6x đó là nhờ loại bỏ Zookeeper thay bằng Raft algorithm, code bằng C++ nên không phải đụng đến JVM. Redpanda đã được kiểm chứng bằng thực nghiệm với 200 giờ chạy test. Đặc biệt Redpanda hoàn toàn có thể tương thích với Kafka ecosystem như Kafka connect giúp ta chuyển đổi công nghệ dễ dàng hơn.

Trong bài viết này, tôi sẽ tiến hành cài đặt Redpanda như một broker sử dụng cho việc ingesting data. Các bạn có thể sử dụng link github ở đây để tiến hành cài đặt lại: https://github.com/ongxuanhong/de01-stream-ingestion-redpanda-minio

  • Data source sẽ là MySQL giả lập dữ liệu vận hành của doanh nghiệp, cụ thể là giao dịch đặt hàng của user. Bên cạnh đó sẽ là clickstream events giả lập quá trình tương tác của user trên website ecommerce.
  • Target sink ta có thể dùng S3, GCS hay Azure Blob để làm nơi lưu trữ phân tán. Tuy nhiên, tôi muốn bài viết dễ cài đặt với đa số bạn đọc, không cần tạo tài khoản trên cloud provider nên đã quyết định dùng MinIO để thay thế.
  • Để vận chuyển dữ liệu source/sink tôi sẽ cài đặt debezium cho MySQL và Kafka connect cho MinIO.

Qua năm mới 2023, tôi cũng xin chúc các bạn sẽ gặt hái được nhiều thành công trong sự nghiệp, gia đình luôn bình an và hạnh phúc.

Advertisement
Nổi bật

Data Science mini course

ds_mini_course

Mini course này được thiết kế dành cho những bạn còn “chân ướt chân ráo” bước vào lĩnh vực Data Science (DS). Các chủ đề sẽ xoay quanh tập dữ liệu từ cuộc thi Kaggle Home Credit Default Risk, việc này giúp cho người học tập trung kiến thức của mình vào trong ngữ cảnh là một cuộc thi. Từ đó, ta sẽ có động lực cũng như ghi nhớ tốt hơn các syntax và tình huống xử lý cụ thể trong ngôn ngữ lập trình Python.

Mỗi chương được trình bày bằng nhiều notebooks. Trong mỗi notebooks, có những đoạn code và phần ghi chú bằng Tiếng Việt cho người mới dễ theo dõi. Bên cạnh là Tiếng Anh được dùng trong những comment đơn giản. Ta có thể học bằng cách nhập lại đoạn code trên máy của mình và quan sát phản hồi. Những cú pháp khó hiểu, ta có thể tra Google để tìm hiểu thêm thông tin. Mỗi tuần, tôi sẽ cố gắng hoàn tất một chương cho đến lúc hoàn thành mini course này.

Kết thúc series, tôi hy vọng mọi người sẽ phát triển được các kỹ năng thực tế vào trong công việc, cải thiện khả năng quan sát và phân tích dữ liệu, hoặc có thể dùng course này làm tài nguyên training cho team DS của mình.

Tiếp tục đọc “Data Science mini course”

Truy vấn văn bản – Document Retrieval

wikipedia

Giả sử bạn đang đọc một bài viết nào đó, hệ thống truy vấn văn bản sẽ giúp bạn tìm kiếm những bài viết tương tự như bài viết của bạn đang đọc. Vậy làm sao ta có thể tính được độ tương tự giữa các văn bản để tìm kiếm trong vô số các tài liệu có sẵn, tỷ lệ giống nhau về nội dung của các văn bản là bao nhiêu?

Trong bài viết này, ta sẽ sử dụng tập văn bản liên quan đến những người nổi tiếng download từ wikipedia (file csv đã xử lý có thể download ở đây) để xây dựng hệ thống truy vấn văn bản dựa trên nội dung đang đọc.

Notebooks: document_retrieval.ipynb

Hệ thống recommend bài nhạc

iTunes

Một trong những công nghệ giúp cho đời sống con người ngày càng dễ dàng hơn đó là recommender system. Recommender system giúp kết nối người dùng với sản phẩm mà họ tìm kiếm được thuận tiện và nhanh chóng hơn từ đó mang lại lợi thế cạnh tranh của sản phẩm so với các đối thủ khác. Bạn có thể bắt gặp hệ thống này ở các trang xem phim, nghe nhạc, mua bán, mạng xã hội, … Về cơ bản, bạn có thể áp dụng ngay kỹ thuật này vào hệ thống của bạn thông qua các hướng tiếp cận như: Popularity – liệt kê top các sản phẩm được nhiều người quan tâm nhất, Classification – dựa vào các chủ đề mà bạn cung cấp để lọc ra danh sách sản phẩm tương ứng. Tuy nhiên, các hướng tiếp cận này đều mang tính đại chúng, không nhắm vào một cá nhân cụ thể nào. Hơn nữa, không ai dễ dàng cung cấp thông tin cá nhân cho ứng dụng của bạn để có thể lọc thông tin phù hợp.

Do đó, trong bài viết này, tôi sẽ đi theo hướng tiếp cận Collaborative Filtering với hai phương pháp gồm Memory-Based Collaborative Filtering và Model-Based Collaborative filtering giúp trả lời hai câu hỏi “user nghe bài nhạc này thì sẽ có xu hướng nghe các bài như…” và “user có gu âm nhạc như bạn thì sẽ có xu hướng nghe các bài nhạc như…”. Trong đó, Model-Based sẽ sử dụng singular value decomposition (SVD) và Memory-Based sử dụng khoảng cách cosine để mô hình hóa hệ thống. Bạn có thể download dữ liệu từ đây Million Song Dataset Challenge.

Notebooks: song_recommender.ipynb
Source code:
Github.

Sentiment Analysis cơ bản

Amazon customer reviews
Sentiment analysis – hay phân tích tâm lý của đối tượng – là một chủ đề thách thức trong Machine Learning. Mọi người thể hiện cảm nhận của mình thông qua ngôn ngữ tự nhiên có bản chất nhập nhằng, mơ hồ đã gây không ít khó khăn cho việc xử lý cho máy tính hiểu. Chưa kể, họ sử dụng các cách chơi chữ, ẩn ý hay các kí hiệu như

:), :(, =)))

để giải bày cảm xúc của họ.

Trong bài viết này, tôi sẽ sử dụng tập dữ liệu Web data: Amazon Fine Foods reviews cho việc áp dụng kĩ thuật Sentiment analysis. Đây là tutorial cơ bản dành cho các bạn mới bắt đầu nghiên cứu vấn đề này. Ở đây, ta sẽ sử dụng hướng tiếp cận Bag of Words để chuyển đổi dữ liệu văn bản thành ma trận vector từ đó có thể đưa vào các mô hình phân lớp để học.

Notebooks: sentiment_analysis_basics.ipynb
Source code:
classification_algorithms.py

Gom nhóm (Clustering analysis) tập dữ liệu Labor

Trong bài viết này, ta sẽ áp dụng các phương pháp gom nhóm (clustering) trên tập dữ liệu Labor. Đây là tập dữ liệu chứa các thông tin (số ngày nghỉ, số giờ làm việc, lương tăng hàng năm, …) để phân biệt nhân viên tốt (good) và nhân viên không tốt (bad). Hai thuật toán được sử dụng là K-meanHierarchical Clustering (AGNES). Để dễ tiếp cận, các phương pháp được thực hiện với Weka.

Labor
Labor

Tập dữ liệu: labor
Địa chỉ: https://archive.ics.uci.edu/ml/machine-learning-databases/labor-negotiations/labor-negotiations.data
Mô tả: https://archive.ics.uci.edu/ml/machine-learning-databases/labor-negotiations/labor-negotiations.names
Github: https://github.com/ongxuanhong/Clustering-analysis-with-Labor-dataset

Tiếp tục đọc “Gom nhóm (Clustering analysis) tập dữ liệu Labor”

Áp dụng các phương pháp phân lớp (Classification) trên tập dữ liệu Mushroom

Trong bài viết này, ta sẽ áp dụng các phương pháp phân lớp (classification) lên tập dữ liệu Mushroom. Đây là tập dữ liệu mô tả các đặc tính vật lý của nấm, cùng với nhãn phân loại có độc hoặc ăn được. Các thuật toán được sử dụng gồm Naive Bayes, Nearest neighbor, ID3, J48. Để dễ tiếp cận, các phương pháp được thực hiện với Weka.

Mushroom
Mushroom

Tập dữ liệu: mushroom
Địa chỉ: https://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.data
Mô tả: https://archive.ics.uci.edu/ml/machine-learning-databases/mushroom/agaricus-lepiota.names
Github: https://github.com/ongxuanhong/Applying-Classifiers-on-Mushroom-dataset/

Tiếp tục đọc “Áp dụng các phương pháp phân lớp (Classification) trên tập dữ liệu Mushroom”

Apriori và FP-Growth với tập dữ liệu plants

Trong bài viết này, ta sẽ khai thác các tập phổ biến (frequent itemset) trên tập dữ liệu Plants (sự phân bố của một số loài thực vật ở khu vực Mỹ và Canada). Các công đoạn tiền xử lý được thực hiện bởi Python. Để dễ tiếp cận, các bước khai thác dữ liệu được thực hiện với Weka.

Plant
Plant

Tập dữ liệu: plants
Địa chỉ: http://archive.ics.uci.edu/ml/machine-learning-databases/plants/plants.data
Mô tả: http://archive.ics.uci.edu/ml/machine-learning-databases/plants/stateabbr.txt
Github: https://github.com/ongxuanhong/Apriori-and-FP-growth-with-plant-dataset

Tiếp tục đọc “Apriori và FP-Growth với tập dữ liệu plants”

Tiền xử lý dữ liệu (Horse Colic dataset)

Trong bài viết này, ta sẽ áp dụng những kiến thức liên quan đến lấy và làm sạch dữ liệu (gọi chung là tiền xử lý dữ liệu) trên tập dữ liệu Horse Colic (chứng đau bụng ở ngựa). Để dễ tiếp cận, các thao tác được thực hiện với Weka.

Horse Colic
Horse Colic

Tập dữ liệu: horse-colic

Notebooks: python.

Tiếp tục đọc “Tiền xử lý dữ liệu (Horse Colic dataset)”

R: Làm quen với dữ liệu Air quality

Trong bài viết này, tôi sẽ sử dụng tập dữ liệu air quality để minh họa đôi nét về quá trình phân tích sơ khởi trong data analysis. Trước khi bước vào áp dụng các giải thuật Machine learning, việc nên làm trước tiên đó là quan sát dữ liệu đầu vào. Từ đó, bạn sẽ cảm nhận được tổng quan về tập dữ liệu để có thể dùng trực giác của mình áp dụng những giải thuật phù hợp nhất.

Notebooks: air_quality.