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

FAQ: Big data cho người mới bắt đầu

Cảm ơn TopDev và các bạn trẻ đã tổ chức và hỗ trợ tôi hoàn thành tốt buổi chia sẻ hôm thứ bảy 30/09/2017 vừa qua. Mặc dù trời mưa to, nhưng các bạn khán giả vẫn tham gia khá đầy đủ. Tuy có nhiều phần chưa đáp ứng được mong đợi của mọi người nhưng phần hỏi đáp luôn là phần sôi động nhất đã lắp được phần nào khoảng trống này. Hy vọng, mỗi bạn đều đem về được những kinh nghiệm thiết thực khi đụng đến công nghệ xử lý Big Data, cụ thể là Apache Spark. Bên dưới, tôi xin tổng hợp lại các câu hỏi thường gặp trong buổi chia sẻ này cùng với Slide chứa notebook về Spark bên trên. Nếu bạn nào có thêm câu hỏi, mình sẽ cập nhật vào bài viết này để thêm phần phong phú cho các bạn khác tìm hiểu và tham khảo.

Notebooks:

Các event trước:

Thế nào thì được gọi là Big Data?

Big Data thoả tính chất 5V thì được gọi là Big. Cá nhân mình thấy 3 điểm sau thì đã gọi là Big rồi.

  1. Dữ liệu phức tạp (unstructured data).
  2. Tốc độ phình to nhanh, tính theo giây.
  3. Không thể xử lý với các công nghệ trước đó.

Có cần phải học thêm bằng cấp nào không?

Các nhà tuyển dụng hiện tại xem kinh nghiệm quan trọng hơn bằng cấp. Một số công nghệ nên biết: Docker, PostgreSQL, MongoDB, Apache Spark, Bash shell, AWS, Kafka, Jenkins.

Nếu bạn có thêm các Certificate cloud computing sau thì cũng có thể tạo nên lợi thế riêng:

Tiếp tục đọc “FAQ: Big data cho người mới bắt đầu”

Làm việc với Spark DataFrames – Truy vấn cơ bản

Spark DataFrames
Spark DataFrames

DataFrame là một kiểu dữ liệu collection phân tán, được tổ chức thành các cột được đặt tên. Về mặt khái niệm, nó tương đương với các bảng quan hệ (relational tables) đi kèm với các kỹ thuật tối ưu tính toán.

DataFrame có thể được xây dựng từ nhiều nguồn dữ liệu khác nhau như Hive table, các file dữ liệu có cấu trúc hay bán cấu trúc (csv, json), các hệ cơ sở dữ liệu phổ biến (MySQL, MongoDB, Cassandra), hoặc RDDs hiện hành. API này được thiết kế cho các ứng dụng Big Data và Data Science hiện đại. Kiểu dữ liệu này được lấy cảm hứng từ DataFrame trong Lập trình R và Pandas trong Python hứa hẹn mang lại hiệu suất tính toán cao hơn.

Spark DataFrames Performance
Spark DataFrames Performance

Trong bài viết này, tôi sẽ tiến hành thực nghiệm một vài truy vấn cơ bản để làm quen với kiểu dữ liệu DataFrames. Ở các bài viết sau, ta sẽ đi sâu hơn vào các truy vấn nâng cao và phức tạp hơn.

Tiếp tục đọc “Làm việc với Spark DataFrames – Truy vấn cơ bản”

Kinh nghiệm làm việc với Big Data

Working with Big Data
Working with Big Data

Đã bao giờ bạn cảm thấy quá tải khi làm việc với Big Data chưa? Đã bao giờ bạn phải ngồi hàng giờ chỉ để transfer dữ liệu từ server này sang server khác chỉ để test thuật toán của mình? Hay những lúc chán chường khi nhìn script của mình bắt đầu chạy hàng giờ và cuối cùng phát hiện ra mình đã sai đâu đó? Mình nghĩ rằng tất cả những ai khi mới bắt đầu làm việc với Big Data đều có những cảm nhận như vậy. Trong bài viết này, tôi xin góp một chút kinh nghiệm của mình để làm việc với Big Data hiệu quả hơn, kể cả cá nhân hay làm việc nhóm.

Tiếp tục đọc “Kinh nghiệm làm việc với Big Data”

Trải nghiệm tập dữ liệu Big Data ở đâu

repository
repository

Nếu bạn đang là một newbie và có mong muốn trang bị cho mình một chút kinh nghiệm về xử lý Big Data để có thể theo đuổi sự nghiệp như một data scientist thì bạn sẽ đặt câu hỏi đầu tiên đó là “Lấy dữ liệu Big Data ở đâu để mà thực tập?”.

Hiện nay, bạn không cần phải là một thành viên của một công ty hay tổ chức nào để được quyền truy xuất vào tập dữ liệu Big Data của họ. Đã có nhiều tập dữ liệu Big Data được public ra công chúng cho các nhà nghiên cứu làm phân tích và xử lý thông tin trực tiếp mà không đòi hỏi bất kỳ quyền hạn nào. Dưới đây, tôi xin liệt kê danh sách các nguồn dữ liệu Big Data mà bạn có thể download về.

  1. KDNuggets repository
  2. Data.gov 
  3. US Census Bureau 
  4. European Union Open Data Portal 
  5. Data.gov.uk 
  6. The CIA World Factbook 
  7. Healthdata.gov 
  8. NHS Health and Social Care Information Centre 
  9. Amazon Web Services public datasets 
  10. Facebook Graph 
  11. Gapminder 
  12. Google Trends 
  13. Google Finance 
  14. Google Books Ngrams 
  15. National Climatic Data Center 
  16. DBPedia 
  17. Topsy 
  18. Likebutton 
  19. New York Times 
  20. Freebase 
  21. Million Song Data Set 

Tham khảo thêm:

Lập trình Spark với Scala

stackoverflow
stackoverflow

Với chế độ cài đặt Standalone, Spark có thể xử lý được một tập dữ liệu khổng lồ dù cho bạn đang sử dụng một chiếc laptop có RAM chỉ khoảng 4-8GB. Trong bài viết này, tôi sẽ hướng dẫn mọi người lập trình Spark với Scala.

Cho trước tập dữ liệu là các bài post trên stackoverflow.com, nhiệm vụ của chúng ta là xây dựng một mô hình phân lớp để dự đoán xem câu hỏi của user khi post lên thuộc nhóm nào, nhờ vậy mà trang web có thể đưa ra những tags gợi ý thông minh hơn cho user.

Tiếp tục đọc “Lập trình Spark với Scala”

5 Machine Learning APIs tốt nhất dành cho Data Science

Machine learning API
Machine learning API

Với sự phát triển và tiến bộ nhanh chóng về các thuật toán Machine Learning như hiện nay, nếu không có sự hỗ trợ mạnh mẽ từ các API của các nhà khổng lồ về lĩnh vực này thì các developer thiên về kĩ thuật như chúng ta sẽ khó có thể xây dựng được những ứng dụng thông minh để đem lại trải nghiệm cao cho người dùng.

Với nhiều sự lựa chọn cho các nhiều loại tập dữ liệu khác nhau như hiện nay, cuộc đua tranh giải Machine Learning API tốt nhất vẫn còn đang diễn ra, ai là người nhanh hơn sẽ giành chiến thắng. Dưới đây, tôi xin đưa ra 5 Machine Learning APIs tốt nhất dành cho Data Science để mọi người tham khảo.

Tiếp tục đọc “5 Machine Learning APIs tốt nhất dành cho Data Science”