Mô hình tổng thế Big DataSơ đồ kết nối MySQL Apache Kafka Apache Spark Apache Storm Mongo DBTìm hiểu về phương thức hoạt động của:Apache Kafka Apache SparkApache StormThuật toán thu dữ liệu thô xử lý
MÔ HÌNH BIG DATA Mô hình kỹ thuật tổng thể 1.1 Mô hình 1.2 Mô tả 1.1.1 Dữ liệu đầu vào (input data) Tùy vào mục đích ứng dụng mà chia thành dạng khác nhau: - Batch data: liệu thu thập từ web, application, social network… thường xử lý - cách tuần tự, không đòi hỏi tốc độ xử lý cao Real time data: liệu thu thập từ sensor, GPS, hệ thống IOT,…đòi hỏi tốc độ xử lý cao, cho phản hồi 1.1.2 Data Collecting Apache Kafka làm nhiệm vụ thu thập liệu từ nguồn thông qua API đổi với Batch Data Realtime Data 1.1.3 Processing - Batch Data xử lý Apache Spark Realtime data xử lý Spark Streaming Apache Storm 1.1.4 Storage Dùng MongoDB 1.1.5 Operation - Zookeeper quản lý Apache Akafka Apache Storm Apache Spark không chịu quản lý Zookeeper, Apache Spark có Spark Core để tự quản lý cho riêng minh Mô hình kinh doanh tổng thể 1.3 Mô hình 1.4 Mô tả 2.1.1 Input data SCTV có 2.3 triệu khách hàng sử dụng dịch vụ truyền hình, internet SCTV phát triển Do đó, SCTV nắm giữ khối lượng liệu thô đầu vào lớn, liệu thu tập từ nguồn: - Hybrid STB VOD Ad network Mobile app (Android iOS) Web app (TV24) 2.1.2 Data collecting - Dữ liệu thu thập từ nguồn phân tán tiếp nhận server làm nhiệm vụ thu thập liệu (Apache Kafka) SCTV thông qua API kết nối tới app, dịch vụ SCTV - cung cấp Dữ liệu thu tập chủ yếu liệu thô (raw data) kinh doanh chứa thông tin khách hàng như: mail, số điện thoại…Từ thông này, cung cấp cho đối tác muốn quảng cáo, makerting trực tiếp đến khách hàng 2.1.3 Process Sau có liệu thô, liệu chuyển đến server chuyên dụng để xử lý Có hai hình thức xử lý liệu: - Realtime data: dành cho ứng dụng đòi hỏi phải có đáp ứng nhanh, tức thời GPS, - Sensor, IoT… Batch data: dành cho ứng dụng không đòi hỏi tốc độ xử lý cao Dữ liệu trải qua giai đoạn phân tích (analytics), máy học (machine learn)…để tiến hành trích xuất nhu cầu, hành vi khách hàng Tạo tiền đề để SCTV cung cấp dịch vụ phù hợp với mong muốn khách hàng Bên cạnh đó, SCTV hợp tác với đối tác thông qua nguồn tài nguyên liệu 2.1.4 Storage Lưu trữ liệu phân tích 3 Quy trình xử lý (data pipeline) 1.5 Apache Kafka 3.1.1 Mô hình multiple nodes – multiple broker clusters Một Kafka cluster gồm thành phần chính: - Topic: • Topic danh mục (category) feed name (tên nguồn cấp liệu) công bố (published) message producers • Trong Kafka, Topics phân vùng phân vùng đại diện trình tự thay đổi thứ tự message • Kafka cluster trì phân vùng log (partitioned log) cho topic Mỗi message phân vùng gán sequential ID gọi offset • Kafka Topics tạo Kafka Broker hoạt động Kafka server - - Broker: Một Kafka cluster (Node) chứa nhiều servers mà có nhiều server process running gọi Broker Topic tạo broker processes ZooKeeper: • Phục vụ interface phối hợp Kafka broker consumers • ZooKeeper cho phép phân phối process phối hợp với thông qua chia sẻ có phân tầng name space ghi liệu (data register – gọi znodes), giống file system • Điểm khác ZooKeeper filesystem tiêu chuẩn znode có liệu liên kết với znodes bị giới hạn số liệu có ZooKeeper thiết kế để lưu trữ liệu phối hợp: status information, configuration, location information,… - Producers: Publish data cho topic cách chọn phân vùng thích hợp Topic Consumer: Là Application Process nhận liệu từ đầu topic 3.1.2 Mô hình input – output chi tiết 3.1.3 Programming 3.1.3.1 Write producers a) Mô hình b) Chi tiết: - Producers application để create message publish message vào Kafka broker - Producer kết nối tới alive nodes requests metadata leaders cho phân vùng (partitions) topic Điều cho phép producer đẩy message trực tiếp cho lead broker cho phân vùng 3.1.3.2 Write consumers a) Mô hình: b) Chi tiết: - Consumers ứng dụng sử dụng message published Kafka producers - process data extract từ Sơ đồ giải thích high-level working Kafka consumer việc sử sụng message • Consumer đăng kí nhận (subcribes) message từ topic cụ thể Kafka broker • Sau đó, consumer đưa request yêu cầu lead broker để dẫn đến phân vùng message (message partition) cụ thể cách rõ message offset (beginning position of message offset) • Do đó, Kafka consumer hoạt động pull model luôn kéo tất available message sau vị trí (current position) Kafka log (Kafka internal data repsentation) • Trong subscribing, consumer kết nối tới live nodes request metadata leaders cho phân vùng topic (partitions of a topic) • Điều cho phép consumer giao tiếp trực tiếp với lead broker tiếp nhận tin nhắn • Kafka topic chia thành phân vùng xếp thứ tự phân vùng tiêu thụ (consumed) consumer • Khi partition consumed, consumer thay đổi message offset tới phân vùng comsumed Điều thể trạng thái tiêu thụ cung cấp linh hoạt cố tình quay lại offset cũ re-consuming partition 1.6 Apache Spark 3.1.4 Giới thiệu - Apache Spark công nghệ điện toán cụm nhanh chớp, thiết kế để tính toán - nhanh Nó dựa Hadoop MapReduce mở rông mô hình MapReduce để sử dụng cách hiệu cho nhiều loại tính toán, bao gồm truy vấn tương tác (interactive queries) stream processing Các tính Spark điện toán cụm nhớ - (in-memory cluster computing) làm tăng tốc độ xử lý ứng dụng Spark không hỗ trợ “Map” “Reduce” Nó hỗ trợ truy vấn SQL (SQL queries), Streaming data, Machine learning (ML), đồ thị thuật toán (Graph algorithms) Sơ đồ cho thấy cách để Spark built với Hadoop components: Có cách để triển khai Spark như: - Standalone: Spark Standalone triển khai độc lập có nghĩa Spark chiếm vị on top HDFS (Hadoop Distributed File System) không gian phân bổ cho HDFS, cách rõ - ràng Hadoop Yarn: triển khai đơn giản, spark chạy Yan không cần cài đặt trước (preinstallation) yêu cầu root access Nó giúp tích hợp Spark vào Hadoop (Hadoop - ecosystem) Hadoop stack Spark MapReduce (SIMR) sử dụng để khởi động spark job triển khai standalone Với SIMR, người dùng bắt đầu Spark sử dụng shell cùa mà không cần quyền admin Minh họa sau mô tả thành phần khác Spark: - Spark Core engine chung cho tảng spark tất chức khác xây dựng dựa Nó cung cấp tính toán In – memory tập hợp liệu tham chiếu đến hệ - thống lưu trữ bên Spark SQL thành phần on top Spark Core đưa khái niệm liệu trừu tượng SchemaRDD, hỗ trợ liệu có cấu trúc (structured) bán cấu trúc (semi – - structured) Spark Streaming thúc đẩy Spark Core lập lịch trình nhanh chóng để thực phân tích trực tuyến Nó ingest data mini-batches thực chuyển đổi RDD (Resilient Distributed - Databased – Phân tán liệu đàn hồi) mini-batches data Mllib (Machine Learning Library) machine learning framework phân phối Spark - kiến trúc Spark dựa nhớ phân tán GraphX graph-processing phân tán Spark Nó cung cấp API để thể biểu đồ tính toán mô hình hóa đồ thị người dùng định nghĩa cách sử dụng Pregel API trừu tượng 3.1.5 Apache Spark tích hợp với Apache Kafka - Spark streaming API cho phép khả mở rộng, thông lượng cao, chịu lỗi xử lý dòng liệu trực tiếp Dữ liệu hấp thụ từ nhiều nguồn Kafka, Flume, Twitter, vv, xử lý thuật toán phức tạp chức cao cấp map, reduce, join and window Cuối cùng, xử lý liệu đẩy để hệ thống tập tin, sở liệu, live dash-boards Resilient Distributed Datasets (RDD) cấu trúc liệu Spark Đây sưu tập phân phối bất biến đối tượng Mỗi liệu RDD chia thành phân vùng hợp lý, mà tính - nút khác cluster Kafka messaging integration tảng cho Spark streaming Kafka hành động trung tâm trung tâm cho dòng thời gian thực liệu xử lý thuật toán phức tạp Spark Streaming Một liệu xử lý, Spark streaming công bố kết vào thêm chủ đề Kafka lưu trữ HDFS, sở liệu biểu đồ 1.7 Apache Storm 3.1.6 Giới thiệu - Apache Storm thường sử dụng để tính toán liệu thời gian thực Storm cho phép chạy “topologies” (graphs of computation) “storm cluster” Storm cluster bao gồm: • Master node gọi Nimbus • Slave nodes gọi supervisor worker (trong thực tế, workers, làm công việc tính toán thực tế, running on supervisor nodes) • Coordination nodes (Node phối hợp) dựa Apache Zookeeper - Một storm topology (graph of computation) loại real – time computation “stream” Data tuples trao đổi liệu đơn vị tính toán (computation units), gọi “spouts” - “bolts” • Spouts nguồn vô tận tuples (cung cấp liệu) • Bolts chuyển đổi (transformations) tuple (thực tính toán) Storm topology đóng gói file jar, sau submitted tới Nimbus node - VD: basic totology Storm • Spout nhận data (String) chuyển ngẫu nhiên đến cho Bolts • Bolts làm nhiệm vụ cắt chuỗi thành word đếm số lần xuất word 3.1.7 Apache Storm tích hợp với Apache Kafka [...]... chịu lỗi xử lý của các dòng dữ liệu trực tiếp Dữ liệu có thể được hấp thụ từ nhiều nguồn như Kafka, Flume, Twitter, vv, và có thể được xử lý bằng các thuật toán phức tạp như các chức năng cao cấp như map, reduce, join and window Cuối cùng, xử lý dữ liệu có thể được đẩy ra để hệ thống tập tin, cơ sở dữ liệu, và live dash-boards Resilient Distributed Datasets (RDD) là một cấu trúc dữ liệu cơ bản của Spark... RDD được chia thành các phân vùng hợp lý, mà có thể được tính trên các - nút khác nhau của cluster Kafka là messaging và integration nền tảng cho Spark streaming Kafka hành động như một trung tâm trung tâm cho dòng thời gian thực của dữ liệu và được xử lý bằng các thuật toán phức tạp trong Spark Streaming Một khi dữ liệu được xử lý, Spark streaming có thể được công bố kết quả vào thêm một chủ đề Kafka... computation “stream” Data tuples trao đổi dữ liệu giữa các đơn vị tính toán (computation units), gọi là “spouts” và - “bolts” • Spouts là nguồn vô tận của tuples (cung cấp dữ liệu) • Bolts chuyển đổi (transformations) tuple (thực hiện tính toán) Storm topology được đóng gói trong một file jar, sau đó được submitted tới Nimbus node - VD: một basic totology của Storm • Spout nhận các data (String) và chuyển