Tải bản đầy đủ (.docx) (14 trang)

MÔ HÌNH TỔNG THỂ BIG DATA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (545.25 KB, 14 trang )

MÔ HÌNH BIG DATA
1 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 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


1.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

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:


-

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.


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 5 thành phần chính:
-

Topic:
• Topic là danh mục (category) hoặc feed name (tên nguồn cấp dữ liệu) được công bố
(published) bởi các message producers.


• 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.
• Kafka cluster duy trì phân vùng log (partitioned log) cho mỗi topic. Mỗi message
trong phân vùng sẽ được gán một sequential ID duy nhất gọi là offset.
• Kafka Topics được tạo trên Kafka Broker hoạt động như Kafka server.

-

-

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ục vụ như một interface phối hợp giữa Kafka broker và consumers.
• ZooKeeper cho phép phân phối các process phối hợp với nhau thông qua sự chia sẻ có
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.
• Điểm khác nhau giữa ZooKeeper và filesystem tiêu chuẩn là mỗi znode có thể có dữ
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
thiế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

3.1.3 Programming
3.1.3.1 Write producers
a) Mô hình


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:

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ó.
Sơ đồ trên giải thích high-level working của Kafka consumer trong việc sử sụng các message



• Consumer sẽ đăng kí nhận (subcribes) message từ một topic cụ thể trên Kafka broker.
• Sau đó, consumer đưa ra một request yêu cầu lead broker để dẫn đến một phân vùng
message (message partition) cụ thể bằng cách chỉ rõ các message offset (beginning
position of message offset).
• Do đó, Kafka consumer hoạt động như pull model và luôn luôn kéo tất cả available
message sau khi vị trí hiện tại của nó (current position) trong Kafka log (Kafka
internal data repsentation)
• Trong khi subscribing, consumer kết nối tới bất kì live nodes nào và request metadata
về leaders cho phân vùng của topic (partitions of a topic).
• Điều này cho phép consumer giao tiếp trực tiếp với lead broker tiếp nhận tin nhắn.
• Kafka topic được chia thành các phân vùng đã sắp xếp thứ tự và mỗi phân vùng được
tiêu thụ (consumed) bởi một consumer duy nhất.
• Khi một partition đã được consumed, consumer thay đổi message offset tới phân vùng
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:


Có 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 (preinstallation) 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:



-

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.



3.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”.
Storm cluster bao gồm:



• Master node gọi là Nimbus
• Slave nodes gọi là supervisor hoặc worker (trong thực tế, workers, làm công việc tính
toán thực tế, thì running on supervisor nodes).
• Coordination nodes (Node phối hợp) dựa trên Apache Zookeeper

-

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”.
• 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 ngẫu nhiên đến cho Bolts
• Bolts làm nhiệm vụ cắt chuỗi thành các word và đếm số lần xuất hiện của các word.


3.1.7 Apache Storm tích hợp với Apache Kafka




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×