Beezo Share - Đồ Án Thực Tập Công Cụ Giám Sát Mạng Python
Slide 05 - Khai pha du lieu lon voi Spark - Nguyen Van Quyet.pdf
1. Giảng viên: TS. Nguyễn Văn Quyết
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 1/52
KHAI PHÁ DỮ LIỆU LỚN VỚI APACHE SPARK
2. Tổng quan về Học máy
Học máy cho xử lý dữ liệu lớn với Spark
Các thao tác trong xử lý dữ liệu lớn với Spark
Thực hành xử lý dữ liệu lớn với Spark
Hỏi & đáp
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 2/52
Nội dung
3. 1. Tổng quan về học máy
Học máy (Machine Learning) là một lĩnh vực của trí tuệ
nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ
thuật cho phép các hệ thống "học" tự động từ dữ liệu để
giải quyết những vấn đề cụ thể.
Ví dụ: phân loại thư điện tử xem có phải thư rác (spam) hay không
và tự động xếp thư vào thư mục tương ứng.
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 3/52
Học máy là gì?
4. 1. Tổng quan về học máy
• Supervised Learning
• Phân lớp/Hồi quy
Học có giám sát
• Unsupervised Learning
• Phân cụm
Học không giám sát
• Semi-supervised Learning
Học bán giám sát
• Reinforcement Learning
Học tăng cường
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 4/52
Phân loại học máy
5. 1. Tổng quan về học máy
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 5/52
Phân loại học máy
6. 1. Tổng quan về học máy
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 6/52
Phân loại học máy
7. 1. Tổng quan về học máy
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 7/52
Phân loại học máy
8. 1. Tổng quan về học máy
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 8/52
Các ứng dụng của học máy
Khai phá dữ liệu
Phát hiện bất thường trong chứng khoán, giao dịch ngân hàng
Phát hiện các quy luật: tìm quy luật về việc mua hàng hóa
Gom nhóm: nhóm khách hàngvào độ tuổi, kinh tế
Dự đoán: giá cổ phiếu, giá nhà
Trích xuất thông tin từ văn bản
Lọc spam: mail spam hay không spam,..
Khai phá thông tin: Trích xuất các từ khóa, tên, địa chỉ,…
Phân tích ngữ nghĩa: tiêu cực hay tích cực,…
Xử lý hình ảnh/âm thanh/video
Gắn thẻ hình ảnh: Facebook
Nhận diện chữ viết tay
Xe tự hành: phát hiện mép đường, vật cản, biển báo
9. 1. Tổng quan về học máy
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 9/52
Các ứng dụng của học máy
10. 1. Tổng quan về học máy
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 10/52
Một số thuật toán học máy
11. Tổng quan về Học máy
Học máy cho xử lý dữ liệu lớn với Spark
Một số thuật toán học máy trong Spark MLLib
Thực hành phân tích dữ liệu lớn với Spark MLLib
Hỏi & đáp
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 11/52
Nội dung
12. 2. Học máy cho xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 12/52
Giới thiệu về Apache Spark
Là một engine xử lý dữ liệu lớn dựa vào bộ nhớ phân tán
(distributed memory based).
Khởi điểm nghiên cứu từ Berkeley AMPLab vào năm 2009.
Là opensource, viết bằng Scala và chạy trên JVM.
Dựa trên mô hình lập trình Map-Reduce.
Khắc phục nhược điểm của Hadoop MapReduce.
13. Khoa Công nghệ Thông tin - UTEHY 09-10-2022 13/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Giới thiệu về Apache Spark
Nguyễn Văn Quyết
Các đặc tính khác của Spark
14. Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 14/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Giới thiệu về Apache Spark
Tính năng ưu việt của
Spark là tốc độ xử lý nhanh
So với Hadoop, Spark
Application chạy trên bộ nhớ
nhanh hơn tới 100 lần và
nhanh hơn 10 lần khi chạy
trên đĩa. Điều này có được
nhờ giảm số lượng các hoạt
động đọc / ghi vào ổ đĩa.
15. 2. Học máy cho xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 15/52
Giới thiệu về Apache Spark
Hỗ trợ nhiều loại ngôn ngữ lập trình:
Scala (native)
Python
Java
R
Hỗ trợ nhiều loại workload trong 1 engine:
Batch Processing (Spark Core, Spark SQL)
Machine Learning (MLlib)
Streaming (Spark Streaming)
Graph (GraphX)
Querying Structured Data (Spark SQL)
16. Là 1 trong các thành
phần trong bộ thư viện
Apache Spark
Hỗ trợ thao tác trên dữ
liệu sử dụng SQL
Cung cấp API hoặc có
thể query trực tiếp dữ
liệu thông qua SQL
Query
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 16/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark SQL (1/5)
17. 2. Học máy cho xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 17/52
Spark SQL (2/5)
Được xây dựng phía trên tầng Spark Core, thừa hưởng tất cả
các tính năng mà RDD có.
Làm việc với tập dữ liệu là DataSet hoặc DataFrame (tập dữ liệu
phân tán, có cấu trúc)
Hiệu năng cao, khả năng mở rộng và chịu lỗi tốt
Tương tích với các thành phần khác trong tổng thể Spark
Framework (như Streaming/ Mllib, GraphX)
Bao gồm 2 thành phần là DataSet API và Catalyst Optimizer.
18. Kiến trúc của Spark SQL
Dataframe APIs: Các APIs hỗ trợ
tương tác với Dataframe (tập dữ
liệu có cấu trúc, phân tán) như
select, đọc, ghi, lọc…
Catalyst Optimizer: Tối ưu hóa
các bước xử lý trước khi tạo task
tính toán
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 18/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark SQL (3/5)
19. 2. Học máy cho xử lý dữ liệu lớn với Spark
Kiến trúc của Spark SQL (tiếp) - DataFrame
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 19/52
Spark SQL (4/5)
20. 2. Học máy cho xử lý dữ liệu lớn với Spark
Kiến trúc của Spark SQL (tiếp) – Catalyst Optimizer
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 20/52
Spark SQL (5/5)
21. Spark Streaming được
thêm vào Apache Spark
vào năm 2013.
Là một phần mở rộng
của Spark API cung cấp
khả năng xử lý luồng có
thể mở rộng, thông
lượng cao và khả năng
chịu lỗi của các luồng dữ
liệu trực tiếp.
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 21/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark Streaming (1/3)
22. Quá trình thu thập dữ liệu
có thể được thực hiện từ
nhiều nguồn như Kafka,
Apache Flume, Amazon
Kinesis hoặc TCP socket.
Quá trình xử lý có thể
được thực hiện bằng cách
sử dụng các thuật toán
phức tạp với các hàm map,
reduce, nối và cửa sổ.
Dữ liệu đã xử lý có thể
được đẩy ra hệ thống tệp,
cơ sở dữ liệu và hiển thị
trực tiếp trên dashboard.
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 22/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark Streaming (2/3)
23. Coi dữ liệu stream như là
1 bảng không giới hạn
(Unbounded Table)
Dữ liệu bên trong vẫn là
DataFrame.
Có thể sử dụng Spark
SQL APIs với dữ liệu
Stream tương tự như dữ
liệu tĩnh.
Phiên bản hiện tại đã hỗ
trợ cả mô hình event-at-a-
time và micro-batching
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 23/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark Streaming (3/3)
24. MLlib là thư viện học
máy (ML – machine
learning) của Spark.
Mục tiêu của nó là làm
cho việc học máy có thể
mở rộng và dễ dàng.
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 24/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark MLlib (1/3)
25. Một số hỗ trợ chính của
MLLib
Thuật toán học máy: phân
lớp, hồi quy, phân cụm, và
lọc cộng tác
Làm việc với đặc trưng
của dữ liệu: trích chọn đặc
trưng, biến đổi, giảm
chiều dữ liệu.
Tiện ích: đại số tuyến tính,
thống kê, khai phá dữ
liệu,...
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 25/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark MLlib (2/3)
26. Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 26/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark MLlib (3/3)
27. GraphX là một thành phần
mới trong Spark dung để
xử lý song song dữ liệu đồ
thị.
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 27/52
2. Học máy cho xử lý dữ liệu lớn với Spark
Spark GraphX (1/2)
28. 2. Học máy cho xử lý dữ liệu lớn với Spark
Hỗ trợ xử lý tốt cho đồ thì thuộc tính (Property Graph)
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 28/52
Spark GraphX (2/2)
29. Tổng quan về Học máy
Học máy cho xử lý dữ liệu lớn với Spark
Các thao tác trong xử lý dữ liệu lớn với Spark
Thực hành xử lý dữ liệu lớn với Spark
Hỏi & đáp
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 29/52
Nội dung
30. 3. Các thao tác trong xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 30/52
RDD – Cấu trúc dữ liệu cơ bản của Spark
Resilient Distributed Datasets (RDD) là một cấu trúc dữ liệu cơ
bản của Spark. Nó là một tập hợp bất biến phân tán của một đối
tượng.
Mỗi dataset trong RDD được chia ra thành nhiều phân vùng
logical. Có thể được tính toán trên các node khác nhau của một
cụm máy chủ (cluster).
31. 3. Các thao tác trong xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 31/52
RDD – Cấu trúc dữ liệu cơ bản của Spark
RDDs có thể chứa bất kỳ kiểu dữ liệu nào của Python, Java, hoặc đối
tượng Scala, bao gồm các kiểu dữ liệu do người dùng định nghĩa.
RDD chỉ cho phép đọc, phân mục tập hợp của các bản ghi
RDDs có thể được tạo ra qua điều khiển xác định trên dữ liệu trong bộ
nhớ hoặc RDDs
RDD là một tập hợp có khả năng chịu lỗi, mỗi thành phần có thể được
tính toán song song.
32. 3. Các thao tác trong xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 32/52
Thao tác với RDD trong Spark
RDD cung cấp các transformation và action hoạt động
giống như DataFrame.
Transformation xử lý các thao tác lazy
Action xử lý thao tác cần xử lý tức thời.
33. 3. Các thao tác trong xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 33/52
Thao tác với RDD trong Spark
Một số hàm Transformation
distinct: loại bỏ trùng lắp trong RDD
filter: tương đương với việc sử dụng where trong SQL – tìm các
record trong RDD xem những phần tử nào thỏa điều kiện.
map: thực hiện một công việc nào đó trên toàn bộ RDD
flatMap: cung cấp một hàm đơn giản hơn hàm map. Yêu cầu output
của map phải là một structure có thể lặp và mở rộng được.
sortBy: mô tả một hàm để trích xuất dữ liệu từ các object của RDD
và thực hiện sort được từ đó.
randomSplit: nhận một mảng trọng số và tạo một random seed, tách
các RDD thành một mảng các RDD có số lượng chia theo trọng số
34. 3. Các thao tác trong xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 34/52
Thao tác với RDD trong Spark
Một số hàm Transformation
35. 3. Các thao tác trong xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 35/52
Thao tác với RDD trong Spark
Một số hàm Transformation
36. 3. Các thao tác trong xử lý dữ liệu lớn với Spark
Một số hàm Action
reduce: thực hiện hàm reduce trên RDD để thu về 1 giá trị
duy nhất
count: đếm số dòng trong RDD
countByValue: đếm số giá trị của RDD
first: lấy giá trị đầu tiên của dataset
max và min: lần lượt lấy giá trị lớn nhất và nhỏ nhất của
dataset
…
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 36/52
Thao tác với RDD trong Spark
37. Tổng quan về Học máy
Học máy cho xử lý dữ liệu lớn với Spark
Các thao tác trong xử lý dữ liệu lớn với Spark
Thực hành xử lý dữ liệu lớn với Spark
Hỏi & đáp
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 37/52
Nội dung
38. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 1: Download Scala
$ cd /usr/local
$ sudo wget https://www.scala-lang.org/files/archive/scala-2.12.15.tgz
Bước 2: Cài đặt Scala
$ sudo tar xvf scala-2.12.15.tgz # giải nén
$ sudo mv scala-2.12.15 scala # đổi tên thư mục thành scala
$ sudo chown -R hduser:hadoop /usr/local/scala # cấp quyền truy cập
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 38/52
Cài đặt Scala
39. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 3: Thiết lập biến môi trường trong tệp .bashrc
$ sudo gedit /home/hduser/.bashrc # mở tệp để sửa
Bổ sung các biến môi trường sau vào tệp
export SCALA_HOME="/usr/local/scala"
export PATH=$PATH:$SCALA_HOME/bin
Áp dụng
$ source /home/hduser/.bashrc
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 39/52
Cài đặt Scala
40. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 1: Download Spark
$ cd /usr/local
$ sudo wget https://archive.apache.org/dist/spark/spark-3.2.0/spark-3.2.0-bin-
hadoop3.2.tgz
Bước 2: Cài đặt Spark
$ sudo tar xvf spark-3.2.0-bin-hadoop3.2.tgz # giải nén
$ sudo mv spark-3.2.0-bin-hadoop3.2 spark # đổi tên thư mục thành spark
$ sudo chown -R hduser:hadoop /usr/local/spark # cấp quyền truy cập
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 40/52
Cài đặt Apache Spark
41. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 3: Thiết lập biến môi trường trong tệp .bashrc
$ sudo gedit /home/hduser/.bashrc # mở tệp để sửa
Bổ sung các biến môi trường sau vào tệp
export SPARK_HOME="/usr/local/spark"
export PATH=$PATH:$SPARK_HOME/bin
Áp dụng
$ source /home/hduser/.bashrc
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 41/52
Cài đặt Apache Spark
42. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 4: Cấu hình biến môi trường trong tệp spark-env.sh
$ cd /usr/local/spark
hduser@master:/usr/local/spark$ cp conf/spark-env.sh.template conf/spark-
env.sh
hduser@master:/usr/local/spark$ sudo gedit conf/spark-env.sh
Mở tệp spark-env.sh
$ sudo gedit spark-env.sh
Thêm cấu hình sau vào tệp
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export SCALA_HOME=/usr/local/scala
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 42/52
Cài đặt Apache Spark
43. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 5: Cấu hình các tham số trong tệp spark-defaults.conf
hduser@master:/usr/local/spark$ cp conf/spark-defaults.conf.template
conf/spark-defaults.conf
hduser@master:/usr/local/spark$ sudo gedit conf/spark-defaults.conf
Mở tệp spark-defaults.conf
$ sudo gedit spark-defaults.conf
Thêm cấu hình sau vào tệp
spark.master spark://master:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/spark-logs
spark.history.fs.logDirectory hdfs://master:9000/spark-events
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 1g
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 43/52
Cài đặt Apache Spark
44. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 6: Tạo tệp Logs
hduser@master:/usr/local/spark$ cp conf/log4j.properties.template
conf/log4j.properties
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 44/52
Cài đặt Apache Spark
45. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 7: Khai báo các máy Slave
hduser@master:/usr/local/spark$ sudo gedit conf/slaves
Khai báo vào tệp
slave01
slave02
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 45/52
Cài đặt Apache Spark
46. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 8: Sao chép Spark, Scala, và tệp .bashrc từ master
đến các máy slave
Truy cập đến các máy slave và tạo thư mục spark, scala
$ ssh slave01
$ sudo mkdir /usr/local/spark
$ sudo chown -R hduser:hadoop /usr/local/spark
$ sudo mkdir /usr/local/scala
$ sudo chown -R hduser:hadoop /usr/local/scala
$ exit
// Từ máy master thực hiện copy
hduser@master:~$ scp -r /usr/local/spark/* hduser@slave01:/usr/local/spark/
hduser@master:~$ scp -r /usr/local/scala/* hduser@slave01:/usr/local/scala/
hduser@master:~$ scp -r /home/hduser/.bashrc hduser@slave01:/home/hduser/
// Làm tương tự cho máy slave02
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 46/52
Cài đặt Apache Spark
47. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 9: Tạo 2 thư mục trên hdfs để lưu trữ logs cho
spark
spark-logs
spark-events
Bước 10: Chạy spark
Khởi chạy Hadoop trước khi chạy Spark
Trên máy master gõ:
$ cd /usr/local/spark
$ sbin/start-all.sh
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 47/52
Cài đặt Apache Spark
48. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 11: Kiểm tra các dịch vụ chạy ngầm của Spark
Trên máy master
Trên các máy slave
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 48/52
Cài đặt Apache Spark
49. 4. Thực hành xử lý dữ liệu lớn với Spark
Bước 12: Kiểm tra giao diện quản lý Spark Jobs
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 49/52
Cài đặt Apache Spark
50. 4. Thực hành xử lý dữ liệu lớn với Spark
Trên máy master:
hduser@master:/usr/local/spark$ ./bin/spark-submit --class
org.apache.spark.examples.SparkPi --master spark://master:7077
examples/jars/spark-examples_2.12-3.2.0.jar 2
Kiểm tra Spark Job trên giao diện
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 50/52
Chạy thử nghiệm chương trình Spark
51. 4. Thực hành xử lý dữ liệu lớn với Spark
Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 51/52
Chạy thử nghiệm chương trình Spark
52. Nguyễn Văn Quyết Khoa Công nghệ Thông tin - UTEHY 09-10-2022 52/52
Trân trọng cảm ơn!
Q&A