Một giải pháp đang được sử dụng rộng rãi bởi nhiều nền tảng nổi tiếng như Uber, Netflix, Pinterest là Spark Streaming, một phần mở rộng của Spark với tính khả mở và chịu lỗi cao cho phép
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2-3 Lê Phương Nam - 19133036
ĐIỂM:
NHẬN XÉT CỦA GV:
GV KÝ TÊN
Trang 3I MỞ ĐẦU 1
1.1 Lý do chọn đề tài 1
1.2 Phạm vi đề tài 1
1.3 Mục tiêu đề tài 1
II XÂY DỰNG ỨNG DỤNG MINH HỌA 3
III ĐÁNH GIÁ VÀ KẾT LUẬN 4
3.1 Kết quả đạt được 4
3.2 Hạn chế 4
3.3 Hướng phát triển 4
IV TÀI LIỆU THAM KHẢO 5
Trang 4I MỞ ĐẦU
I.1 Lý do chọn đề tài
Realtime đang dần trở thành tính năng tiêu chuẩn của các ứng dụng hiện nay Vậy làm thế nào để các mạng xã hội, nền tảng video, xử lý lượng dữ liệu lớn trong tức thì? Một giải pháp đang được sử dụng rộng rãi bởi nhiều nền tảng nổi tiếng như Uber, Netflix, Pinterest là Spark Streaming, một phần mở rộng của Spark với tính khả mở và chịu lỗi cao cho phép xử lý big data realtime
Trong phân tích dữ liệu, Spark Streaming đóng vai trò cung cấp nền tảng để đẩy dữ liệu vào các mô hình phân tích tức thời, tăng hiệu năng của mô hình
I.2 Phạm vi đề tài
Nhóm em sẽ tìm hiểu về Spark-Streaming và các thư viện, công cụ đi kèm
Từ đó xây dựng ứng dụng Phân tích số lượng các hashtag trên Twitter
I.3 Mục tiêu đề tài
Hiểu được Spark-Streaming là gì, chức năng chính
Có thêm kinh nghiệm làm việc nhóm
Xây dựng thành công 1 ứng dụng Phân tích số lượng các hashtag trên Twitter
Trang 5II TÌM HIỂU VỀ SPARK-STREAMING
II.1 Giới thiệu Spark-Streaming
Apache Spark là một công cụ phân tích hợp nhất mã nguồn mở để xử lý dữ liệu quy mô lớn Spark cung cấp một giao diện cho các cụm lập trình với tính song song
dữ liệu ngầm định và khả năng chịu lỗi
Apache Spark gồm có 5 thành phần chính : Spark Core, Spark Streaming, Spark SQL, MLlib và GraphX
Đây là công nghệ truyền dữ liệu liên tục Nếu như trước đây, khi xem 1 video, ta cần download toàn bộ video đó về thì streaming chia video thành nhiều phần nên ta chỉ cần loading trước 1 lượng dữ liệu nhỏ Hiện nay, streaming đang dần trở thành 1 phần quan trọng trong sự phát triển của Internet
Spark Streaming dựa trên Spark Core, là một phần bổ sung cho Spark để xử lý lượng dữ liệu lớn tức thì và đảm bảo chống chịu lỗi
Trang 6Spark Streaming cho phép:
1 Scaling: dễ dàng scale lên hàng nghìn node.
2 Speed: Spark Streaming có khả năng giảm độ trễn xuống mức vài trăm
milliseconds
3 Fault Tolerance: Với các hệ thống bình thường, khi 1 node bị lỗi, failed
operator sẽ được tính toán lại ở node khác Vi vậy, đôi lúc hệ thống không thể hoạt động tiếp cho đến khi node đó tính toán xong Với Spark, 1 tính toán đượcchi nhỏ thành các task con cho nhiều node Khi 1 task bị lỗi, các node khác sẽ thay thế thực hiện việc tính toán đó và do task đã rất nhỏ nên việc thực hiện lại này sẽ nhanh chóng hơn cách tiếp cận trên
4 Integration: DStream đại diện cho series các RDDs trong Spark Vì vậy, bất
cứ function nào của Apache Spark đều có thể dùng để xử dữ liệu
5 Business Analysis: Có thể các thư viện MLlib, SQL, GraphX có thể được áp
dụng để phân tích dữ liệu
II.2 Hệ thống Spark-Streaming
Tổng quan một hệ thống bao gồm 4 giai đoạn:
Trang 71 Dữ liệu đẩy vào Spark Streaming có thể đa dạng nguồn từ realtime streaming như Akka, Kafka, Flume, AWS hoặc static như HBase, MySQL,
PostgreSQL, Elastic Search, Mongo DB, Cassandra
2 Từ Spark Streaming Dữ liệu có thể được đưa vào MLlib để áp dụng các mô hình học máy
3 Hoặc dữ liệu cũng có thể đưa vào Spark SQL phục vụ cho truy vấn dữ liệu
4 Cuối cùng, sau các thao tác với dữ liệu, nó sẽ được lưu vào database hoặc file system
II.3 Xử lý Input của Spark-Streaming
Dữ liệu đi qua Spark Streaming sẽ được chia thành các batch nhỏ rồi được Spark Engine xử lý để output ra series các batch dữ liệu mới
II.4 Flask và ApecCharts
II.4.1 Flask
Flask là một Web Framework rất nhẹ của Python, dễ dàng giúp người mới bắt đầu học Python có thể tạo ra website nhỏ Flask cũng dễ mở rộng để xây dựng các
ứng dụng web phức tạp
Flask có nền tảng là Werkzeug và Jinja2 và nó đã trở thành một trong
những Web Framework phổ biến nhất của Python
Trang 8II.4.2 ApecCharts
ApexCharts.js là một thư viện JavaScript mã nguồn mở để hiển thị các biểu đồđáp ứng cho giao diện người dùng Bạn sẽ thấy nó thân thiện khi sử dụng, đặc biệt
là với tài liệu toàn diện của nó
ApexCharts.js đã nổi tiếng nhờ có các tùy chọn tùy chỉnh cho phép bạn tinh chỉnh biểu đồ của mình để thích ứng với các kích thước màn hình khác nhau mà không cần lo lắng về việc tạo kiểu thêm Nó cũng hỗ trợ nhiều loại biểu đồ được sửdụng trong hình ảnh hóa hàng ngày
Thư viện này cũng hoạt động tốt với nhiều biểu đồ Kết hợp các loại biểu đồ khác nhau trong một lưới duy nhất là một trong những điểm mạnh của nó
Trang 10III.2.1 Các file chính của ứng dụng:
a Twitter_app.py: Xử lý trên Twitter
Trang 11Chúng ta cần 4 tham số đầu vào là page(số trang), keywords (từ khóa), max_result(kết quả tối đa), sleep_time(thời gian nghỉ)
Kết nối với Twitter thông qua qua TCP
Trang 12 Header: để xác thực tài khoản twitter băng bearer_token
Để truy cập được vào Twitter cần phải có bearer_token của 1 tài khoàn
Nhóm em bỏ bearer_token trong file keys.txt
Trang 13 Keyword: từ khóa tìm kiếm, ở đây nó sẽ nhận những keyword là hashtag và ngôn ngữ english
Thiệt lập time và date: tìm kiếm
Hàm create_url: Tạo url từ key word, time, next token, max result
Các kết quả trả về được lưu vào file json
Trang 14Trong đó next_token ban đầu = 0, sau đó nó sẽ nhận next_token từ kết quả trả về làm giá trị
Trang 15Cuối cùng các dữ liệu cho spark xử lý.
b Spark_app.py: xử lý trên Spark
Tạo 1 SparkSession để quản lý và dùng các chức năng của Spark
Trang 16Sau đó, tách tứng dòng dữ liệu, rồi từ mỗi dòng tách các hashtag và nhóm theo theo số lượng
Cuối cùng là gửi dữ liệu lên server
c app.py: xử lý server web
Trang 17Dữ liệu được đưa tới server thông qua hàm “update_data” bằng phương thứcPOST
Giao diện của web sẽ nhận điểm dữ liệu hashtag từ server mỗi 2 giây/lần qua hàm “refresh_data” bằng phương thức GET
Dữ liệu sẽ được cập nhập nhiều lần tại giao diện web thông qua công cụ jinja2 template
Trang 18d index.html: vẽ biểu đồ
III.2.2 Triển khai ứng dụng
B1 chạy Twitter_app.py với các 4 tham số (số trang và từ khóa nhất định phải có)python3 /twitter_app.py -p 50 -k "corona bitcoin gaming Android"
B2 chạy spark_app.py
python3 /spark_app.py
Trang 19B3 chạy app.py
III.2.3 Kết quả ứng dụng
Trang 20IV ĐÁNH GIÁ VÀ KẾT LUẬN
IV.1 Kết quả đạt được
Hiểu lý thuyết và vận dụng được Spark để làm ứng dụng
Có thêm kinh nghiệm làm việc nhóm
Cách vận hành Spark Streaming, xử lý thời gian thực của Spark
IV.2 Hạn chế
Chưa có được trang web hoàn chỉnh
Không tìm kiếm chung trong Twitter mà cần phải có key-words
Ứng dụng hơi đơn giản và dễ làm
IV.3 Hướng phát triển
Cải thiện front-end trở nên đẹp hơn
Thêm phần login, register
Trang 21
-V TÀI LIỆU THAM KHẢO
twitter-WAyK82r9lxX
https://viblo.asia/p/ung-dung-spark-streaming-vao-phan-tich-cam-xuc-mang-xa-hoi-https://vinasupport.com/huong-dan-cai-dat-python-3-va-pip-3-tren-ubuntu-linux/https://helpex.vn/article/bat-dau-voi-spark-streaming-5c6b0496ae03f628d053ab26https://t3h.edu.vn/tin-tuc/flask-la-gi-gioi-thieu-ve-flask-cua-python
https://niithanoi.edu.vn/flask-la-gi.html
https://github.com/HritwikSinghal/Spark-tweet