Hệ thống phân tích tình trạng giao thông: Ứng dụng công cụ xử lý dữ liệu...

43
Hệ thống phân tích tình trạng giao thông Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực Sinh viên thực hiện: Trương Hoàng Linh– 20102688 Bùi Duy Khánh - 20101702 Giáo viên hướng dẫn: TS. Trần Việt Trung

Transcript of Hệ thống phân tích tình trạng giao thông: Ứng dụng công cụ xử lý dữ liệu...

Page 1: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Hệ thống phân tích tình trạng giao thông Ứng dụng công cụ xử lý dữ liệu lớn thời

gian thực

Sinh viên thực hiện: Trương Hoàng Linh– 20102688 Bùi Duy Khánh - 20101702

Giáo viên hướng dẫn: TS. Trần Việt Trung

Page 2: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Nội Dung

Thiết kế hệ thống

Lựa chọn công nghệ

Tích hợp hệ thống

Khai phá dữ liệu

Thử nghiệm và đánh giá

Giới thiệu chung

Kết luận2

Page 3: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Nội Dung

Thiết kế hệ thống

Lựa chọn công nghệ

Tích hợp hệ thống

Khai phá dữ liệu

Thử nghiệm và đánh giá

Giới thiệu chung

Kết luận

Giới thiệu chung

3

Page 4: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Đặt vấn đề

Hiện trạng giao thông Cơ sở hạ tầng Ý thức người tham gia giao thôngÞ Ùn tắc trầm trọng

Thu thập dữ liệu giao thông (91/2009/NĐCP) 150.000 phương tiện lắp đặt

thiết bị GPS (2011), thêm 15.000 phương tiện mỗi năm Gửi dữ liệu 30s/lần. Þ Dữ liệu lớn, liên tục

4

Page 5: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Giải pháp

5

HỆ THỐNG

XỬ LÝ DỮ LIỆU GIAO

THÔNG

Xử lý thời gian thực

Độ tin cậy

Hiển thị trực quan

Page 6: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Kết quả đạt được

Giao diện trang chủ

6

Page 7: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Kết quả đạt được

Giao diện hiển thị tình trạng giao thông thời gian thực

7

Page 8: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Kết quả đạt được

Giao diện tìm đường đi

8

Page 9: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Các bước thực hiện đồ án

Phân tích dữ liệu thô Xây dựng hệ thống

• TÌm hiểu

Khai phá dữ liệu

Hiển thị So sánh, đánh giá

9

Phương pháp Map matching

Page 10: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Nội Dung

Thiết kế hệ thống

Lựa chọn công nghệ

Tích hợp hệ thống

Khai phá dữ liệu

Thử nghiệm và đánh giá

Giới thiệu chung

Kết luận

Thiết kế hệ thống

10

Page 11: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Thiết kế hệ thống

Mô hình tổng thể của hệ thống11

Đảm bảo:

- Không mất mát dữ liệu

- Xử lý dữ liệu thời gian thực

- Lưu trữ kết quả xử lý

Page 12: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Khối khai phá dữ liệu – Mô hình chi tiết

Mô hình chi tiết khối khai phá dữ liệu

-Thông lượng cao

-Không mất mát dữ liệu

-Dễ dàng mở rộng

-Xử lý nhanh chóng

-Khả năng xử lý liên tục

-Dễ dàng mở rộng

-Khả năng chịu lỗi

Thông lượng cao

-Lưu trữ khối lượng dữ liệu lớn

-Dễ dàng mở rộng

-Ghi dữ liệu nhanh chóng

12

Page 13: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Nội Dung

Thiết kế hệ thống

Lựa chọn công nghệ

Tích hợp hệ thống

Khai phá dữ liệu

Thử nghiệm và đánh giá

Giới thiệu chung

Kết luận

Lựa chọn công nghệ

13

Page 14: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Hệ thống truyền thông điệp phân tán Thành phần

• Topic• Broker• Partition• Producer• Consumer

Đặc điểm• Khả năng mở rộng • Thông lượng cao • Độ tin cậy

Kiến trúc của Kafka

Hàng đợi thông điệp – Apache Kafka

14

Page 15: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Xử lý luồng dữ liệu phân tán – Spark Streaming

Apache Spark Thành phần chính

Mô hình hoạt động trên cụm

15

RDD

-Tập hợp dữ liệu đầu vào-Chia thành các partition-Phân phối trên các node-Xử lý trên bộ nhớ trong

-Lưu lại các thao tác sinh ra nó

nhanh

Driver

Worker

-Lập lịch, điều phối nhiệm vụ

-Thực hiện nhiệm vụ-Lưu trữ dữ liệu RDD (cache)-Lưu trữ dữ liệu đầu vào

Chịu lỗi

API mức cao Thuận tiện, dễ dàng

Page 16: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Xử lý luồng dữ liệu phân tán – Spark Streaming

Kiến trúc của Spark Streaming

16

Xử lý liên tụcRDD

DStream

Page 17: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Xử lý luồng dữ liệu phân tán – Spark Streaming

Áp dụng một thao tác biến đổi trên DStream

17

Page 18: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Cơ sở dữ liệu - MongoDb

Dễ sử dụng

Đảm bảo cơ chế ghi tốc độ cao và tin cậy

Các thành phần chính Collection

Document

18

Page 19: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Xử lý luồng dữ liệu phân tán – Apache Storm Hệ thống tính toán phân tán mã nguồn mở thời

gian thực miễn phí

Kiến trúc của Apache Storm

Page 20: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Các thành phần chính Topology

• Đồ thị tính toán xử lý các luồng dữ liệu liên tục• Các thành phần

– Spout– Bolt– Các liên kết– Bộ phận giám sát lỗi

Xử lý luồng dữ liệu phân tán – Apache Storm

Chịu lỗi

Tốc độ xử lý nhanh

Spout A

Bolt B

Bolt D

Bolt C

Page 21: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Cơ sở dữ liệu - Geomesa

Đánh chỉ mục dữ liệu theo tọa độ

Hệ sinh thái Accumulo

Cơ sở dữ liệu Geomesa

Page 22: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Nội Dung

Thiết kế hệ thống

Lựa chọn công nghệ

Tích hợp hệ thống

Khai phá dữ liệu

Thử nghiệm và đánh giá

Giới thiệu chung

Kết luận

Tích hợp hệ thống

22

Page 23: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Tích hợp hệ thống

23

Page 24: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Spark Streaming

24

1429847742000,D5DAE94,106.71582139756944,10.747578125,11.1

<32578711-1, (1/39.5,1) ><0, (1/11.2,1) >

<32578711-1, (1/39.5,1) >

<32578711-1, (4.8,200) >

<32578711-1, (41.67 ,200) >

32578711-1-41.67-200

Page 25: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Mô-đun kết nối

25

Page 26: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Kafka Spout

Reverse GeoCode

Bolt

Statistic Bolt

Kafka Bolt

Storage Bolt

1429847742000,D5DAE94,106.71582139756944,10.747578125,11.1

<32578711-1,(1/39.5)>

32578711-1-41.67-200

32578711-1-41.67-200

1429847742000,D5DAE94,106.71582139756944,10.747578125,11.1

Apache Storm

Page 27: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Nội Dung

Thiết kế hệ thống

Lựa chọn công nghệ

Tích hợp hệ thống

Khai phá dữ liệu

Thử nghiệm và đánh giá

Giới thiệu chung

Kết luận

Khai phá dữ liệu

27

Page 28: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Cơ sở lý thuyết

28

Định dạng dữ liệu

Trong đó: time_stamp: Thời gian dữ liệu GPS được gửi

lên car_id: Id của xe lon: Kinh độ lat: Vĩ độ Speed: Tốc độ của xe

Page 29: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Cơ sở lý thuyết

Ánh xạ tọa độ vào đường

Phương pháp ánh xạ tọa độ điểm-điểm Tính vận tốc trung bình

Vận tốc của một phương tiện giao thông

Vận tốc trung bình trong khoảng thời gian ti

 

29

Page 30: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Tiền xử lý dữ liệu

Cấu trúc dữ liệu bản đồ OSM

Trích xuất dữ liệu

30

Page 31: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Khai phá dữ liệuThuật toán ánh xạ tọa độ sử dụng cây k-d

Thuật toán tìm láng giềng gần nhất trên cây k-d

Thuật toán ánh xạ tọa độ vào đường• Hệ tọa độ: Cartesian• Thuật toán

31

Page 32: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Nội Dung

Thiết kế hệ thống

Lựa chọn công nghệ

Tích hợp hệ thống

Khai phá dữ liệu

Thử nghiệm và đánh giá

Giới thiệu chung

Kết luận

Thử nghiệm và đánh giá

32

Page 33: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Thử nghiệm và đánh giá

Cài đặtKết quả thử nghiệmDữ liệu thử nghiệmKết quả

33

Page 34: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Thử nghiệm và đánh giá

So sánh Spark và Storm

34

3.200.000 bản ghi 8.500.000 bản ghi0

5

10

15

20

25

Đỗ trễ

3.200.000 bản ghi 8.500.000 bản ghi0

100

200

300

400

500

600

700

800

900

1000

Tốc độ xử lý

Spark StreamingStorm

Page 35: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Kết quả đạt được

So sánh Spark Streaming và Storm

35

3.200.000 bản ghi 8.500.000 bản ghi0

5

10

15

20

25

Đỗ trễ(giây)

3.200.000 bản ghi 8.500.000 bản ghi0

100200300400500600700800900

1000

Tốc độ xử lý

Spark StreamingStorm

(giây)

Page 36: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Tích hợp hệ thống

Cải tiến đảm bảo dữ liệu được xử lý duy nhất. Vấn đề của Spark Streaming với Kafka dùng bộ nhận:

• Dữ liệu nhận từ Kafka có thể trùng lặp

• Kết quả ra hệ thống ngoài có thể không đầy đủ.

Phương pháp:

1. Xây dựng mô-đun lấy dữ liệu cùng id trong Kafka

2. Tạo transaction với id đó, đẩy dữ liệu kết quả vào mongodb

3. Hệ thống lỗi => dùng id cũ trong mongodb => lấy dữ liệu và xử lý

lại

36

Page 37: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Nội Dung

Thiết kế hệ thống

Lựa chọn công nghệ

Tích hợp hệ thống

Khai phá dữ liệu

Thử nghiệm và đánh giá

Giới thiệu chung

Kết luận Kết luận37

Page 38: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Kết luận

Kết quả đạt đượcNhững điểm hạn chếĐịnh hướng phát triển

38

Page 39: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Tài liệu tham khảo Andrew W.Moore: An introductory tutorial on kd-tree, Cargeghie Mellon

University, Canada Robert F. Sproull: Refinements to Nearest-Neighbor Searching in k-

Dimensional Trees. M. Otair: Approximate k-nearest neighbour based spatial clustering using k-d

tree. International Journal of Database Management Systems 5(1) (2013). P. Taylor Goetz, Hortonworks: Apache Storm and Apache Spark Streaming

Compared. Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia: Learning

Spark, Lightning- Fast Big Data Analysis. Ugur Demiryurek, Farnoush Banaei-Kashani, Cyrus Shahabi, and Anand

Ranganathan: Online Computation of Fastest Path in Time-Dependent Spatial Networks, University of Southern California- Department of Computer Science Los Angeles, CA USA.

https://www.openstreetmap.org/ Nguyễn Đức Vinh, Hệ thống phân tích tình trạng giao thông – Xây dựng ứng

dụng phía người dùng, Đồ án tốt nghiệp Kỹ sư, Trường Đại học Bách Khoa Hà Nội, Việt Nam, 2015

39

Page 40: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

www.themegallery.com

Cảm ơn thầy cô và các bạn đã lắng nghe!

Page 41: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Cải tiến

41

Spark StreamingKafka

Thông điệp

Nhận và sao chép

Vấn đề của Spark Streaming với Kafka dùng bộ nhận Có thể trùng lặp dữ liệu đầu vào

Thông báo

Trùng lặp dữ liệu đầu vào

Page 42: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Cải tiến

42

Spark StreamingKafka

Thông điệp

Tôi xử lý xong lô này

rồi

Spark Streaming lỗi, dữ liệu đẩy ra chưa hết

Vấn đề của Spark Streaming với Kafka dùng bộ nhận Có thể mất dữ liệu kết quả

Tôi đẩy dữ liệu ra

Page 43: Hệ thống phân tích tình trạng giao thông:  Ứng dụng công cụ xử lý dữ liệu lớn thời gian thực

Cải tiến

43

Giải pháp .

1. Viết lại bộ nhận2. Tạo transaction

<id đầu, Thông điệp>………………………………………………………………………

<id cuối, Thông điệp>

RDD

Spark Streaming

<id, Thông điệp>

Kafka

Khởi tạo transaction

<id transaction, id đầu, id cuối, trạng thái>

PROCESSING

FINISH