Cơ bản về Big Data

Hệ thống quản lý dữ liệu đã tồn tại hàng thập kỷ nay và tạo thành một nền công nghiệp mạnh mẽ mà chúng ta đều biết đến. Các nhà cung cấp đáng chú ý trong thị trường này là những công ty tên tuổi như Oracle, Microsoft, Teradata, IBM. Đây là những công ty có giá trị nhất thế giới trong lĩnh vực phát triển hệ thống quản lý dữ liệu. Dữ liệu là thành phần cốt lõi của rất nhiều vấn đề liên quan đến mô hình kinh doanh của tổ chức, doanh nghiệp; họ có thể phải tốn đến hàng triệu đô la Mỹ để xây dựng một hệ thống dữ liệu có thể thu thập (ingest), lưu trữ (store), phân tích (analyze), và sử dụng những dữ liệu liên quan để phục vụ ngược lại cho các khách hàng của doanh nghiệp, các kênh kinh doanh, và các thị trường kinh doanh khác nhau. 

Hệ thống quản lý dữ liệu có thể chia thành nhiều phân nhóm khác nhau và phụ thuộc vào tiêu chí mà người dùng lựa chọn. Hệ cơ sở dữ liệu (databases), hệ thống tập tin (file systems), hệ thống hàng đợi (message queues), các công cụ đánh giá kinh doanh (bussiness intelligence tools) là những phần trong một hệ sinh thái nhằm phục vụ những mục đích khác nhau trong một kiến trúc lớn hơn của hệ thống quản lý dữ liệu; và những điều này sẽ giúp bạn xử lý những vấn đề trong chiến lược kinh doanh.

Kiến trúc hệ thống Big Data

Đây là một kiến trúc xử lý chung cho các hệ thống Big Data. Nó bao gồm các thành phần:

Nguồn dữ liệu (Data Sources)

Nơi dữ liệu được sinh ra, được phân loại theo kiểu cấu trúc dữ liệu:

  • Dữ liệu có cấu trúc (structure) ~ cơ sở dữ liệu (CRM/ERP)
  • Dữ liệu phi cấu trúc (un-structure) ~ dữ liệu IoT
  • Dữ liệu bán cấu trúc (semi-structure) ~ email

Dữ liệu có thể đến từ rất nhiều nguồn khác nhau như:

  • Dữ liệu từ các ứng dụng, cơ sở dữ liệu quan hệ (giao dịch mua/ bán hàng
  • Một hệ thống bán lẻ, giao dịch gửi tiền vào ngân hàng, …)
  • Dữ liệu file được tạo ra bởi các log của ứng dụng (dữ liệu log ghi lại thời gian xử lý của hệ thống, …)
  • Dữ liệu thời gian thực từ các thiết bị IoT (hình ảnh theo dõi từ camera, cảm biến nhiệt độ, độ ẩm, ….)

Dữ liệu được phân loại theo tính thay đổi realtime:

  • Dữ liệu tĩnh: Là các dữ liệu được lưu trữ trên thiết bị số, analog. bao gồm hệ cơ sở dữ liệu, hệ thống tập tin. Thường được đưa vào xử lý theo lô.
  • Hầu hết các hệ thống xử lý dữ liệu đã được lưu trữ tồn tại nhiều tầng lưu trữ dữ liệu (storage tier) khác nhau, trong khi tầng xử lý dữ liệu (compute tier) thực hiện xử lý hoặc làm sạch các nguồn dữ liệu đầu vào, kết quả xử lý sẽ được lưu trữ vào một hệ thống lưu trữ khác phục vụ phân tích kết quả.
  • Dữ liệu động (Data in Motion): Dữ liệu đang xử lý, đang truyền tải trên kênh truyền như hàng đợi tin nhắn (message queues) hoặc hệ thống xử lý dữ liệu luồng (stream processing systems). Thường được đưa vào xử lý theo luồng.

Lưu trữ dữ liệu (Data Storage)

Thường được gọi là Data Lake.

Thành phần này được thiết kế để lưu trữ lại khối lượng rất lớn các loại dữ liệu với các định dạng khác nhau được sinh ra bởi nguồn dữ liệu (Data Source) trong mô hình xử lý dữ liệu theo lô (Batch Processing).

Mô hình phổ biến cho thành phần này là các hệ thống lưu trữ file phân tán trên nhiều node khác nhau trong 1 cụm (cluster), đảm bảo cho khả năng xử lý lượng rất lớn các file dữ liệu cũng như tính an toàn của dữ liệu (replica). Apache Hadoop HDFS đang được sử dụng phổ biến để implement thành phần này trong các hệ thống Big Data.

Các công nghệ sử dụng:

  • Azure Data Lake Store
  • Blob containers

Batch Processing

Xử lý hàng loạt (Batch processing việc thực hiện hàng loạt công việc trong một chương trình trên máy tính mà không có sự can thiệp thủ công (không tương tác). …

Đối lập với batch processing là interactive processing: chương trình cần trao đổi với nhân viên trong quá trình xử lý thông tin.

Ví dụ: Trong quá trình mở 1 tài khoản trong ngân hàng, chương trình phải cần nhân viên nhập vào những thông tin của khách hàng qua màn ảnh. Khi có đủ hồ sơ nó sẻ thông báo với nhân viên rằng tài khoản khách hàng đã được mở với số tài khoản là xxxxx. Trong cách xử lý này có sự trao đổi giữa nhân viên và máy để tiến triển một việc nào đó

Xử lý hàng loạt có những lợi ích sau:

  • Nó có thể thay đổi thời điểm xử lý công việc để khi tài nguyên máy tính ít bận rộn.
  • Nó tránh cho các tài nguyên máy tính chạy không với sự can thiệp và giám sát thủ công từng phút từng phút.
  • Nó cho phép hệ thống sử dụng những ưu tiên khác nhau cho công việc tương tác và không tương tác.
  • Thay vì chạy một chương trình nhiều lần để xử lý một tiến trình xử lý mỗi lần, quy trình batch sẽ chạy chương trình chỉ một lần cho nhiều tiến trình thực hiện, làm giảm phụ phí hệ thống.

Nó cũng có nhiều nhược điểm, ví dụ người dùng không thể chấm dứt một quá trình trong quá trình thực hiện, và phải đợi cho đến khi thực hiện hoàn tất.

Thành phần này cho phép xử lý một lượng lớn dữ liệu thông qua việc đọc dữ liệu từ các file nguồn, lọc dữ liệu theo các điều kiện nhất định, tính toán trên dữ liệu, và ghi kết quả xuống 1 file đích.

Trong thành phần này bạn có thể sử dụng:

  • Spark, Hive, MapReduce, … với nhiều ngôn ngữ lập trình khác nhau như Java, Scala hoặc Python.
  • Map/Reduce Job trong HDInsight Hadoop cluster hoặc sử dụng Java, Scala, Python trong HDInsight Spark cluster.

Thu thập dữ liệu thời gian thực (Real-time Message Ingestion)

Như đã nói ở trên, dữ liệu được sinh ra từ nguồn (Data Source) có thể bao gồm dữ liệu thời gian thực (ví dụ từ các thiết bị IoT) do đó thành phần này cho phép một hệ thống Big Data có thể thu thập và lưu trữ các loại dữ liệu trong thời gian thực phục vụ cho việc xử lý dữ liệu theo luồng (Streaming Processing).

Công nghệ phổ biến nhất chắc các bạn hay nghe đến:

  • Kafka
  • RabbitMQ, ActiveMQ, … và gần đây là Apache Pulsar với so sánh nhanh hơn 2.5 lần và độ trễ thấp hơn 40% so với Kafka.
  • Azure IoT Hubs
  • Azure Event Hubs

Xử lý dữ liệu theo luồng (Stream Processing)

Tương tự như việc xử lý dữ liệu theo lô (Batch Processing), sau khi thu thập dữ liệu thời gian thực, dữ liệu cũng cần phải được lọc theo các điều kiện nhất định, tính toán trên dữ liệu, và ghi kết quả dữ liệu sau khi được xử lý.

Chúng ta có thể nhắc đến:

  • Apache Storm,
  • Spark Streaming trong HDinsight cluster

Lưu trữ dữ liệu phân tích (Analytical Data Store)

Chịu trách nhiệm lưu trữ dữ liệu đã được xử lý theo định dạng có cấu trúc để phục vụ cho các công cụ phân tích dữ liệu (BI Tools).

Lớp này còn được gọi là Data WareHouse.

Dữ liệu có thể được lưu trữ dưới dạng OLAP trong thiết kế Kimball (cho bạn nào chưa biết thì Kimball là một trong 3 phương pháp luận khi thiết kế 1 data warehouse: Inmon, Kimball và Data Vault) hoặc dữ liệu có thể lưu trữ bằng các công nghệ NoQuery như HBase, Cassandra, …

Các công nghệ sử dụng:

  • HDInsight hỗ trợ Interactive Hive, HBase, và Spark SQL sử dụng để lưu trữ dữ liệu phục vụ phân tích

Lớp phân tích và báo cáo (Analysis and Reporting)

Thành phần này đáp ứng việc tự khai thác dữ liệu data self-service. Cho phép người dùng cuối trực quan hóa dữ liệu (data visualization), phân tích dữ liệu, cũng như kết xuất các báo cáo khác nhau.

Công nghệ được sử dụng:

  • Open source tool như D3.JS, Dygaphs
  • Tableau, Power BI, Excel …, hay bạn có thể tự code bằng các ngôn ngữ Python, R, …

Điều phối (Orchestration)

Thành phần này có nhiệm vụ điều phối các công việc trong một hệ thống Big Data để đảm bảo luồng xử lý dữ liệu được thông suốt, từ việc thu thập dữ liệu, lưu trữ dữ liệu đến lọc, tính toán trên dữ liệu.

Các công nghệ sử dụng:

  • Apache Oozie, Airflow, Sqoop
  • Azure Data Factory

Tham khảo

https://vieclamit.careerbuilder.vn/advices/he-thong-xu-ly-du-lieu-luong-va-kien-truc.35A4E9A2.html

Leave a Reply

Your email address will not be published. Required fields are marked *