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ý
Trang 1MÔ HÌNH BIG DATA
1 Mô hình kỹ thuật tổng thể
1.1 Mô hình
Real time Data
(Sensor,
IoT,GPS« )
Batch Data
(Web,
Application,Social
feed )
Apache Kafka
Apache Storm
Apache Spark
Real time View Elatic search
MongoDB
OPERATION (Zookeeper)
Spark Streaming
User device (Cellphone, Tablet,« )
Analytics Dashboard HDFS (Hadoop Distributed File System)
1.2 Mô tả
1.1.1 Dữ liệu đầu vào (input data)
Tùy vào mục đích và ứng dụng mà có thể chia thành 2 dạng khác nhau:
- Batch data: dữ liệu thu thập từ web, application, social network… thường được xử lý một
cách tuần tự, không đòi hỏi tốc độ xử lý quá cao
- Real time data: dữ liệu thu thập từ sensor, GPS, các hệ thống IOT,…đòi hỏi tốc độ xử lý cao,
cho phản hồi ngay lập tức
1.1.2 Data Collecting
Apache Kafka làm nhiệm vụ thu thập dữ liệu từ các nguồn thông qua các API đổi với cả Batch Data và Realtime Data
1.1.3 Processing
- Batch Data sẽ được xử lý bởi Apache Spark
- Realtime data sẽ được xử lý bởi Spark Streaming hoặc Apache Storm
Trang 21.1.4 Storage
Dùng MongoDB
1.1.5 Operation
- Zookeeper quản lý Apache Akafka và Apache Storm
- Apache Spark không chịu quản lý của Zookeeper, Apache Spark có Spark Core để tự quản lý
cho riêng minh
2 Mô hình kinh doanh tổng thể
1.3 Mô hình
INPUT DATA
Hybrid box
VOD
Ad network
Mobile App
(Android, iOS)
Web App
(TV24)
DATA COLLECTING
Process collect
Process for realtime data (1)
Process for batch data (1)
Process for realtime data (2)
Process for batch data (2)
Process for realtime data (n)
Process for batch data (n)
STORAGE
NoSQL
USER
Analytics Dashboard
Customer
Orther deparment User device
Output data based on customer fee and demand Output data based on customer fee and demand
1.4 Mô tả
2.1.1 Input data
SCTV hiện đang có hơn 2.3 triệu khách hàng sử dụng các dịch vụ truyền hình, internet do chính SCTV phát triển Do đó, SCTV nắm giữ một khối lượng dữ liệu thô đầu vào rất lớn, các dữ liệu này thu tập từ các nguồn:
Trang 3- Hybrid STB
- VOD
- Ad network
- Mobile app (Android và iOS)
- Web app (TV24)
2.1.2 Data collecting
- Dữ liệu thu thập từ các nguồn phân tán và được tiếp nhận tại server làm nhiệm vụ thu thập dữ
liệu (Apache Kafka) của SCTV thông qua các API kết nối tới các app, các dịch vụ do SCTV cung cấp
- Dữ liệu ngay khi thu tập này chủ yếu là dữ liệu thô (raw data) nhưng đã có thể kinh doanh vì
nó chứa thông tin khách hàng như: mail, số điện thoại…Từ các thông này, đã có thể 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 khi có được dữ liệu thô, dữ liệu sẽ được chuyển đến các server chuyên dụng để xử lý Có hai hình thức xử lý dữ liệu:
- Realtime data: dành cho các ứng dụng đòi hỏi phải có đáp ứng nhanh, tức thời như GPS,
Sensor, IoT…
- Batch data: dành cho ứng dụng không đòi hỏi tốc độ xử lý cao
Dữ liệu tại đây sẽ trải qua các giai đoạn phân tích (analytics), máy học (machine learn)…để tiến hành trích xuất được nhu cầu, hành vi của khách hàng Tạo tiền đề để SCTV cung cấp các dịch vụ phù hợp với mong muốn khách hàng Bên cạnh đó, SCTV còn có thể hợp tác với các đối tác thông qua nguồn tài nguyên dữ liệu này
2.1.4 Storage
Lưu trữ dữ liệu đã phân tích
Trang 43 Quy trình xử lý (data pipeline)
1.5 Apache Kafka
3.1.1 Mô hình multiple nodes – multiple broker clusters
PRODUCERS
PRODUCERS
PRODUCERS
ZooKeeper
NODE 1
BROKER 1
BROKER 2
NODE 2 (Kakfa cluster) BROKER 1
BROKER 2
CONSUMERS
CONSUMERS
CONSUMERS
TOPIC
ZOOKEEPER (Stores information about cluster status and consumer offsets)
Một Kafka cluster gồm 5 thành phần chính:
- Topic:
(published) bởi các message producers
Trang 5 Trong Kafka, Topics được phân vùng và mỗi phân vùng sẽ đại diện bằng một trình tự không thể thay đổi thứ tự của message
trong phân vùng sẽ được gán một sequential ID duy nhất gọi là offset
BROKER
KAFKA TOPIC
Partition 1
Partition 2
Partition 3
Partition 4
- Broker:
Một Kafka cluster (Node) chứa một hoặc nhiều servers mà có thể có một hoặc nhiều server process running được gọi là Broker Topic được tạo trong khi broker processes
- ZooKeeper:
phân tầng của name space của các thanh ghi dữ liệu (data register – gọi là znodes), giống như một file system
liệu liên kết với nó và znodes bị giới hạn số dữ liệu nó có thể có ZooKeeper được
Trang 6thiết kế để lưu trữ dữ liệu phối hợp: status information, configuration, location information,…
- Producers:
Publish data cho các topic bằng cách chọn các phân vùng thích hợp trong Topic
- Consumer:
Là các Application hoặc Process nhận dữ liệu từ đầu ra topic
3.1.2 Mô hình input – output chi tiết
PRODUCERS
PRODUCERS
PRODUCERS
CONSUMERS (Realtime data)
CONSUMERS (Batch data)
RAW DATA
(Mobile app)
RAW DATA
(Ad network)
RAW DATA
(Web app)
API
API
API
Partition 1
Partition 2
ZooKeeper
3.1.3 Programming
3.1.3.1 Write producers
a) Mô hình
Trang 7DATA
Create message messagePublish KAFKA
CLUSTER
b) Chi tiết:
- Producers là một application để create message và publish message vào Kafka broker.
- Producer kết nối tới bất kỳ alive nodes và requests metadata về leaders cho các phân vùng
(partitions) của topic Điều này cho phép producer đẩy message trực tiếp cho lead broker cho các phân vùng
3.1.3.2 Write consumers
a) Mô hình:
CONSUMER KAFKA
CLUSTER
Subscribe Message
Process
b) Chi tiết:
- Consumers là những ứng dụng sử dụng các message được published bởi Kafka producers và
process data extract từ nó
Trang 8- Sơ đồ trên giải thích high-level working của Kafka consumer trong việc sử sụng các message
message (message partition) cụ thể bằng cách chỉ rõ các message offset (beginning position of message offset)
message sau khi vị trí hiện tại của nó (current position) trong Kafka log (Kafka internal data repsentation)
về leaders cho phân vùng của topic (partitions of a topic)
tiêu thụ (consumed) bởi một consumer duy nhất
comsumed tiếp theo Điều này thể hiện trạng thái về những gì đã được tiêu thụ cũng như cung cấp sự linh hoạt khi cố tình quay lại một offset cũ và re-consuming partition 1.6 Apache Spark
3.1.4 Giới thiệu
- Apache Spark là một công nghệ điện toán cụm nhanh như chớp, được thiết kế để tính toán
nhanh
- Nó dựa trên Hadoop MapReduce và nó mở rông mô hình MapReduce để sử dụng một cách
hiệu quả cho nhiều loại tính toán, trong đó bao gồm các truy vấn tương tác (interactive
queries) và stream processing Các tính năng chính của Spark là điện toán cụm trong bộ nhớ (in-memory cluster computing) làm tăng tốc độ xử lý của một ứng dụng
- Spark không chỉ hỗ trợ “Map” và “Reduce” Nó cũng hỗ trợ các truy vấn SQL (SQL queries),
Streaming data, Machine learning (ML), và các đồ thị thuật toán (Graph algorithms)
Sơ đồ dưới đây cho thấy 3 cách để Spark có thể được built với Hadoop components:
Trang 9Có 3 cách để triển khai Spark như:
- Standalone: Spark Standalone triển khai độc lập có nghĩa là Spark chiếm vị on top của HDFS (Hadoop Distributed File System) và không gian được phân bổ cho HDFS, một cách rõ
ràng
- Hadoop Yarn: triển khai đơn giản, spark chạy trên Yan không cần cài đặt trước
(pre-installation) hoặc yêu cầu root access Nó giúp tích hợp Spark vào Hadoop (Hadoop
ecosystem) hoặc Hadoop stack
- Spark trong MapReduce (SIMR) được sử dụng để khởi động spark job ngoài triển khai
standalone Với SIMR, người dùng có thể bắt đầu Spark và sử dụng shell cùa nó mà không cần bất kỳ quyền admin
Minh họa sau đây mô tả các thành phần khác nhau của Spark:
Trang 10- Spark Core là engine chung cho nền tảng spark và tất cả các chức năng khác được xây dựng
dựa trên nó Nó cung cấp tính toán In – memory và tập hợp các dữ liệu tham chiếu đến các hệ thống lưu trữ bên ngoài
- Spark SQL là một thành phần on top của Spark Core đưa ra một khái niệm dữ liệu trừu tượng
mới là SchemaRDD, hỗ trợ dữ liệu có cấu trúc (structured) và 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 hiện phân tích trực
tuyến Nó ingest data trong mini-batches và thực hiện chuyển đổi RDD (Resilient Distributed Databased – Phân tán dữ liệu đàn hồi) trên những mini-batches của data
- Mllib (Machine Learning Library) là một machine learning framework phân phối trên Spark
vì kiến trúc Spark dựa trên bộ nhớ phân tán
- GraphX là một graph-processing phân tán trên của Spark Nó cung cấp một API để thể hiện biểu đồ tính toán rằng có thể mô hình hóa đồ thị người dùng định nghĩa bằng cách sử dụng Pregel API trừu tượng
Trang 113.1.5 Apache Spark tích hợp với Apache Kafka
- Spark streaming API cho phép khả năng mở rộng, thông lượng cao, 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 Đây là một bộ sưu tập phân phối bất biến của các đối
tượng Mỗi bộ dữ liệu trong 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 hoặc lưu trữ trong HDFS, cơ sở dữ liệu hoặc biểu đồ
1.7 Apache Storm
3.1.6 Giới thiệu
- Apache Storm thường được sử dụng để tính toán dữ liệu thời gian thực.
- Storm cho phép chạy “topologies” (graphs of computation) trên “storm cluster”.
Trang 12- Storm cluster bao gồm:
toán thực tế, thì running on supervisor nodes)
NIMBUS
ZooKeeper
ZooKeeper
ZooKeeper
Supervisor Supervisor Supervisor
Supervisor
Supervisor
- Một storm topology (graph of computation) là một loại real – time 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”
- Storm topology được đóng gói trong một file jar, sau đó được submitted tới Nimbus node.
Trang 13Storm Topology
NIMBUS
ZooKeeper
ZooKeeper
ZooKeeper
Supervisor Supervisor Supervisor
Supervisor
Supervisor
Submit
Spout
Spout
Bolt
Bolt
Bolt
Bolt
- VD: một basic totology của Storm
SPOUT
³ the cow jumped over the moon´
³ an apple a day keeps the doctor away´
³ four score and seven years ago´
³ snow white and the seven dwarfs´
³ i am at two nature´
Splitter
³ snow´ , ³ white´ ,
³ and´³ the´ , ³ seven´ ,
³ dwarfs´
Splitter
³ four´ , ³ score´,
³ and´ , ³ seven´,
³ years´ , ³ ago´
Splitter
³ the´ , ³ cow´,
³ jumped´, ³ over´,
³ the´ , ³ moon´
Counter
³ snow´ - 1
³ four´ - 1
Counter
³ white´ - 1
³ score´ - 1
Counter
³ and´ - 2
³ years´ - 1
Counter
³ the´ - 3
³ cow´ - 1
Couter
³ dwarfs´ - 1
³ over´ - 1
³ moon´ - 1
Counter
³ seven´ - 2
³ jumped´ - 1
Trang 143.1.7 Apache Storm tích hợp với Apache Kafka
Kafka Consumer
(realtime data)
Kafka Spout
Kafka Spout
BOLT
BOLT
BOLT
BOLT
BOLT
BOLT
BOLT
MongoDB
USER
User device (Cellphone, Tablet,« ) Analytics Dashboard